From 34f4eba61571ee143af0952dfd9be3ef3956d0bc Mon Sep 17 00:00:00 2001 From: wentch <22250530@qq.com> Date: Wed, 16 Dec 2015 10:18:38 +0800 Subject: [PATCH] --- src/org/redkale/net/sncp/SncpClient.java | 8 ++++---- src/org/redkale/net/sncp/SncpDyn.java | 2 ++ src/org/redkale/net/sncp/SncpDynServlet.java | 4 ++-- src/org/redkale/net/sncp/SncpServer.java | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/org/redkale/net/sncp/SncpClient.java b/src/org/redkale/net/sncp/SncpClient.java index 332c90bc2..3b53e32d6 100644 --- a/src/org/redkale/net/sncp/SncpClient.java +++ b/src/org/redkale/net/sncp/SncpClient.java @@ -117,7 +117,7 @@ public final class SncpClient { protected final Consumer executor; - public SncpClient(final String serviceName, final Consumer executor, final long serviceid0, boolean remote, final Class serviceClass, + public SncpClient(final String serviceName, final Consumer executor, final long serviceid, boolean remote, final Class serviceClass, boolean onlySncpDyn, final InetSocketAddress clientAddress, final HashSet groups) { if (serviceName.length() > 10) throw new RuntimeException(serviceClass + " @Resource name(" + serviceName + ") too long , must less 11"); this.remote = remote; @@ -128,10 +128,10 @@ public final class SncpClient { //if (subLocalClass != null && !serviceClass.isAssignableFrom(subLocalClass)) throw new RuntimeException(subLocalClass + " is not " + serviceClass + " sub class "); this.name = serviceName; this.nameid = Sncp.hash(serviceName); - this.serviceid = serviceid0 > 0 ? serviceid0 : Sncp.hash(serviceClass); + this.serviceid = serviceid; final List methodens = new ArrayList<>(); //------------------------------------------------------------------------------ - for (java.lang.reflect.Method method : parseMethod(serviceClass, onlySncpDyn)) { + for (java.lang.reflect.Method method : parseMethod(serviceClass, onlySncpDyn)) { //远程模式下onlySncpDyn = false SncpAction en = new SncpAction(method, Sncp.hash(method)); methodens.add(en); } @@ -161,7 +161,7 @@ public final class SncpClient { + ", groups = " + groups + ", actions.size = " + actions.length + ")"; } - public static List parseMethod(final Class serviceClass, boolean onlySncpDyn) { + public static List parseMethod(final Class serviceClass, boolean onlySncpDyn) { //远程模式下onlySncpDyn = false final List list = new ArrayList<>(); final List multis = new ArrayList<>(); final Map actionids = new HashMap<>(); diff --git a/src/org/redkale/net/sncp/SncpDyn.java b/src/org/redkale/net/sncp/SncpDyn.java index 3f78ca06e..89d2a8c7a 100644 --- a/src/org/redkale/net/sncp/SncpDyn.java +++ b/src/org/redkale/net/sncp/SncpDyn.java @@ -11,6 +11,8 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; /** * 修饰由SNCP协议动态生成的class、和method + * 本地模式:动态生成的_DynLocalXXXService类、其带有@MultiRun方法均会打上@SncpDyn 的注解 + * 远程模式:动态生成的_DynRemoteXXXService类会打上@SncpDyn 的注解 * * @see http://www.redkale.org * @author zhangjx diff --git a/src/org/redkale/net/sncp/SncpDynServlet.java b/src/org/redkale/net/sncp/SncpDynServlet.java index fdc6cc1c9..467f82807 100644 --- a/src/org/redkale/net/sncp/SncpDynServlet.java +++ b/src/org/redkale/net/sncp/SncpDynServlet.java @@ -44,10 +44,10 @@ public final class SncpDynServlet extends SncpServlet { private Supplier bufferSupplier; - public SncpDynServlet(final BsonConvert convert, final String serviceName, final Service service, final AnyValue conf) { + public SncpDynServlet(final BsonConvert convert, final String serviceName, final Class type, final Service service, final AnyValue conf) { this.conf = conf; this.serviceName = serviceName; - this.type = (Class) service.getClass().getSuperclass(); + this.type = type; this.nameid = Sncp.hash(serviceName); this.serviceid = Sncp.hash(type); Set actionids = new HashSet<>(); diff --git a/src/org/redkale/net/sncp/SncpServer.java b/src/org/redkale/net/sncp/SncpServer.java index 4581673ca..b7022690b 100644 --- a/src/org/redkale/net/sncp/SncpServer.java +++ b/src/org/redkale/net/sncp/SncpServer.java @@ -35,7 +35,7 @@ public final class SncpServer extends Server { } public void addService(ServiceWrapper entry) { - ((SncpPrepareServlet) this.prepare).addSncpServlet(new SncpDynServlet(BsonFactory.root().getConvert(), entry.getName(), entry.getService(), entry.getConf())); + ((SncpPrepareServlet) this.prepare).addSncpServlet(new SncpDynServlet(BsonFactory.root().getConvert(), entry.getName(), entry.getType(), entry.getService(), entry.getConf())); } public List getSncpServlets() {