From 43872ec80443cf0f9fb60c67343ce790b53e630c Mon Sep 17 00:00:00 2001 From: godotg Date: Sun, 10 Sep 2023 14:46:31 +0800 Subject: [PATCH] ref[net]: refactor gateway attachment --- .../main/java/com/zfoo/boot/graalvm/GraalvmNetHints.java | 1 - .../main/java/com/zfoo/net/handler/GatewayRouteHandler.java | 6 +++++- .../{TcpClientTest.java => JProtobufTcpClientTest.java} | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) rename net/src/test/java/com/zfoo/net/core/jprotobuf/client/{TcpClientTest.java => JProtobufTcpClientTest.java} (96%) diff --git a/boot/src/main/java/com/zfoo/boot/graalvm/GraalvmNetHints.java b/boot/src/main/java/com/zfoo/boot/graalvm/GraalvmNetHints.java index 540e7591..91d1ec52 100644 --- a/boot/src/main/java/com/zfoo/boot/graalvm/GraalvmNetHints.java +++ b/boot/src/main/java/com/zfoo/boot/graalvm/GraalvmNetHints.java @@ -52,7 +52,6 @@ public class GraalvmNetHints implements RuntimeHintsRegistrar { // atachment classes.add(SignalAttachment.class); - classes.add(SignalOnlyAttachment.class); classes.add(GatewayAttachment.class); classes.add(UdpAttachment.class); classes.add(HttpAttachment.class); diff --git a/net/src/main/java/com/zfoo/net/handler/GatewayRouteHandler.java b/net/src/main/java/com/zfoo/net/handler/GatewayRouteHandler.java index bdabcd94..47a38beb 100644 --- a/net/src/main/java/com/zfoo/net/handler/GatewayRouteHandler.java +++ b/net/src/main/java/com/zfoo/net/handler/GatewayRouteHandler.java @@ -82,7 +82,11 @@ public class GatewayRouteHandler extends ServerRouteHandler { // 把客户端信息包装为一个GatewayAttachment,因此通过这个网关附加包可以得到玩家的uid、sid之类的信息 var gatewayAttachment = new GatewayAttachment(session); - gatewayAttachment.setSignalAttachment((SignalAttachment) decodedPacketInfo.getAttachment()); + var signalAttachment = (SignalAttachment) decodedPacketInfo.getAttachment(); + if (signalAttachment != null) { + signalAttachment.setClient(SignalAttachment.SIGNAL_SERVER); + gatewayAttachment.setSignalAttachment(signalAttachment); + } // 网关优先使用IGatewayLoadBalancer作为一致性hash的计算参数,然后才会使用客户端的session做参数 // 例子:以聊天服务来说,玩家知道自己在哪个群组groupId中,那往这个群发送消息时,会在Packet中带上这个groupId做为一致性hash就可以了。 diff --git a/net/src/test/java/com/zfoo/net/core/jprotobuf/client/TcpClientTest.java b/net/src/test/java/com/zfoo/net/core/jprotobuf/client/JProtobufTcpClientTest.java similarity index 96% rename from net/src/test/java/com/zfoo/net/core/jprotobuf/client/TcpClientTest.java rename to net/src/test/java/com/zfoo/net/core/jprotobuf/client/JProtobufTcpClientTest.java index 149ba49b..9629fd74 100644 --- a/net/src/test/java/com/zfoo/net/core/jprotobuf/client/TcpClientTest.java +++ b/net/src/test/java/com/zfoo/net/core/jprotobuf/client/JProtobufTcpClientTest.java @@ -29,9 +29,9 @@ import org.springframework.context.support.ClassPathXmlApplicationContext; * @version 3.0 */ @Ignore -public class TcpClientTest { +public class JProtobufTcpClientTest { - private static final Logger logger = LoggerFactory.getLogger(TcpClientTest.class); + private static final Logger logger = LoggerFactory.getLogger(JProtobufTcpClientTest.class); @Test public void startClient() throws Exception {