From 319b9e04dd9d5ef19b4704164d84c3624e8b9773 Mon Sep 17 00:00:00 2001 From: redkale Date: Mon, 3 Jul 2023 09:06:01 +0800 Subject: [PATCH] =?UTF-8?q?SncpHeader=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/redkale/net/sncp/Sncp.java | 2 +- src/main/java/org/redkale/net/sncp/SncpHeader.java | 13 +++++++++++-- .../java/org/redkale/net/sncp/SncpRemoteInfo.java | 6 +++--- .../org/redkale/test/sncp/SncpClientCodecTest.java | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/redkale/net/sncp/Sncp.java b/src/main/java/org/redkale/net/sncp/Sncp.java index c285b2d21..b69182587 100644 --- a/src/main/java/org/redkale/net/sncp/Sncp.java +++ b/src/main/java/org/redkale/net/sncp/Sncp.java @@ -36,7 +36,7 @@ import org.redkale.util.*; */ public abstract class Sncp { - private static final byte[] PING_BYTES = new SncpHeader(null, Uint128.ZERO, Uint128.ZERO) + private static final byte[] PING_BYTES = new SncpHeader(null, Uint128.ZERO, "", Uint128.ZERO, "") .writeTo(new ByteArray(SncpHeader.HEADER_SIZE).putPlaceholder(SncpHeader.HEADER_SIZE), null, 0, 0, 0) .getBytes(); diff --git a/src/main/java/org/redkale/net/sncp/SncpHeader.java b/src/main/java/org/redkale/net/sncp/SncpHeader.java index 20935ac45..52d809959 100644 --- a/src/main/java/org/redkale/net/sncp/SncpHeader.java +++ b/src/main/java/org/redkale/net/sncp/SncpHeader.java @@ -22,11 +22,15 @@ public class SncpHeader { private Uint128 serviceid; + private String serviceName; + //【预留字段】service接口版本 private int serviceVersion; private Uint128 actionid; + private String methodName; + //SncpRequest的值是clientSncpAddress,SncpResponse的值是serverSncpAddress private byte[] addrBytes; @@ -50,11 +54,13 @@ public class SncpHeader { public SncpHeader() { } - public SncpHeader(InetSocketAddress clientSncpAddress, Uint128 serviceid, Uint128 actionid) { + public SncpHeader(InetSocketAddress clientSncpAddress, Uint128 serviceid, String serviceName, Uint128 actionid, String methodName) { this.addrBytes = clientSncpAddress == null ? new byte[4] : clientSncpAddress.getAddress().getAddress(); this.addrPort = clientSncpAddress == null ? 0 : clientSncpAddress.getPort(); this.serviceid = serviceid; + this.serviceName = serviceName; this.actionid = actionid; + this.methodName = methodName; if (addrBytes.length != 4) { throw new SncpException("address bytes length must be 4, but " + addrBytes.length); } @@ -149,9 +155,12 @@ public class SncpHeader { @Override public String toString() { return getClass().getSimpleName() - + (this.seqid == null ? ("{serviceid=" + this.serviceid) : ("{seqid=" + this.seqid + ",serviceid=" + this.serviceid)) + + (this.seqid == null + ? ("{serviceid=" + this.serviceid + ",serviceName=" + this.serviceName) + : ("{seqid=" + this.seqid + ",serviceid=" + this.serviceid + ",serviceName=" + this.serviceName)) + ",serviceVersion=" + this.serviceVersion + ",actionid=" + this.actionid + + ",methodName=" + this.methodName + ",address=" + getAddress() + ",timestamp=" + this.timestamp + ",retcode=" + this.retcode diff --git a/src/main/java/org/redkale/net/sncp/SncpRemoteInfo.java b/src/main/java/org/redkale/net/sncp/SncpRemoteInfo.java index 6f4684242..466e5171b 100644 --- a/src/main/java/org/redkale/net/sncp/SncpRemoteInfo.java +++ b/src/main/java/org/redkale/net/sncp/SncpRemoteInfo.java @@ -88,7 +88,7 @@ public class SncpRemoteInfo { this.topic = messageAgent == null ? null : messageAgent.generateSncpReqTopic(resourceName, resourceType); for (Map.Entry en : loadMethodActions(Sncp.getServiceType(serviceImplClass)).entrySet()) { - this.actions.put(en.getKey().toString(), new SncpRemoteAction(serviceImplClass, en.getValue(), serviceid, en.getKey())); + this.actions.put(en.getKey().toString(), new SncpRemoteAction(serviceImplClass, resourceType, en.getValue(), serviceid, en.getKey())); } } @@ -331,7 +331,7 @@ public class SncpRemoteInfo { protected final SncpHeader header; @SuppressWarnings("unchecked") - SncpRemoteAction(final Class serviceImplClass, Method method, Uint128 serviceid, Uint128 actionid) { + SncpRemoteAction(final Class serviceImplClass, Class resourceType, Method method, Uint128 serviceid, Uint128 actionid) { this.actionid = actionid == null ? Sncp.actionid(method) : actionid; Type rt = TypeToken.getGenericType(method.getGenericReturnType(), serviceImplClass); this.returnObjectType = rt == void.class || rt == Void.class ? null : rt; @@ -424,7 +424,7 @@ public class SncpRemoteInfo { this.paramHandlerClass = handlerFuncClass; this.paramHandlerResultType = handlerResultType; this.paramHandlerAttachIndex = handlerAttachIndex; - this.header = new SncpHeader(null, serviceid, actionid); + this.header = new SncpHeader(null, serviceid, resourceType.getName(), actionid, method.getName()); if (this.paramHandlerIndex >= 0 && method.getReturnType() != void.class) { throw new SncpException(method + " have CompletionHandler type parameter but return type is not void"); } diff --git a/src/test/java/org/redkale/test/sncp/SncpClientCodecTest.java b/src/test/java/org/redkale/test/sncp/SncpClientCodecTest.java index cba07da98..a5dea575e 100644 --- a/src/test/java/org/redkale/test/sncp/SncpClientCodecTest.java +++ b/src/test/java/org/redkale/test/sncp/SncpClientCodecTest.java @@ -46,7 +46,7 @@ public class SncpClientCodecTest { //---------------------------------------------- ByteBuffer realBuf; { - SncpHeader header = new SncpHeader(sncpAddress, Uint128.ZERO, Uint128.ZERO); + SncpHeader header = new SncpHeader(sncpAddress, Uint128.ZERO, "", Uint128.ZERO, ""); SncpClientRequest request = new SncpClientRequest(); ByteArray writeArray = new ByteArray(); request.prepare(header, 1, "", new byte[20]);