From 938e357745dcabcd6da246cacc09194e2ca9e2b7 Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Mon, 3 Dec 2018 09:04:27 +0800 Subject: [PATCH] --- src/org/redkale/net/sncp/SncpDynServlet.java | 18 +++++++++++------- src/org/redkale/net/sncp/SncpServer.java | 7 ++++++- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/org/redkale/net/sncp/SncpDynServlet.java b/src/org/redkale/net/sncp/SncpDynServlet.java index aded1a62b..463614606 100644 --- a/src/org/redkale/net/sncp/SncpDynServlet.java +++ b/src/org/redkale/net/sncp/SncpDynServlet.java @@ -14,6 +14,7 @@ import java.nio.*; import java.nio.channels.CompletionHandler; import java.util.*; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.*; import java.util.logging.*; import javax.annotation.*; @@ -36,9 +37,9 @@ import org.redkale.service.RpcCall; */ public final class SncpDynServlet extends SncpServlet { - private static volatile int maxClassNameLength = 0; + private final AtomicInteger maxClassNameLength; - private static volatile int maxNameLength = 0; + private final AtomicInteger maxNameLength; private static final Logger logger = Logger.getLogger(SncpDynServlet.class.getSimpleName()); @@ -48,8 +49,11 @@ public final class SncpDynServlet extends SncpServlet { private Supplier bufferSupplier; - public SncpDynServlet(final BsonConvert convert, final String serviceName, final Class serviceOrSourceType, final Service service) { + public SncpDynServlet(final BsonConvert convert, final String serviceName, final Class serviceOrSourceType, final Service service, + final AtomicInteger maxClassNameLength, AtomicInteger maxNameLength) { super(serviceName, serviceOrSourceType, service); + this.maxClassNameLength = maxClassNameLength; + this.maxNameLength = maxNameLength; this.serviceid = Sncp.hash(type.getName() + ':' + serviceName); Set actionids = new HashSet<>(); for (java.lang.reflect.Method method : service.getClass().getMethods()) { @@ -70,20 +74,20 @@ public final class SncpDynServlet extends SncpServlet { actions.put(actionid, action); actionids.add(actionid); } - maxNameLength = Math.max(maxNameLength, serviceName.length() + 1); - maxClassNameLength = Math.max(maxClassNameLength, type.getName().length()); + maxNameLength.set(Math.max(maxNameLength.get(), serviceName.length() + 1)); + maxClassNameLength.set(Math.max(maxClassNameLength.get(), type.getName().length())); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(this.getClass().getSimpleName()).append(" (type=").append(type.getName()); - int len = maxClassNameLength - type.getName().length(); + int len = this.maxClassNameLength.get() - type.getName().length(); for (int i = 0; i < len; i++) { sb.append(' '); } sb.append(", serviceid=").append(serviceid).append(", name='").append(serviceName).append("'"); - for (int i = 0; i < maxNameLength - serviceName.length(); i++) { + for (int i = 0; i < this.maxNameLength.get() - serviceName.length(); i++) { sb.append(' '); } sb.append(", actions.size=").append(actions.size() > 9 ? "" : " ").append(actions.size()).append(")"); diff --git a/src/org/redkale/net/sncp/SncpServer.java b/src/org/redkale/net/sncp/SncpServer.java index d1483d80e..822757330 100644 --- a/src/org/redkale/net/sncp/SncpServer.java +++ b/src/org/redkale/net/sncp/SncpServer.java @@ -25,6 +25,10 @@ import org.redkale.util.*; @SuppressWarnings("unchecked") public class SncpServer extends Server { + private final AtomicInteger maxClassNameLength = new AtomicInteger(); + + private final AtomicInteger maxNameLength = new AtomicInteger(); + public SncpServer() { this(System.currentTimeMillis(), ResourceFactory.root()); } @@ -87,7 +91,8 @@ public class SncpServer extends Server