sncp优化

This commit is contained in:
redkale
2023-02-07 01:18:06 +08:00
parent 797d04fea7
commit 89f9baee46
4 changed files with 12 additions and 7 deletions

View File

@@ -61,7 +61,7 @@ public abstract class Sncp {
boolean remote();
Class type();
Class type(); //resourceServiceType
int index() default 0; //排列顺序, 主要用于Method
}
@@ -227,9 +227,14 @@ public abstract class Sncp {
return type != null ? type.value() : service.getClass();
}
public static Class getServiceType(Service service) {
return isSncpDyn(service) && service.getClass().getSimpleName().startsWith("_Dyn") ? service.getClass().getSuperclass() : service.getClass();
public static <T extends Service> Class getResourceType(Class<T> serviceImplClass) {
ResourceType type = serviceImplClass.getAnnotation(ResourceType.class);
return type != null ? type.value() : serviceImplClass;
}
//
// public static Class getServiceType(Service service) {
// return isSncpDyn(service) && service.getClass().getSimpleName().startsWith("_Dyn") ? service.getClass().getSuperclass() : service.getClass();
// }
public static AnyValue getResourceConf(Service service) {
if (service == null || !isSncpDyn(service)) {
@@ -473,7 +478,7 @@ public abstract class Sncp {
{
av0 = cw.visitAnnotation(sncpDynDesc, true);
av0.visit("remote", Boolean.FALSE);
av0.visit("type", Type.getType(Type.getDescriptor(serviceImplClass)));
av0.visit("type", Type.getType(Type.getDescriptor(getResourceType(serviceImplClass))));
av0.visitEnd();
}
{ //给新类加上 原有的Annotation

View File

@@ -49,7 +49,7 @@ public final class SncpDynServlet extends SncpServlet {
this.maxNameLength = maxNameLength;
this.serviceid = Sncp.serviceid(serviceResourceName, serviceResourceType);
RedkaleClassLoader.putReflectionPublicMethods(service.getClass().getName());
for (Map.Entry<Uint128, Method> en : Sncp.loadMethodActions(service.getClass()).entrySet()) {
for (Map.Entry<Uint128, Method> en : Sncp.loadMethodActions(serviceResourceType).entrySet()) {
SncpServletAction action;
try {
action = SncpServletAction.create(service, serviceid, en.getKey(), en.getValue());

View File

@@ -85,7 +85,7 @@ public final class SncpOldClient {
this.serviceid = Sncp.serviceid(serviceResourceName, serviceResourceType);
final List<SncpServiceAction> methodens = new ArrayList<>();
//------------------------------------------------------------------------------
for (Map.Entry<Uint128, Method> en : Sncp.loadMethodActions(serviceClass).entrySet()) {
for (Map.Entry<Uint128, Method> en : Sncp.loadMethodActions(serviceResourceType).entrySet()) {
methodens.add(new SncpServiceAction(serviceClass, en.getValue(), serviceid, en.getKey()));
}
this.actions = methodens.toArray(new SncpServiceAction[methodens.size()]);

View File

@@ -28,7 +28,7 @@ public abstract class AbstractService implements Service {
* @return Class
*/
protected Class serviceType() {
return Sncp.getServiceType(this);
return Sncp.isSncpDyn(this) && getClass().getSimpleName().startsWith("_Dyn") ? getClass().getSuperclass() : getClass();
}
/**