From f0ce9a2636eb289b46c5e00248cbafb9f63d1ac3 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Tue, 1 Aug 2023 16:02:37 +0800 Subject: [PATCH 01/32] =?UTF-8?q?=E7=9B=AE=E5=89=8D=E6=90=AD=E5=BB=BA?= =?UTF-8?q?=E8=BF=9B=E5=BA=A6=20>>=20=E8=83=BD=E5=A4=9F=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=B6=88=E6=81=AF=E4=BC=A0=E8=BE=93=20?= =?UTF-8?q?=E4=B8=8B=E4=B8=80=E6=AD=A5=20>>=20=E5=AE=9E=E7=8E=B0=E7=BD=91?= =?UTF-8?q?=E5=85=B3=E6=9C=8D=E3=80=81=E4=B8=AD=E5=BF=83=E6=9C=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mini/common/handler/BaseHandler.java | 17 - .../com/mini/common/handler/CGHandler.java | 19 - .../common/handler/CGHeartMsgHandler.java | 24 - .../common/handler/GCHeartMsgHandler.java | 22 - .../com/mini/common/message/BaseMessage.java | 160 - .../com/mini/common/message/CGMessage.java | 35 - .../com/mini/common/message/GCHeartMsg.java | 14 - .../java/com/mini/common/message/MsgData.java | 9 - .../common/misc/GameChannelInitializer.java | 33 - .../java/com/mini/common/proto/ProtoMsg.java | 3891 ----------------- .../java/com/mini/common/utils/BeanUtils.java | 159 - .../main/java/com/mini/common/utils/Wrap.java | 21 - mini-common/src/main/proto/Entity.proto | 27 - mini-game/pom.xml | 76 - .../src/test/java/com/mini/game/GameTest.java | 76 - .../login/server/LoginChannelInitializer.java | 13 - {mini-client => paradogs-client}/pom.xml | 14 +- .../paradogs}/client/ClientApplication.java | 2 +- .../client/client/ApplicationRunner.java | 2 +- .../client/ClientChannelInitializer.java | 18 +- .../client/ClientHeartDuplexHandler.java | 4 +- .../paradogs}/client/client/GameClient.java | 3 +- .../client/handler/GCAttackMsgHandler.java | 6 +- .../client/handler/GCBuyGoodsMsgHandler.java | 6 +- .../client/handler/GCLoginMsgHandler.java | 9 +- .../GCReceiveWarOrderPrizeMsgHandler.java | 8 +- .../GCRechargeWarOrderVipMsgHandler.java | 6 +- .../src/main/resources/application.yml | 0 .../paradogs-common-client-starter/pom.xml | 26 + .../com/paradogs/common/client/Client.java | 70 + .../common/client/ClientLauncher.java | 30 + .../common/client/ClientProperties.java | 27 + .../client/events/ClientStartEvent.java | 14 + ...ot.autoconfigure.AutoConfiguration.imports | 5 + paradogs-common/paradogs-common-core/pom.xml | 53 + .../common/core/annoations/PdgController.java | 20 + .../common/core/annoations/PdgMsg.java | 22 + .../common/core/annoations/PdgMsgMapping.java | 26 + .../common/core/events/BaseEvent.java | 36 + .../common/core/events/SyncMsgEvent.java | 30 + .../events/listener/PdgEventListener.java | 48 + .../paradogs/common/core/message/BaseMsg.java | 64 + .../paradogs/common/core/message/CGMsg.java | 10 +- .../common/core/message/CGTestMsg.java | 11 +- .../paradogs/common/core/message/DBTask.java | 41 + .../paradogs/common/core/message/GCMsg.java | 11 +- .../core}/message/IMsgSerializable.java | 2 +- .../common/core/message/MainMsgHandler.java | 20 + .../common/core}/message/MsgHeader.java | 62 +- .../common/core/message/MsgMapping.java | 23 + .../common/core/netty/codec}/Codec.java | 32 +- .../common/core/netty/handler/MsgHandler.java | 30 +- .../core/netty/handler/MsgHeaderWrapper.java | 30 + .../core/netty/misc/ChannelInitializer.java | 90 + .../netty/protocol/ProtocolProperties.java | 28 + .../netty/queue/DBTaskConsumerThread.java | 35 + .../netty/queue/MainMsgConsumerThread.java | 67 + .../core/netty/queue/QueueConsumerThread.java | 95 + .../common/core/netty/queue/QueueManager.java | 105 + .../core/netty/queue/QueueProperties.java | 40 + .../paradogs/common/core/utils/BeanUtils.java | 52 + .../common/core/utils/EventUtils.java | 23 + .../paradogs/common/core/utils/MsgUtils.java | 78 + .../common/core/utils/ProtoUtils.java | 62 + .../common/core}/utils/SpringUtils.java | 42 +- .../common/core}/utils/StringUtils.java | 2 +- .../com/paradogs/common/core/utils/Wrap.java | 21 + .../excel/ExcelDataTransformListener.java | 2 +- .../common/core/utils/excel}/ExcelUtils.java | 4 +- ...ot.autoconfigure.AutoConfiguration.imports | 16 + paradogs-common/paradogs-common-redis/pom.xml | 33 + .../config/FastJson2JsonRedisSerializer.java | 6 +- .../common/redis}/config/RedisConfig.java | 2 +- .../common/redis/service}/RedisService.java | 2 +- .../paradogs-common-server-starter/pom.xml | 26 + .../com/paradogs/common/server/Server.java | 29 +- .../common/server/ServerLauncher.java | 40 + .../common/server/ServerProperties.java | 44 + .../server/events/ServerStartEvent.java | 27 + ...ot.autoconfigure.AutoConfiguration.imports | 5 + {mini-common => paradogs-common}/pom.xml | 89 +- paradogs-game/pom.xml | 24 + .../com/paradogs}/game/GameApplication.java | 9 +- .../game/handler/CGAttackMsgHandler.java | 17 +- .../game/handler/CGBuyGoodsMsgHandler.java | 19 +- .../handler/CGLoginSuccessMsgHandler.java | 19 +- .../CGReceiveWarOrderPrizeMsgHandler.java | 21 +- .../CGRechargeWarOrderVipMsgHandler.java | 17 +- .../game/handler/GCBuyGoodsMsgHandler.java | 6 +- .../game/handler/base/GameMessageHandler.java | 6 +- .../game/manager/BaseInfoManager.java | 12 +- .../paradogs}/game/manager/BaseManager.java | 2 +- .../game/manager/WarOrderManager.java | 25 +- .../game/manager/WoodShopManager.java | 21 +- .../paradogs}/game/mapper/PlayerMapper.java | 4 +- .../paradogs}/game/message/CGAttackMsg.java | 5 +- .../paradogs}/game/message/CGBuyGoodsMsg.java | 4 +- .../game/message/CGLoginSuccessMsg.java | 4 +- .../message/CGReceiveWarOrderPrizeMsg.java | 5 +- .../message/CGRechargeWarOrderVipMsg.java | 4 +- .../paradogs}/game/message/GCAttackMsg.java | 4 +- .../paradogs}/game/message/GCBuyGoodsMsg.java | 4 +- .../game/message/GCLoginSuccessMsg.java | 4 +- .../message/GCReceiveWarOrderPrizeMsg.java | 5 +- .../message/GCRechargeWarOrderVipMsg.java | 4 +- .../paradogs}/game/misc/GameRepository.java | 16 +- .../misc/ObjectAndByteArrayTypeHandler.java | 4 +- .../paradogs}/game/misc/PubSubManager.java | 10 +- .../game/misc/pubsub/CompleteTaskPub.java | 6 +- .../game/misc/pubsub/KillChangePub.java | 6 +- .../paradogs}/game/misc/pubsub/LoginPub.java | 7 +- .../paradogs}/game/misc/pubsub/base/Pub.java | 2 +- .../paradogs}/game/misc/pubsub/base/Sub.java | 2 +- .../paradogs}/game/pojo/blob/BaseBlob.java | 2 +- .../paradogs}/game/pojo/blob/BaseInfo.java | 2 +- .../game/pojo/blob/PlayerCurrency.java | 2 +- .../paradogs}/game/pojo/blob/WarOrder.java | 10 +- .../game/pojo/db/ModifyPlayerMsg.java | 7 +- .../paradogs}/game/pojo/entity/Player.java | 17 +- .../excel}/ExcelDataTransformListener.java | 2 +- .../paradogs}/game/pojo/excel/ExcelGoods.java | 2 +- .../game/pojo/excel/ExcelWarOrderPrize.java | 2 +- .../game/pojo/excel/ExcelWarOrderTask.java | 2 +- .../game/pojo/notify/CompleteTaskNotify.java | 2 +- .../com/paradogs}/game/proto/ProtoMsg.java | 2 +- .../server/GameMainChannelInitializer.java | 8 +- .../com/paradogs}/game/server/GameServer.java | 4 +- .../paradogs}/game/server/ServerRunner.java | 2 +- .../server/thread/CGMainHandleThread.java | 10 +- .../game/server/thread/DBHandlerThread.java | 14 +- .../paradogs}/game/service/PlayerService.java | 4 +- .../game/service/WarOrderService.java | 2 +- .../game/service/impl/PlayerServiceImpl.java | 8 +- .../service/impl/WarOrderServiceImpl.java | 21 +- .../src/main/proto/Entity.proto | 0 .../src/main/resources/application.yml | 0 ...\344\273\244\347\263\273\347\273\237.xlsx" | Bin ...\346\235\220\345\225\206\345\272\227.xlsx" | Bin .../test/java/com/paradogs/game/GameTest.java | 70 + .../target/classes/application.yml | 0 ...\344\273\244\347\263\273\347\273\237.xlsx" | Bin ...\346\235\220\345\225\206\345\272\227.xlsx" | Bin {mini-gate => paradogs-gate}/pom.xml | 14 +- .../com/paradogs}/gate/GateApplication.java | 2 +- .../com/paradogs}/gate/client/ClientCfg.java | 2 +- .../paradogs}/gate/client/ClientManager.java | 4 +- .../client/GateClientChannelInitializer.java | 6 +- .../paradogs}/gate/config/ClientConfig.java | 4 +- .../gate/handler/GateMessageHandler.java | 18 +- .../com/paradogs}/gate/misc/GateCodec.java | 4 +- .../com/paradogs}/gate/misc/GateMessage.java | 6 +- .../paradogs}/gate/misc/GateRepository.java | 2 +- .../paradogs}/gate/misc/ServiceServer.java | 4 +- .../gate/server/GateChannelDuplexHandler.java | 2 +- .../com/paradogs}/gate/server/GateServer.java | 2 +- .../server/GateServerChannelInitializer.java | 10 +- .../paradogs}/gate/server/ServerRunner.java | 8 +- .../src/main/resources/application.yml | 0 .../target/classes/application.yml | 0 {mini-login => paradogs-login}/pom.xml | 14 +- .../com/paradogs}/login/LoginApplication.java | 3 +- .../paradogs}/login/client/GateClient.java | 4 +- .../login/handler/CGLoginMsgHandler.java | 18 +- .../handler/GCLoginSuccessMsgHandler.java | 6 +- .../paradogs}/login/mapper/PlayerMapper.java | 4 +- .../paradogs}/login/message/CGLoginMsg.java | 5 +- .../paradogs}/login/message/GCLoginMsg.java | 5 +- .../paradogs}/login/pojo/blob/BaseBlob.java | 2 +- .../login/pojo/blob/PlayerCurrency.java | 2 +- .../paradogs}/login/pojo/entity/Player.java | 4 +- .../com/paradogs}/login/proto/ProtoMsg.java | 2 +- .../paradogs}/login/server/ServerRunner.java | 6 +- .../login/service/PlayerService.java | 4 +- .../login/service/impl/PlayerServiceImpl.java | 8 +- .../src/main/proto/Entity.proto | 0 .../src/main/resources/application.yml | 0 .../java/com/paradogs}/login/LoginTest.java | 4 +- paradogs-master/pom.xml | 43 + .../paradogs/master/MasterApplication.java | 16 + .../src/main/resources/application.yml | 19 + .../java/com/paradogs/master/test/Test11.java | 20 + paradogs-test/paradogs-test-client/pom.xml | 26 + .../test/client/TestClientApplication.java | 30 + .../src/main/resources/application.yml | 4 + paradogs-test/paradogs-test-server/pom.xml | 26 + .../com/paradogs/test/misc/TestProto.java | 75 + .../test/server/TestServerApplication.java | 16 + .../server/controller/TestController.java | 22 + .../src/main/resources/application.yml | 3 + paradogs-test/pom.xml | 24 + pom.xml | 80 +- 191 files changed, 2456 insertions(+), 5102 deletions(-) delete mode 100644 mini-common/src/main/java/com/mini/common/handler/BaseHandler.java delete mode 100644 mini-common/src/main/java/com/mini/common/handler/CGHandler.java delete mode 100644 mini-common/src/main/java/com/mini/common/handler/CGHeartMsgHandler.java delete mode 100644 mini-common/src/main/java/com/mini/common/handler/GCHeartMsgHandler.java delete mode 100644 mini-common/src/main/java/com/mini/common/message/BaseMessage.java delete mode 100644 mini-common/src/main/java/com/mini/common/message/CGMessage.java delete mode 100644 mini-common/src/main/java/com/mini/common/message/GCHeartMsg.java delete mode 100644 mini-common/src/main/java/com/mini/common/message/MsgData.java delete mode 100644 mini-common/src/main/java/com/mini/common/misc/GameChannelInitializer.java delete mode 100644 mini-common/src/main/java/com/mini/common/proto/ProtoMsg.java delete mode 100644 mini-common/src/main/java/com/mini/common/utils/BeanUtils.java delete mode 100644 mini-common/src/main/java/com/mini/common/utils/Wrap.java delete mode 100644 mini-common/src/main/proto/Entity.proto delete mode 100644 mini-game/pom.xml delete mode 100644 mini-game/src/test/java/com/mini/game/GameTest.java delete mode 100644 mini-login/src/main/java/com/mini/login/server/LoginChannelInitializer.java rename {mini-client => paradogs-client}/pom.xml (67%) rename {mini-client/src/main/java/com/mini => paradogs-client/src/main/java/com/paradogs}/client/ClientApplication.java (95%) rename {mini-client/src/main/java/com/mini => paradogs-client/src/main/java/com/paradogs}/client/client/ApplicationRunner.java (93%) rename {mini-client/src/main/java/com/mini => paradogs-client/src/main/java/com/paradogs}/client/client/ClientChannelInitializer.java (92%) rename {mini-client/src/main/java/com/mini => paradogs-client/src/main/java/com/paradogs}/client/client/ClientHeartDuplexHandler.java (89%) rename {mini-client/src/main/java/com/mini => paradogs-client/src/main/java/com/paradogs}/client/client/GameClient.java (93%) rename {mini-client/src/main/java/com/mini => paradogs-client/src/main/java/com/paradogs}/client/handler/GCAttackMsgHandler.java (75%) rename {mini-client/src/main/java/com/mini => paradogs-client/src/main/java/com/paradogs}/client/handler/GCBuyGoodsMsgHandler.java (74%) rename {mini-client/src/main/java/com/mini => paradogs-client/src/main/java/com/paradogs}/client/handler/GCLoginMsgHandler.java (70%) rename {mini-client/src/main/java/com/mini => paradogs-client/src/main/java/com/paradogs}/client/handler/GCReceiveWarOrderPrizeMsgHandler.java (68%) rename {mini-client/src/main/java/com/mini => paradogs-client/src/main/java/com/paradogs}/client/handler/GCRechargeWarOrderVipMsgHandler.java (75%) rename {mini-client => paradogs-client}/src/main/resources/application.yml (100%) create mode 100644 paradogs-common/paradogs-common-client-starter/pom.xml create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/events/ClientStartEvent.java create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 paradogs-common/paradogs-common-core/pom.xml create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgController.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsgMapping.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/BaseEvent.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/listener/PdgEventListener.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java rename mini-common/src/main/java/com/mini/common/message/CGHeartMsg.java => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java (31%) rename mini-common/src/main/java/com/mini/common/message/GCErrorMsg.java => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java (41%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/DBTask.java rename mini-common/src/main/java/com/mini/common/message/GCMessage.java => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCMsg.java (39%) rename {mini-common/src/main/java/com/mini/common => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core}/message/IMsgSerializable.java (88%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MainMsgHandler.java rename {mini-common/src/main/java/com/mini/common => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core}/message/MsgHeader.java (37%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgMapping.java rename {mini-common/src/main/java/com/mini/common/netty => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec}/Codec.java (44%) rename mini-common/src/main/java/com/mini/common/handler/BaseMessageHandler.java => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/handler/MsgHandler.java (36%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/handler/MsgHeaderWrapper.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/protocol/ProtocolProperties.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/DBTaskConsumerThread.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java rename {mini-common/src/main/java/com/mini/common => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core}/utils/SpringUtils.java (71%) rename {mini-common/src/main/java/com/mini/common => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core}/utils/StringUtils.java (90%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/Wrap.java rename {mini-game/src/main/java/com/mini/game/pojo => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils}/excel/ExcelDataTransformListener.java (96%) rename {mini-common/src/main/java/com/mini/common/utils => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel}/ExcelUtils.java (90%) create mode 100644 paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 paradogs-common/paradogs-common-redis/pom.xml rename {mini-common/src/main/java/com/mini/common => paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis}/config/FastJson2JsonRedisSerializer.java (83%) rename {mini-common/src/main/java/com/mini/common => paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis}/config/RedisConfig.java (97%) rename {mini-common/src/main/java/com/mini/common/utils => paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/service}/RedisService.java (99%) create mode 100644 paradogs-common/paradogs-common-server-starter/pom.xml rename mini-login/src/main/java/com/mini/login/server/LoginServer.java => paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java (62%) create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerStartEvent.java create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename {mini-common => paradogs-common}/pom.xml (45%) create mode 100644 paradogs-game/pom.xml rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/GameApplication.java (68%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/handler/CGAttackMsgHandler.java (73%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/handler/CGBuyGoodsMsgHandler.java (74%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/handler/CGLoginSuccessMsgHandler.java (71%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/handler/CGReceiveWarOrderPrizeMsgHandler.java (84%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/handler/CGRechargeWarOrderVipMsgHandler.java (75%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/handler/GCBuyGoodsMsgHandler.java (74%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/handler/base/GameMessageHandler.java (85%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/manager/BaseInfoManager.java (86%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/manager/BaseManager.java (83%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/manager/WarOrderManager.java (90%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/manager/WoodShopManager.java (79%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/mapper/PlayerMapper.java (75%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/message/CGAttackMsg.java (60%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/message/CGBuyGoodsMsg.java (84%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/message/CGLoginSuccessMsg.java (78%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/message/CGReceiveWarOrderPrizeMsg.java (72%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/message/CGRechargeWarOrderVipMsg.java (68%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/message/GCAttackMsg.java (68%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/message/GCBuyGoodsMsg.java (81%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/message/GCLoginSuccessMsg.java (65%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/message/GCReceiveWarOrderPrizeMsg.java (61%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/message/GCRechargeWarOrderVipMsg.java (70%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/misc/GameRepository.java (92%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/misc/ObjectAndByteArrayTypeHandler.java (96%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/misc/PubSubManager.java (80%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/misc/pubsub/CompleteTaskPub.java (84%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/misc/pubsub/KillChangePub.java (83%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/misc/pubsub/LoginPub.java (84%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/misc/pubsub/base/Pub.java (81%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/misc/pubsub/base/Sub.java (76%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/pojo/blob/BaseBlob.java (93%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/pojo/blob/BaseInfo.java (93%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/pojo/blob/PlayerCurrency.java (90%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/pojo/blob/WarOrder.java (90%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/pojo/db/ModifyPlayerMsg.java (71%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/pojo/entity/Player.java (86%) rename {mini-common/src/main/java/com/mini/common/misc => paradogs-game/src/main/java/com/paradogs/game/pojo/excel}/ExcelDataTransformListener.java (97%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/pojo/excel/ExcelGoods.java (91%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/pojo/excel/ExcelWarOrderPrize.java (96%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/pojo/excel/ExcelWarOrderTask.java (97%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/pojo/notify/CompleteTaskNotify.java (84%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/proto/ProtoMsg.java (99%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/server/GameMainChannelInitializer.java (89%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/server/GameServer.java (95%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/server/ServerRunner.java (94%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/server/thread/CGMainHandleThread.java (81%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/server/thread/DBHandlerThread.java (83%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/service/PlayerService.java (71%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/service/WarOrderService.java (76%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/service/impl/PlayerServiceImpl.java (62%) rename {mini-game/src/main/java/com/mini => paradogs-game/src/main/java/com/paradogs}/game/service/impl/WarOrderServiceImpl.java (86%) rename {mini-game => paradogs-game}/src/main/proto/Entity.proto (100%) rename {mini-game => paradogs-game}/src/main/resources/application.yml (100%) rename "mini-game/src/main/resources/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" => "paradogs-game/src/main/resources/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" (100%) rename "mini-game/src/main/resources/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" => "paradogs-game/src/main/resources/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" (100%) create mode 100644 paradogs-game/src/test/java/com/paradogs/game/GameTest.java rename {mini-game => paradogs-game}/target/classes/application.yml (100%) rename "mini-game/target/classes/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" => "paradogs-game/target/classes/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" (100%) rename "mini-game/target/classes/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" => "paradogs-game/target/classes/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" (100%) rename {mini-gate => paradogs-gate}/pom.xml (61%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/GateApplication.java (95%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/client/ClientCfg.java (87%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/client/ClientManager.java (94%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/client/GateClientChannelInitializer.java (93%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/config/ClientConfig.java (82%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/handler/GateMessageHandler.java (88%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/misc/GateCodec.java (91%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/misc/GateMessage.java (86%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/misc/GateRepository.java (98%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/misc/ServiceServer.java (96%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/server/GateChannelDuplexHandler.java (94%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/server/GateServer.java (97%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/server/GateServerChannelInitializer.java (88%) rename {mini-gate/src/main/java/com/mini => paradogs-gate/src/main/java/com/paradogs}/gate/server/ServerRunner.java (82%) rename {mini-gate => paradogs-gate}/src/main/resources/application.yml (100%) rename {mini-gate => paradogs-gate}/target/classes/application.yml (100%) rename {mini-login => paradogs-login}/pom.xml (88%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/LoginApplication.java (88%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/client/GateClient.java (89%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/handler/CGLoginMsgHandler.java (80%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/handler/GCLoginSuccessMsgHandler.java (76%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/mapper/PlayerMapper.java (75%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/message/CGLoginMsg.java (69%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/message/GCLoginMsg.java (76%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/pojo/blob/BaseBlob.java (93%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/pojo/blob/PlayerCurrency.java (90%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/pojo/entity/Player.java (91%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/proto/ProtoMsg.java (99%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/server/ServerRunner.java (80%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/service/PlayerService.java (70%) rename {mini-login/src/main/java/com/mini => paradogs-login/src/main/java/com/paradogs}/login/service/impl/PlayerServiceImpl.java (62%) rename {mini-login => paradogs-login}/src/main/proto/Entity.proto (100%) rename {mini-login => paradogs-login}/src/main/resources/application.yml (100%) rename {mini-login/src/test/java/com/mini => paradogs-login/src/test/java/com/paradogs}/login/LoginTest.java (84%) create mode 100644 paradogs-master/pom.xml create mode 100644 paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java create mode 100644 paradogs-master/src/main/resources/application.yml create mode 100644 paradogs-master/src/test/java/com/paradogs/master/test/Test11.java create mode 100644 paradogs-test/paradogs-test-client/pom.xml create mode 100644 paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java create mode 100644 paradogs-test/paradogs-test-client/src/main/resources/application.yml create mode 100644 paradogs-test/paradogs-test-server/pom.xml create mode 100644 paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/misc/TestProto.java create mode 100644 paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java create mode 100644 paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java create mode 100644 paradogs-test/paradogs-test-server/src/main/resources/application.yml create mode 100644 paradogs-test/pom.xml diff --git a/mini-common/src/main/java/com/mini/common/handler/BaseHandler.java b/mini-common/src/main/java/com/mini/common/handler/BaseHandler.java deleted file mode 100644 index b52396f..0000000 --- a/mini-common/src/main/java/com/mini/common/handler/BaseHandler.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.mini.common.handler; - -import com.mini.common.message.BaseMessage; -import io.netty.channel.Channel; -import io.netty.channel.ChannelHandlerContext; - -/** - * @author: yumi - * @date: 2023/2/8 20:03 - * @Description: TODO - */ -// MessageLite has toByteArray() -public interface BaseHandler { - - void handler(Channel channel, T msg); - -} diff --git a/mini-common/src/main/java/com/mini/common/handler/CGHandler.java b/mini-common/src/main/java/com/mini/common/handler/CGHandler.java deleted file mode 100644 index 0c260b2..0000000 --- a/mini-common/src/main/java/com/mini/common/handler/CGHandler.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.mini.common.handler; - - -import com.mini.common.message.BaseMessage; - -/** - * @author: yumi - * @date: 2023/2/19 11:58 - * @Description: TODO - */ -public interface CGHandler extends BaseHandler { - - /** - * 持久化操作 - * @param msg - */ - void doDB(T msg); - -} diff --git a/mini-common/src/main/java/com/mini/common/handler/CGHeartMsgHandler.java b/mini-common/src/main/java/com/mini/common/handler/CGHeartMsgHandler.java deleted file mode 100644 index c51a2c7..0000000 --- a/mini-common/src/main/java/com/mini/common/handler/CGHeartMsgHandler.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.mini.common.handler; - -import com.mini.common.message.CGHeartMsg; -import com.mini.common.message.GCHeartMsg; -import io.netty.channel.Channel; -import io.netty.channel.ChannelHandlerContext; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-02-24 16:41 - * @Description: TODO - */ -@Slf4j -@Component -public class CGHeartMsgHandler implements BaseHandler { - - @Override - public void handler(Channel channel, CGHeartMsg msg) { - channel.writeAndFlush(new GCHeartMsg()); -// log.info("收到心跳 [{}]", msg); - } -} diff --git a/mini-common/src/main/java/com/mini/common/handler/GCHeartMsgHandler.java b/mini-common/src/main/java/com/mini/common/handler/GCHeartMsgHandler.java deleted file mode 100644 index 9b4da62..0000000 --- a/mini-common/src/main/java/com/mini/common/handler/GCHeartMsgHandler.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.mini.common.handler; - -import com.mini.common.message.GCHeartMsg; -import io.netty.channel.Channel; -import io.netty.channel.ChannelHandlerContext; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-02-24 16:42 - * @Description: TODO - */ -@Slf4j -@Component -public class GCHeartMsgHandler implements BaseHandler { - - @Override - public void handler(Channel channel, GCHeartMsg msg) { - log.info("收到心跳"); - } -} diff --git a/mini-common/src/main/java/com/mini/common/message/BaseMessage.java b/mini-common/src/main/java/com/mini/common/message/BaseMessage.java deleted file mode 100644 index 7589678..0000000 --- a/mini-common/src/main/java/com/mini/common/message/BaseMessage.java +++ /dev/null @@ -1,160 +0,0 @@ -package com.mini.common.message; - -import com.google.protobuf.InvalidProtocolBufferException; -import com.google.protobuf.MessageLite; -import com.mini.common.handler.BaseHandler; -import com.mini.common.utils.BeanUtils; -import com.mini.common.utils.SpringUtils; -import io.netty.buffer.ByteBuf; -import io.netty.channel.Channel; -import io.netty.channel.ChannelHandlerContext; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.UUID; - -/** - * @author: yumi - * @date: 2023/2/15 21:12 - * @Description: 基础消息类,通过约定类名实现反射自动调用, - * this 在子类使用时会指向子类对象,从而实现子类不需要实现接口就能自动转换 - */ -@Slf4j -@Data -public abstract class BaseMessage implements IMsgSerializable { - - private MsgHeader msgHeader; - -// private MsgData msgData; - -// public abstract byte[] getDataBytes(); - - /** - * 创建时自动生成消息类型,this 会引导到子类上 - */ - public BaseMessage() { - -// String msgType = this.getClass().getSimpleName().replace("Msg", ""); - String msgType = this.getClass().getName(); - Long timestamp = System.currentTimeMillis(); - - // 获取服务模块名称 - String packageName = this.getClass().getPackage().getName(); - String substring = packageName.substring(0, packageName.lastIndexOf(".")); - - this.msgHeader = MsgHeader - .builder() - .uuid(UUID.randomUUID().toString()) - .msgType(msgType) - .channelId("non") - .timestamp(timestamp) - .serviceName(substring.substring(substring.lastIndexOf(".") + 1)) - .build(); - } - - public BaseMessage(CGMessage cgMessage) { - - } - - - @Override - public void serialization(ByteBuf out) { - try { -// Constructor dc = Class.forName("com.nettym.proto.ProtoMsg").getDeclaredConstructor(); -// dc.setAccessible(true); -// ProtoMsg protoMsg = (ProtoMsg) dc.newInstance(); - - // 静态匿名内部类 getDeclaredConstructor(),非静态匿名内部类需加上父类 class getDeclaredConstructor(ProtoMsg.class) -// Constructor protoDc = Class.forName("com.nettym.proto.ProtoMsg$" + this.getClass().getSimpleName()).getDeclaredConstructor(); -// String replace = this.getClass().getPackage().getName().replace("com.mini.", ""); -// String packageName = replace.substring(0, replace.indexOf(".")); - Class clazz = Class.forName( - "com.mini." - + this.msgHeader.getServiceName() - + ".proto.ProtoMsg$" - + this.getClass().getSimpleName()); - // 允许访问私有 -// protoDc.setAccessible(true); - // 复制属性并转为 byte 数组 - byte[] bytes = ((MessageLite) BeanUtils.copy2ProtoBuilder(this, clazz)).toByteArray(); - // 写入消息体 - out.writeBytes(bytes); - - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - } - - @Override - public void deserialization(ByteBuf in) throws InvalidProtocolBufferException { - - try { -// String replace = this.getClass().getPackage().getName().replace("com.mini.", ""); -// String packageName = replace.substring(0, replace.indexOf(".")); - // 获取 protoBuf 对应实体(约定类名相同) - Class protoMsgClass = Class.forName("com.mini." + this.msgHeader.getServiceName() + ".proto.ProtoMsg$" + this.getClass().getSimpleName()); - - // 静态匿名内部类 getDeclaredConstructor(),非静态匿名内部类需加上父类 class getDeclaredConstructor(ProtoMsg.class) - Constructor protoDc = protoMsgClass.getDeclaredConstructor(); - // 允许访问私有 - protoDc.setAccessible(true); - // 复制属性并转为 byte 数组 -// byte[] bytes = ((MessageLite) BeanUtils.copy(this, protoDc.newInstance())).toByteArray(); - - // 读取消息体 byte 数组 - byte[] bytes = new byte[in.readableBytes()]; - in.readBytes(bytes); - // 调用 protoBuf 反序列化方法 - Method method = protoMsgClass.getDeclaredMethod("parseFrom", byte[].class); - method.setAccessible(true); - Object protoMsgChild = method.invoke(protoDc.newInstance(), bytes); - - // 将属性设置到类上 - BeanUtils.copyProto2Entity(protoMsgChild, this); - - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - } - - public void handler(Channel channel) { - - /** - * 无 spring 反射版本 - */ -// try { -// -// // 根据消息名执行对应的 Handler(约定 Handler 前缀为消息名) -// BaseHandler baseHandler = (BaseHandler) Class.forName("com.nettym.handler." + this.getMsgHeader().getMsgType() + "Handler").newInstance(); -// baseHandler.handler(ctx, this); -// -// } catch (IllegalAccessException e) { -// e.printStackTrace(); -// } catch (InstantiationException e) { -// e.printStackTrace(); -// } catch (ClassNotFoundException e) { -// e.printStackTrace(); -// } - - try { - BaseHandler handler = SpringUtils.getBean(this.getMsgHeader().getMsgType().substring(this.getMsgHeader().getMsgType().lastIndexOf(".") + 1) + "Handler"); - handler.handler(channel, this); - } catch (NoSuchBeanDefinitionException e) { - log.warn("[{}] 为 null", this.getMsgHeader().getMsgType().substring(this.getMsgHeader().getMsgType().lastIndexOf(".") + 1) + "Handler"); - } - - } -} diff --git a/mini-common/src/main/java/com/mini/common/message/CGMessage.java b/mini-common/src/main/java/com/mini/common/message/CGMessage.java deleted file mode 100644 index 0f47bc7..0000000 --- a/mini-common/src/main/java/com/mini/common/message/CGMessage.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.mini.common.message; - -import lombok.Data; -import lombok.ToString; - - - -/** - * @author: yumi - * @date: 2023/2/15 21:15 - * @Description: TODO - */ -@Data -@ToString(callSuper = true) -public abstract class CGMessage extends BaseMessage { - - public T buildGC() { - try { - System.out.println(this.getClass().getPackage().getName() + ".GC" + this.getClass().getSimpleName().substring(2)); - Class clazz = (Class) Class.forName(this.getClass().getPackage().getName() + ".GC" + this.getClass().getSimpleName().substring(2)); - T gc = clazz.newInstance(); - gc.getMsgHeader().setUuid(super.getMsgHeader().getUuid()); - gc.getMsgHeader().setChannelId(super.getMsgHeader().getChannelId()); - return gc; - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } - return null; - } - -} diff --git a/mini-common/src/main/java/com/mini/common/message/GCHeartMsg.java b/mini-common/src/main/java/com/mini/common/message/GCHeartMsg.java deleted file mode 100644 index 2c0ea59..0000000 --- a/mini-common/src/main/java/com/mini/common/message/GCHeartMsg.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.mini.common.message; - -import lombok.Data; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-02-24 16:38 - * @Description: TODO - */ -@Data -@Component -public class GCHeartMsg extends BaseMessage { -} diff --git a/mini-common/src/main/java/com/mini/common/message/MsgData.java b/mini-common/src/main/java/com/mini/common/message/MsgData.java deleted file mode 100644 index e805e94..0000000 --- a/mini-common/src/main/java/com/mini/common/message/MsgData.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mini.common.message; - -/** - * @author: yumi - * @date: 2023/2/15 21:14 - * @Description: TODO - */ -public class MsgData { -} diff --git a/mini-common/src/main/java/com/mini/common/misc/GameChannelInitializer.java b/mini-common/src/main/java/com/mini/common/misc/GameChannelInitializer.java deleted file mode 100644 index 8ae6910..0000000 --- a/mini-common/src/main/java/com/mini/common/misc/GameChannelInitializer.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.mini.common.misc; - -import com.mini.common.handler.BaseMessageHandler; -import com.mini.common.netty.Codec; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInitializer; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.LengthFieldBasedFrameDecoder; -import io.netty.handler.codec.LengthFieldPrepender; -import lombok.extern.slf4j.Slf4j; - -/** - * @author: yumi - * @date: 2023/2/18 13:14 - * @Description: TODO - */ -@Slf4j -public class GameChannelInitializer extends ChannelInitializer { - - @Override - protected void initChannel(NioSocketChannel channel) throws Exception { - channel.pipeline().addLast(new LengthFieldBasedFrameDecoder(65534, 0, 2, 0, 2)); - channel.pipeline().addLast(new LengthFieldPrepender(2)); - channel.pipeline().addLast(new Codec()); - channel.pipeline().addLast(new BaseMessageHandler()); -// log.info("[{}] 建立连接", name); - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - log.error("{}", cause.getMessage()); - } -} diff --git a/mini-common/src/main/java/com/mini/common/proto/ProtoMsg.java b/mini-common/src/main/java/com/mini/common/proto/ProtoMsg.java deleted file mode 100644 index 2f3b961..0000000 --- a/mini-common/src/main/java/com/mini/common/proto/ProtoMsg.java +++ /dev/null @@ -1,3891 +0,0 @@ -package com.mini.common.proto;// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: Entity.proto - -public final class ProtoMsg { - private ProtoMsg() {} - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistryLite registry) { - } - - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistry registry) { - registerAllExtensions( - (com.google.protobuf.ExtensionRegistryLite) registry); - } - public interface MsgHeaderOrBuilder extends - // @@protoc_insertion_point(interface_extends:MsgHeader) - com.google.protobuf.MessageOrBuilder { - - /** - * optional string msgType = 1; - */ - String getMsgType(); - /** - * optional string msgType = 1; - */ - com.google.protobuf.ByteString - getMsgTypeBytes(); - - /** - * optional string uuid = 2; - */ - String getUuid(); - /** - * optional string uuid = 2; - */ - com.google.protobuf.ByteString - getUuidBytes(); - - /** - * optional int64 timestamp = 3; - */ - long getTimestamp(); - - /** - * optional string serviceName = 4; - */ - String getServiceName(); - /** - * optional string serviceName = 4; - */ - com.google.protobuf.ByteString - getServiceNameBytes(); - - /** - * optional string channelId = 5; - */ - String getChannelId(); - /** - * optional string channelId = 5; - */ - com.google.protobuf.ByteString - getChannelIdBytes(); - - /** - * optional int64 playerId = 6; - */ - long getPlayerId(); - } - /** - * Protobuf type {@code MsgHeader} - */ - public static final class MsgHeader extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:MsgHeader) - MsgHeaderOrBuilder { - // Use MsgHeader.newBuilder() to construct. - private MsgHeader(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private MsgHeader() { - msgType_ = ""; - uuid_ = ""; - timestamp_ = 0L; - serviceName_ = ""; - channelId_ = ""; - playerId_ = 0L; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private MsgHeader( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 10: { - String s = input.readStringRequireUtf8(); - - msgType_ = s; - break; - } - case 18: { - String s = input.readStringRequireUtf8(); - - uuid_ = s; - break; - } - case 24: { - - timestamp_ = input.readInt64(); - break; - } - case 34: { - String s = input.readStringRequireUtf8(); - - serviceName_ = s; - break; - } - case 42: { - String s = input.readStringRequireUtf8(); - - channelId_ = s; - break; - } - case 48: { - - playerId_ = input.readInt64(); - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_MsgHeader_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_MsgHeader_fieldAccessorTable - .ensureFieldAccessorsInitialized( - MsgHeader.class, Builder.class); - } - - public static final int MSGTYPE_FIELD_NUMBER = 1; - private volatile Object msgType_; - /** - * optional string msgType = 1; - */ - public String getMsgType() { - Object ref = msgType_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - msgType_ = s; - return s; - } - } - /** - * optional string msgType = 1; - */ - public com.google.protobuf.ByteString - getMsgTypeBytes() { - Object ref = msgType_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - msgType_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - public static final int UUID_FIELD_NUMBER = 2; - private volatile Object uuid_; - /** - * optional string uuid = 2; - */ - public String getUuid() { - Object ref = uuid_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - uuid_ = s; - return s; - } - } - /** - * optional string uuid = 2; - */ - public com.google.protobuf.ByteString - getUuidBytes() { - Object ref = uuid_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - uuid_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - public static final int TIMESTAMP_FIELD_NUMBER = 3; - private long timestamp_; - /** - * optional int64 timestamp = 3; - */ - public long getTimestamp() { - return timestamp_; - } - - public static final int SERVICENAME_FIELD_NUMBER = 4; - private volatile Object serviceName_; - /** - * optional string serviceName = 4; - */ - public String getServiceName() { - Object ref = serviceName_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - serviceName_ = s; - return s; - } - } - /** - * optional string serviceName = 4; - */ - public com.google.protobuf.ByteString - getServiceNameBytes() { - Object ref = serviceName_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - serviceName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - public static final int CHANNELID_FIELD_NUMBER = 5; - private volatile Object channelId_; - /** - * optional string channelId = 5; - */ - public String getChannelId() { - Object ref = channelId_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - channelId_ = s; - return s; - } - } - /** - * optional string channelId = 5; - */ - public com.google.protobuf.ByteString - getChannelIdBytes() { - Object ref = channelId_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - channelId_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - public static final int PLAYERID_FIELD_NUMBER = 6; - private long playerId_; - /** - * optional int64 playerId = 6; - */ - public long getPlayerId() { - return playerId_; - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (!getMsgTypeBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, msgType_); - } - if (!getUuidBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 2, uuid_); - } - if (timestamp_ != 0L) { - output.writeInt64(3, timestamp_); - } - if (!getServiceNameBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 4, serviceName_); - } - if (!getChannelIdBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 5, channelId_); - } - if (playerId_ != 0L) { - output.writeInt64(6, playerId_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (!getMsgTypeBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, msgType_); - } - if (!getUuidBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, uuid_); - } - if (timestamp_ != 0L) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(3, timestamp_); - } - if (!getServiceNameBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, serviceName_); - } - if (!getChannelIdBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, channelId_); - } - if (playerId_ != 0L) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(6, playerId_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof MsgHeader)) { - return super.equals(obj); - } - MsgHeader other = (MsgHeader) obj; - - boolean result = true; - result = result && getMsgType() - .equals(other.getMsgType()); - result = result && getUuid() - .equals(other.getUuid()); - result = result && (getTimestamp() - == other.getTimestamp()); - result = result && getServiceName() - .equals(other.getServiceName()); - result = result && getChannelId() - .equals(other.getChannelId()); - result = result && (getPlayerId() - == other.getPlayerId()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + MSGTYPE_FIELD_NUMBER; - hash = (53 * hash) + getMsgType().hashCode(); - hash = (37 * hash) + UUID_FIELD_NUMBER; - hash = (53 * hash) + getUuid().hashCode(); - hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getTimestamp()); - hash = (37 * hash) + SERVICENAME_FIELD_NUMBER; - hash = (53 * hash) + getServiceName().hashCode(); - hash = (37 * hash) + CHANNELID_FIELD_NUMBER; - hash = (53 * hash) + getChannelId().hashCode(); - hash = (37 * hash) + PLAYERID_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getPlayerId()); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static MsgHeader parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static MsgHeader parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static MsgHeader parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static MsgHeader parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static MsgHeader parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static MsgHeader parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static MsgHeader parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static MsgHeader parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static MsgHeader parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static MsgHeader parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(MsgHeader prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code MsgHeader} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:MsgHeader) - MsgHeaderOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_MsgHeader_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_MsgHeader_fieldAccessorTable - .ensureFieldAccessorsInitialized( - MsgHeader.class, Builder.class); - } - - // Construct using ProtoMsg.MsgHeader.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - msgType_ = ""; - - uuid_ = ""; - - timestamp_ = 0L; - - serviceName_ = ""; - - channelId_ = ""; - - playerId_ = 0L; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_MsgHeader_descriptor; - } - - public MsgHeader getDefaultInstanceForType() { - return MsgHeader.getDefaultInstance(); - } - - public MsgHeader build() { - MsgHeader result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public MsgHeader buildPartial() { - MsgHeader result = new MsgHeader(this); - result.msgType_ = msgType_; - result.uuid_ = uuid_; - result.timestamp_ = timestamp_; - result.serviceName_ = serviceName_; - result.channelId_ = channelId_; - result.playerId_ = playerId_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof MsgHeader) { - return mergeFrom((MsgHeader)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(MsgHeader other) { - if (other == MsgHeader.getDefaultInstance()) return this; - if (!other.getMsgType().isEmpty()) { - msgType_ = other.msgType_; - onChanged(); - } - if (!other.getUuid().isEmpty()) { - uuid_ = other.uuid_; - onChanged(); - } - if (other.getTimestamp() != 0L) { - setTimestamp(other.getTimestamp()); - } - if (!other.getServiceName().isEmpty()) { - serviceName_ = other.serviceName_; - onChanged(); - } - if (!other.getChannelId().isEmpty()) { - channelId_ = other.channelId_; - onChanged(); - } - if (other.getPlayerId() != 0L) { - setPlayerId(other.getPlayerId()); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - MsgHeader parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (MsgHeader) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private Object msgType_ = ""; - /** - * optional string msgType = 1; - */ - public String getMsgType() { - Object ref = msgType_; - if (!(ref instanceof String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - msgType_ = s; - return s; - } else { - return (String) ref; - } - } - /** - * optional string msgType = 1; - */ - public com.google.protobuf.ByteString - getMsgTypeBytes() { - Object ref = msgType_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - msgType_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string msgType = 1; - */ - public Builder setMsgType( - String value) { - if (value == null) { - throw new NullPointerException(); - } - - msgType_ = value; - onChanged(); - return this; - } - /** - * optional string msgType = 1; - */ - public Builder clearMsgType() { - - msgType_ = getDefaultInstance().getMsgType(); - onChanged(); - return this; - } - /** - * optional string msgType = 1; - */ - public Builder setMsgTypeBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - msgType_ = value; - onChanged(); - return this; - } - - private Object uuid_ = ""; - /** - * optional string uuid = 2; - */ - public String getUuid() { - Object ref = uuid_; - if (!(ref instanceof String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - uuid_ = s; - return s; - } else { - return (String) ref; - } - } - /** - * optional string uuid = 2; - */ - public com.google.protobuf.ByteString - getUuidBytes() { - Object ref = uuid_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - uuid_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string uuid = 2; - */ - public Builder setUuid( - String value) { - if (value == null) { - throw new NullPointerException(); - } - - uuid_ = value; - onChanged(); - return this; - } - /** - * optional string uuid = 2; - */ - public Builder clearUuid() { - - uuid_ = getDefaultInstance().getUuid(); - onChanged(); - return this; - } - /** - * optional string uuid = 2; - */ - public Builder setUuidBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - uuid_ = value; - onChanged(); - return this; - } - - private long timestamp_ ; - /** - * optional int64 timestamp = 3; - */ - public long getTimestamp() { - return timestamp_; - } - /** - * optional int64 timestamp = 3; - */ - public Builder setTimestamp(long value) { - - timestamp_ = value; - onChanged(); - return this; - } - /** - * optional int64 timestamp = 3; - */ - public Builder clearTimestamp() { - - timestamp_ = 0L; - onChanged(); - return this; - } - - private Object serviceName_ = ""; - /** - * optional string serviceName = 4; - */ - public String getServiceName() { - Object ref = serviceName_; - if (!(ref instanceof String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - serviceName_ = s; - return s; - } else { - return (String) ref; - } - } - /** - * optional string serviceName = 4; - */ - public com.google.protobuf.ByteString - getServiceNameBytes() { - Object ref = serviceName_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - serviceName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string serviceName = 4; - */ - public Builder setServiceName( - String value) { - if (value == null) { - throw new NullPointerException(); - } - - serviceName_ = value; - onChanged(); - return this; - } - /** - * optional string serviceName = 4; - */ - public Builder clearServiceName() { - - serviceName_ = getDefaultInstance().getServiceName(); - onChanged(); - return this; - } - /** - * optional string serviceName = 4; - */ - public Builder setServiceNameBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - serviceName_ = value; - onChanged(); - return this; - } - - private Object channelId_ = ""; - /** - * optional string channelId = 5; - */ - public String getChannelId() { - Object ref = channelId_; - if (!(ref instanceof String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - channelId_ = s; - return s; - } else { - return (String) ref; - } - } - /** - * optional string channelId = 5; - */ - public com.google.protobuf.ByteString - getChannelIdBytes() { - Object ref = channelId_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - channelId_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string channelId = 5; - */ - public Builder setChannelId( - String value) { - if (value == null) { - throw new NullPointerException(); - } - - channelId_ = value; - onChanged(); - return this; - } - /** - * optional string channelId = 5; - */ - public Builder clearChannelId() { - - channelId_ = getDefaultInstance().getChannelId(); - onChanged(); - return this; - } - /** - * optional string channelId = 5; - */ - public Builder setChannelIdBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - channelId_ = value; - onChanged(); - return this; - } - - private long playerId_ ; - /** - * optional int64 playerId = 6; - */ - public long getPlayerId() { - return playerId_; - } - /** - * optional int64 playerId = 6; - */ - public Builder setPlayerId(long value) { - - playerId_ = value; - onChanged(); - return this; - } - /** - * optional int64 playerId = 6; - */ - public Builder clearPlayerId() { - - playerId_ = 0L; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:MsgHeader) - } - - // @@protoc_insertion_point(class_scope:MsgHeader) - private static final MsgHeader DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new MsgHeader(); - } - - public static MsgHeader getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public MsgHeader parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new MsgHeader(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public MsgHeader getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface GCHeartMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:GCHeartMsg) - com.google.protobuf.MessageOrBuilder { - } - /** - * Protobuf type {@code GCHeartMsg} - */ - public static final class GCHeartMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:GCHeartMsg) - GCHeartMsgOrBuilder { - // Use GCHeartMsg.newBuilder() to construct. - private GCHeartMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private GCHeartMsg() { - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private GCHeartMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCHeartMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCHeartMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCHeartMsg.class, Builder.class); - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof GCHeartMsg)) { - return super.equals(obj); - } - GCHeartMsg other = (GCHeartMsg) obj; - - boolean result = true; - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static GCHeartMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCHeartMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCHeartMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCHeartMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCHeartMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCHeartMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static GCHeartMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static GCHeartMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static GCHeartMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCHeartMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(GCHeartMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code GCHeartMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:GCHeartMsg) - GCHeartMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCHeartMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCHeartMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCHeartMsg.class, Builder.class); - } - - // Construct using ProtoMsg.GCHeartMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_GCHeartMsg_descriptor; - } - - public GCHeartMsg getDefaultInstanceForType() { - return GCHeartMsg.getDefaultInstance(); - } - - public GCHeartMsg build() { - GCHeartMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public GCHeartMsg buildPartial() { - GCHeartMsg result = new GCHeartMsg(this); - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof GCHeartMsg) { - return mergeFrom((GCHeartMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(GCHeartMsg other) { - if (other == GCHeartMsg.getDefaultInstance()) return this; - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - GCHeartMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (GCHeartMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:GCHeartMsg) - } - - // @@protoc_insertion_point(class_scope:GCHeartMsg) - private static final GCHeartMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new GCHeartMsg(); - } - - public static GCHeartMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public GCHeartMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new GCHeartMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public GCHeartMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface CGHeartMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:CGHeartMsg) - com.google.protobuf.MessageOrBuilder { - } - /** - * Protobuf type {@code CGHeartMsg} - */ - public static final class CGHeartMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:CGHeartMsg) - CGHeartMsgOrBuilder { - // Use CGHeartMsg.newBuilder() to construct. - private CGHeartMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private CGHeartMsg() { - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private CGHeartMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGHeartMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGHeartMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGHeartMsg.class, Builder.class); - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof CGHeartMsg)) { - return super.equals(obj); - } - CGHeartMsg other = (CGHeartMsg) obj; - - boolean result = true; - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static CGHeartMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGHeartMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGHeartMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGHeartMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGHeartMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGHeartMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static CGHeartMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static CGHeartMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static CGHeartMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGHeartMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(CGHeartMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code CGHeartMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:CGHeartMsg) - CGHeartMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGHeartMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGHeartMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGHeartMsg.class, Builder.class); - } - - // Construct using ProtoMsg.CGHeartMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_CGHeartMsg_descriptor; - } - - public CGHeartMsg getDefaultInstanceForType() { - return CGHeartMsg.getDefaultInstance(); - } - - public CGHeartMsg build() { - CGHeartMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public CGHeartMsg buildPartial() { - CGHeartMsg result = new CGHeartMsg(this); - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof CGHeartMsg) { - return mergeFrom((CGHeartMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(CGHeartMsg other) { - if (other == CGHeartMsg.getDefaultInstance()) return this; - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - CGHeartMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (CGHeartMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:CGHeartMsg) - } - - // @@protoc_insertion_point(class_scope:CGHeartMsg) - private static final CGHeartMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new CGHeartMsg(); - } - - public static CGHeartMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public CGHeartMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new CGHeartMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public CGHeartMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface CGLoginSuccessMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:CGLoginSuccessMsg) - com.google.protobuf.MessageOrBuilder { - - /** - * optional int64 playerId = 1; - */ - long getPlayerId(); - } - /** - * Protobuf type {@code CGLoginSuccessMsg} - */ - public static final class CGLoginSuccessMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:CGLoginSuccessMsg) - CGLoginSuccessMsgOrBuilder { - // Use CGLoginSuccessMsg.newBuilder() to construct. - private CGLoginSuccessMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private CGLoginSuccessMsg() { - playerId_ = 0L; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private CGLoginSuccessMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 8: { - - playerId_ = input.readInt64(); - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGLoginSuccessMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGLoginSuccessMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGLoginSuccessMsg.class, Builder.class); - } - - public static final int PLAYERID_FIELD_NUMBER = 1; - private long playerId_; - /** - * optional int64 playerId = 1; - */ - public long getPlayerId() { - return playerId_; - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (playerId_ != 0L) { - output.writeInt64(1, playerId_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (playerId_ != 0L) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(1, playerId_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof CGLoginSuccessMsg)) { - return super.equals(obj); - } - CGLoginSuccessMsg other = (CGLoginSuccessMsg) obj; - - boolean result = true; - result = result && (getPlayerId() - == other.getPlayerId()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + PLAYERID_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getPlayerId()); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static CGLoginSuccessMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGLoginSuccessMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGLoginSuccessMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGLoginSuccessMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGLoginSuccessMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGLoginSuccessMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static CGLoginSuccessMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static CGLoginSuccessMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static CGLoginSuccessMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGLoginSuccessMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(CGLoginSuccessMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code CGLoginSuccessMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:CGLoginSuccessMsg) - CGLoginSuccessMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGLoginSuccessMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGLoginSuccessMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGLoginSuccessMsg.class, Builder.class); - } - - // Construct using ProtoMsg.CGLoginSuccessMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - playerId_ = 0L; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_CGLoginSuccessMsg_descriptor; - } - - public CGLoginSuccessMsg getDefaultInstanceForType() { - return CGLoginSuccessMsg.getDefaultInstance(); - } - - public CGLoginSuccessMsg build() { - CGLoginSuccessMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public CGLoginSuccessMsg buildPartial() { - CGLoginSuccessMsg result = new CGLoginSuccessMsg(this); - result.playerId_ = playerId_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof CGLoginSuccessMsg) { - return mergeFrom((CGLoginSuccessMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(CGLoginSuccessMsg other) { - if (other == CGLoginSuccessMsg.getDefaultInstance()) return this; - if (other.getPlayerId() != 0L) { - setPlayerId(other.getPlayerId()); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - CGLoginSuccessMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (CGLoginSuccessMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private long playerId_ ; - /** - * optional int64 playerId = 1; - */ - public long getPlayerId() { - return playerId_; - } - /** - * optional int64 playerId = 1; - */ - public Builder setPlayerId(long value) { - - playerId_ = value; - onChanged(); - return this; - } - /** - * optional int64 playerId = 1; - */ - public Builder clearPlayerId() { - - playerId_ = 0L; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:CGLoginSuccessMsg) - } - - // @@protoc_insertion_point(class_scope:CGLoginSuccessMsg) - private static final CGLoginSuccessMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new CGLoginSuccessMsg(); - } - - public static CGLoginSuccessMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public CGLoginSuccessMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new CGLoginSuccessMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public CGLoginSuccessMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface GCLoginSuccessMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:GCLoginSuccessMsg) - com.google.protobuf.MessageOrBuilder { - } - /** - * Protobuf type {@code GCLoginSuccessMsg} - */ - public static final class GCLoginSuccessMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:GCLoginSuccessMsg) - GCLoginSuccessMsgOrBuilder { - // Use GCLoginSuccessMsg.newBuilder() to construct. - private GCLoginSuccessMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private GCLoginSuccessMsg() { - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private GCLoginSuccessMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCLoginSuccessMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCLoginSuccessMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCLoginSuccessMsg.class, Builder.class); - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof GCLoginSuccessMsg)) { - return super.equals(obj); - } - GCLoginSuccessMsg other = (GCLoginSuccessMsg) obj; - - boolean result = true; - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static GCLoginSuccessMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCLoginSuccessMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCLoginSuccessMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCLoginSuccessMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCLoginSuccessMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCLoginSuccessMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static GCLoginSuccessMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static GCLoginSuccessMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static GCLoginSuccessMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCLoginSuccessMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(GCLoginSuccessMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code GCLoginSuccessMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:GCLoginSuccessMsg) - GCLoginSuccessMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCLoginSuccessMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCLoginSuccessMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCLoginSuccessMsg.class, Builder.class); - } - - // Construct using ProtoMsg.GCLoginSuccessMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_GCLoginSuccessMsg_descriptor; - } - - public GCLoginSuccessMsg getDefaultInstanceForType() { - return GCLoginSuccessMsg.getDefaultInstance(); - } - - public GCLoginSuccessMsg build() { - GCLoginSuccessMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public GCLoginSuccessMsg buildPartial() { - GCLoginSuccessMsg result = new GCLoginSuccessMsg(this); - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof GCLoginSuccessMsg) { - return mergeFrom((GCLoginSuccessMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(GCLoginSuccessMsg other) { - if (other == GCLoginSuccessMsg.getDefaultInstance()) return this; - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - GCLoginSuccessMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (GCLoginSuccessMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:GCLoginSuccessMsg) - } - - // @@protoc_insertion_point(class_scope:GCLoginSuccessMsg) - private static final GCLoginSuccessMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new GCLoginSuccessMsg(); - } - - public static GCLoginSuccessMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public GCLoginSuccessMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new GCLoginSuccessMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public GCLoginSuccessMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface PlayerOrBuilder extends - // @@protoc_insertion_point(interface_extends:Player) - com.google.protobuf.MessageOrBuilder { - - /** - * optional int64 id = 1; - */ - long getId(); - - /** - * optional string account = 2; - */ - String getAccount(); - /** - * optional string account = 2; - */ - com.google.protobuf.ByteString - getAccountBytes(); - - /** - * optional string pwd = 3; - */ - String getPwd(); - /** - * optional string pwd = 3; - */ - com.google.protobuf.ByteString - getPwdBytes(); - } - /** - * Protobuf type {@code Player} - */ - public static final class Player extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:Player) - PlayerOrBuilder { - // Use Player.newBuilder() to construct. - private Player(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private Player() { - id_ = 0L; - account_ = ""; - pwd_ = ""; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private Player( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 8: { - - id_ = input.readInt64(); - break; - } - case 18: { - String s = input.readStringRequireUtf8(); - - account_ = s; - break; - } - case 26: { - String s = input.readStringRequireUtf8(); - - pwd_ = s; - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_Player_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_Player_fieldAccessorTable - .ensureFieldAccessorsInitialized( - Player.class, Builder.class); - } - - public interface currencyOrBuilder extends - // @@protoc_insertion_point(interface_extends:Player.currency) - com.google.protobuf.MessageOrBuilder { - - /** - * optional int64 gold = 1; - */ - long getGold(); - - /** - * optional int64 wood = 2; - */ - long getWood(); - } - /** - * Protobuf type {@code Player.currency} - */ - public static final class currency extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:Player.currency) - currencyOrBuilder { - // Use currency.newBuilder() to construct. - private currency(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private currency() { - gold_ = 0L; - wood_ = 0L; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private currency( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 8: { - - gold_ = input.readInt64(); - break; - } - case 16: { - - wood_ = input.readInt64(); - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_Player_currency_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_Player_currency_fieldAccessorTable - .ensureFieldAccessorsInitialized( - currency.class, Builder.class); - } - - public static final int GOLD_FIELD_NUMBER = 1; - private long gold_; - /** - * optional int64 gold = 1; - */ - public long getGold() { - return gold_; - } - - public static final int WOOD_FIELD_NUMBER = 2; - private long wood_; - /** - * optional int64 wood = 2; - */ - public long getWood() { - return wood_; - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (gold_ != 0L) { - output.writeInt64(1, gold_); - } - if (wood_ != 0L) { - output.writeInt64(2, wood_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (gold_ != 0L) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(1, gold_); - } - if (wood_ != 0L) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(2, wood_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof currency)) { - return super.equals(obj); - } - currency other = (currency) obj; - - boolean result = true; - result = result && (getGold() - == other.getGold()); - result = result && (getWood() - == other.getWood()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + GOLD_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getGold()); - hash = (37 * hash) + WOOD_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getWood()); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static currency parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static currency parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static currency parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static currency parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static currency parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static currency parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static currency parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static currency parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static currency parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static currency parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(currency prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code Player.currency} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:Player.currency) - currencyOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_Player_currency_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_Player_currency_fieldAccessorTable - .ensureFieldAccessorsInitialized( - currency.class, Builder.class); - } - - // Construct using ProtoMsg.Player.currency.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - gold_ = 0L; - - wood_ = 0L; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_Player_currency_descriptor; - } - - public currency getDefaultInstanceForType() { - return currency.getDefaultInstance(); - } - - public currency build() { - currency result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public currency buildPartial() { - currency result = new currency(this); - result.gold_ = gold_; - result.wood_ = wood_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof currency) { - return mergeFrom((currency)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(currency other) { - if (other == currency.getDefaultInstance()) return this; - if (other.getGold() != 0L) { - setGold(other.getGold()); - } - if (other.getWood() != 0L) { - setWood(other.getWood()); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - currency parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (currency) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private long gold_ ; - /** - * optional int64 gold = 1; - */ - public long getGold() { - return gold_; - } - /** - * optional int64 gold = 1; - */ - public Builder setGold(long value) { - - gold_ = value; - onChanged(); - return this; - } - /** - * optional int64 gold = 1; - */ - public Builder clearGold() { - - gold_ = 0L; - onChanged(); - return this; - } - - private long wood_ ; - /** - * optional int64 wood = 2; - */ - public long getWood() { - return wood_; - } - /** - * optional int64 wood = 2; - */ - public Builder setWood(long value) { - - wood_ = value; - onChanged(); - return this; - } - /** - * optional int64 wood = 2; - */ - public Builder clearWood() { - - wood_ = 0L; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:Player.currency) - } - - // @@protoc_insertion_point(class_scope:Player.currency) - private static final currency DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new currency(); - } - - public static currency getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public currency parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new currency(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public currency getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public static final int ID_FIELD_NUMBER = 1; - private long id_; - /** - * optional int64 id = 1; - */ - public long getId() { - return id_; - } - - public static final int ACCOUNT_FIELD_NUMBER = 2; - private volatile Object account_; - /** - * optional string account = 2; - */ - public String getAccount() { - Object ref = account_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - account_ = s; - return s; - } - } - /** - * optional string account = 2; - */ - public com.google.protobuf.ByteString - getAccountBytes() { - Object ref = account_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - account_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - public static final int PWD_FIELD_NUMBER = 3; - private volatile Object pwd_; - /** - * optional string pwd = 3; - */ - public String getPwd() { - Object ref = pwd_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - pwd_ = s; - return s; - } - } - /** - * optional string pwd = 3; - */ - public com.google.protobuf.ByteString - getPwdBytes() { - Object ref = pwd_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - pwd_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (id_ != 0L) { - output.writeInt64(1, id_); - } - if (!getAccountBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 2, account_); - } - if (!getPwdBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 3, pwd_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (id_ != 0L) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(1, id_); - } - if (!getAccountBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, account_); - } - if (!getPwdBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, pwd_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof Player)) { - return super.equals(obj); - } - Player other = (Player) obj; - - boolean result = true; - result = result && (getId() - == other.getId()); - result = result && getAccount() - .equals(other.getAccount()); - result = result && getPwd() - .equals(other.getPwd()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + ID_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getId()); - hash = (37 * hash) + ACCOUNT_FIELD_NUMBER; - hash = (53 * hash) + getAccount().hashCode(); - hash = (37 * hash) + PWD_FIELD_NUMBER; - hash = (53 * hash) + getPwd().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static Player parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static Player parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static Player parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static Player parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static Player parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static Player parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static Player parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static Player parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static Player parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static Player parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(Player prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code Player} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:Player) - PlayerOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_Player_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_Player_fieldAccessorTable - .ensureFieldAccessorsInitialized( - Player.class, Builder.class); - } - - // Construct using ProtoMsg.Player.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - id_ = 0L; - - account_ = ""; - - pwd_ = ""; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_Player_descriptor; - } - - public Player getDefaultInstanceForType() { - return Player.getDefaultInstance(); - } - - public Player build() { - Player result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public Player buildPartial() { - Player result = new Player(this); - result.id_ = id_; - result.account_ = account_; - result.pwd_ = pwd_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof Player) { - return mergeFrom((Player)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(Player other) { - if (other == Player.getDefaultInstance()) return this; - if (other.getId() != 0L) { - setId(other.getId()); - } - if (!other.getAccount().isEmpty()) { - account_ = other.account_; - onChanged(); - } - if (!other.getPwd().isEmpty()) { - pwd_ = other.pwd_; - onChanged(); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Player parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (Player) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private long id_ ; - /** - * optional int64 id = 1; - */ - public long getId() { - return id_; - } - /** - * optional int64 id = 1; - */ - public Builder setId(long value) { - - id_ = value; - onChanged(); - return this; - } - /** - * optional int64 id = 1; - */ - public Builder clearId() { - - id_ = 0L; - onChanged(); - return this; - } - - private Object account_ = ""; - /** - * optional string account = 2; - */ - public String getAccount() { - Object ref = account_; - if (!(ref instanceof String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - account_ = s; - return s; - } else { - return (String) ref; - } - } - /** - * optional string account = 2; - */ - public com.google.protobuf.ByteString - getAccountBytes() { - Object ref = account_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - account_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string account = 2; - */ - public Builder setAccount( - String value) { - if (value == null) { - throw new NullPointerException(); - } - - account_ = value; - onChanged(); - return this; - } - /** - * optional string account = 2; - */ - public Builder clearAccount() { - - account_ = getDefaultInstance().getAccount(); - onChanged(); - return this; - } - /** - * optional string account = 2; - */ - public Builder setAccountBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - account_ = value; - onChanged(); - return this; - } - - private Object pwd_ = ""; - /** - * optional string pwd = 3; - */ - public String getPwd() { - Object ref = pwd_; - if (!(ref instanceof String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - pwd_ = s; - return s; - } else { - return (String) ref; - } - } - /** - * optional string pwd = 3; - */ - public com.google.protobuf.ByteString - getPwdBytes() { - Object ref = pwd_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - pwd_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string pwd = 3; - */ - public Builder setPwd( - String value) { - if (value == null) { - throw new NullPointerException(); - } - - pwd_ = value; - onChanged(); - return this; - } - /** - * optional string pwd = 3; - */ - public Builder clearPwd() { - - pwd_ = getDefaultInstance().getPwd(); - onChanged(); - return this; - } - /** - * optional string pwd = 3; - */ - public Builder setPwdBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - pwd_ = value; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:Player) - } - - // @@protoc_insertion_point(class_scope:Player) - private static final Player DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new Player(); - } - - public static Player getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public Player parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new Player(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public Player getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_MsgHeader_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_MsgHeader_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_GCHeartMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_GCHeartMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_CGHeartMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_CGHeartMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_CGLoginSuccessMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_CGLoginSuccessMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_GCLoginSuccessMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_GCLoginSuccessMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_Player_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_Player_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_Player_currency_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_Player_currency_fieldAccessorTable; - - public static com.google.protobuf.Descriptors.FileDescriptor - getDescriptor() { - return descriptor; - } - private static com.google.protobuf.Descriptors.FileDescriptor - descriptor; - static { - String[] descriptorData = { - "\n\014Entity.proto\"w\n\tMsgHeader\022\017\n\007msgType\030\001" + - " \001(\t\022\014\n\004uuid\030\002 \001(\t\022\021\n\ttimestamp\030\003 \001(\003\022\023\n" + - "\013serviceName\030\004 \001(\t\022\021\n\tchannelId\030\005 \001(\t\022\020\n" + - "\010playerId\030\006 \001(\003\"\014\n\nGCHeartMsg\"\014\n\nCGHeart" + - "Msg\"%\n\021CGLoginSuccessMsg\022\020\n\010playerId\030\001 \001" + - "(\003\"\023\n\021GCLoginSuccessMsg\"Z\n\006Player\022\n\n\002id\030" + - "\001 \001(\003\022\017\n\007account\030\002 \001(\t\022\013\n\003pwd\030\003 \001(\t\032&\n\010c" + - "urrency\022\014\n\004gold\030\001 \001(\003\022\014\n\004wood\030\002 \001(\003B\nB\010P" + - "rotoMsgb\006proto3" - }; - com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = - new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { - public com.google.protobuf.ExtensionRegistry assignDescriptors( - com.google.protobuf.Descriptors.FileDescriptor root) { - descriptor = root; - return null; - } - }; - com.google.protobuf.Descriptors.FileDescriptor - .internalBuildGeneratedFileFrom(descriptorData, - new com.google.protobuf.Descriptors.FileDescriptor[] { - }, assigner); - internal_static_MsgHeader_descriptor = - getDescriptor().getMessageTypes().get(0); - internal_static_MsgHeader_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_MsgHeader_descriptor, - new String[] { "MsgType", "Uuid", "Timestamp", "ServiceName", "ChannelId", "PlayerId", }); - internal_static_GCHeartMsg_descriptor = - getDescriptor().getMessageTypes().get(1); - internal_static_GCHeartMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_GCHeartMsg_descriptor, - new String[] { }); - internal_static_CGHeartMsg_descriptor = - getDescriptor().getMessageTypes().get(2); - internal_static_CGHeartMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_CGHeartMsg_descriptor, - new String[] { }); - internal_static_CGLoginSuccessMsg_descriptor = - getDescriptor().getMessageTypes().get(3); - internal_static_CGLoginSuccessMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_CGLoginSuccessMsg_descriptor, - new String[] { "PlayerId", }); - internal_static_GCLoginSuccessMsg_descriptor = - getDescriptor().getMessageTypes().get(4); - internal_static_GCLoginSuccessMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_GCLoginSuccessMsg_descriptor, - new String[] { }); - internal_static_Player_descriptor = - getDescriptor().getMessageTypes().get(5); - internal_static_Player_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_Player_descriptor, - new String[] { "Id", "Account", "Pwd", }); - internal_static_Player_currency_descriptor = - internal_static_Player_descriptor.getNestedTypes().get(0); - internal_static_Player_currency_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_Player_currency_descriptor, - new String[] { "Gold", "Wood", }); - } - - // @@protoc_insertion_point(outer_class_scope) -} diff --git a/mini-common/src/main/java/com/mini/common/utils/BeanUtils.java b/mini-common/src/main/java/com/mini/common/utils/BeanUtils.java deleted file mode 100644 index 622337f..0000000 --- a/mini-common/src/main/java/com/mini/common/utils/BeanUtils.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.mini.common.utils; - - -import lombok.extern.slf4j.Slf4j; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023/2/16 21:17 - * @Description: TODO - */ -@Slf4j -public class BeanUtils extends org.springframework.beans.BeanUtils { - - - /** - * 包装类和基本数据类型映射 - */ - private static Map, Class> primitiveAndWrap; - - private static Map, Class> wrapAndPrimitive; - - static { - primitiveAndWrap = new HashMap<>(); - wrapAndPrimitive = new HashMap<>(); - - primitiveAndWrap.put(byte.class, Byte.class); - primitiveAndWrap.put(short.class, Short.class); - primitiveAndWrap.put(int.class, Integer.class); - primitiveAndWrap.put(long.class, Long.class); - primitiveAndWrap.put(float.class, Float.class); - primitiveAndWrap.put(double.class, Double.class); - primitiveAndWrap.put(char.class, Character.class); - primitiveAndWrap.put(boolean.class, Boolean.class); - - primitiveAndWrap.entrySet().forEach(entry -> wrapAndPrimitive.put(entry.getValue(), entry.getKey())); - - - } - - public static V copy(T source, V target) { - copyProperties(source, target); - return target; - } - - /** - * ProtoBuf 对象转 javaBean - * @param source - * @param target - * @param - * @param - * @return - */ - public static V copyProto2Entity(T source, V target) { - - for (Field field : target.getClass().getDeclaredFields()) { - - try { - target.getClass() - .getMethod("set" + StringUtils.firstChar2UpperCase(field.getName()), field.getType()) - .invoke(target, - source.getClass() - .getMethod("get" + StringUtils.firstChar2UpperCase(field.getName())) - .invoke(source)); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { -// log.warn("[{}] 转为 [{}] 时,找不到方法:[{}]", -// source.getClass().getName(), -// target.getClass().getName(), -// "get" + StringUtils.firstChar2UpperCase(field.getName()) -// ); - } - - } - - return target; - - } - - /** - * javaBean 对象转 ProtoBuf,Protobuf 使用 builder 进行对象构造 - * @param source - * @param target - * @param - * @param - * @return - */ - public static V copy2ProtoBuilder(T source, Class target) { - - try { - - Constructor dc = target.getDeclaredConstructor(); - dc.setAccessible(true); - Constructor builderCtr = dc.newInstance() - .getClass() - .getDeclaredMethod("newBuilder") - .invoke(target).getClass() - .getDeclaredConstructor(); - - builderCtr.setAccessible(true); - Object builder = builderCtr.newInstance(); - - for (Field field : source.getClass().getDeclaredFields()) { - - try { - Method setterMethod = builder - .getClass() - .getDeclaredMethod("set" + StringUtils.firstChar2UpperCase(field.getName()), - // 包装类转基础数据类型, protobuf 的 set 使用的是基本数据类型 - wrapAndPrimitive.get(field.getType()) != null ? wrapAndPrimitive.get(field.getType()) : field.getType()); - - if (setterMethod != null) { - field.setAccessible(true); - setterMethod.invoke(builder, field.get(source)); - } - } catch (NoSuchMethodException e) { -// log.warn("[{}] 转为 [{}] 时,找不到方法:[{}]", -// source.getClass().getName(), -// target.getClass().getName(), -// "get" + StringUtils.firstChar2UpperCase(field.getName()) -// ); - } catch (IllegalArgumentException e) { -// log.warn("[{}] 转为 [{}] 时参数设置失败,[{}] 参数为 null" , -// source.getClass().getName(), -// target.getClass().getName(), -// "get" + StringUtils.firstChar2UpperCase(field.getName()) -// ); - } catch (InvocationTargetException e) { - // protobuf 内部不允许值为 null - } - - } - - return (V) builder.getClass().getDeclaredMethod("build").invoke(builder); - - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } - - return null; - - } - -} diff --git a/mini-common/src/main/java/com/mini/common/utils/Wrap.java b/mini-common/src/main/java/com/mini/common/utils/Wrap.java deleted file mode 100644 index 4cbe785..0000000 --- a/mini-common/src/main/java/com/mini/common/utils/Wrap.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.mini.common.utils; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; - -/** - * @author: yumi - * @date: 2023/2/18 15:20 - * @Description: TODO - */ -public class Wrap { - - public static LambdaQueryWrapper lbq() { - return new LambdaQueryWrapper<>(); - } - - public static LambdaUpdateWrapper lbu() { - return new LambdaUpdateWrapper<>(); - } - -} diff --git a/mini-common/src/main/proto/Entity.proto b/mini-common/src/main/proto/Entity.proto deleted file mode 100644 index 3bf1f53..0000000 --- a/mini-common/src/main/proto/Entity.proto +++ /dev/null @@ -1,27 +0,0 @@ -syntax = "proto3"; -option java_outer_classname = "ProtoMsg"; - -message MsgHeader { - string msgType = 1; - string uuid = 2; - int64 timestamp = 3; - string serviceName = 4; - string channelId = 5; - int64 playerId = 6; -} - -message GCHeartMsg { - -} - -message CGHeartMsg { - -} - -message CGLoginSuccessMsg { - int64 playerId = 1; -} - -message GCLoginSuccessMsg { -} - diff --git a/mini-game/pom.xml b/mini-game/pom.xml deleted file mode 100644 index 70c226b..0000000 --- a/mini-game/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - mini - com.mini - 0.0.1-SNAPSHOT - - 4.0.0 - - mini-game - - - - - com.mini - mini-common - - - - org.springframework.boot - spring-boot-starter-test - - - - org.springframework.boot - spring-boot-starter-data-redis - - - - com.baomidou - mybatis-plus-boot-starter - - - - - - - - kr.motd.maven - os-maven-plugin - 1.4.1.Final - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.xolstice.maven.plugins - protobuf-maven-plugin - 0.5.0 - - - com.google.protobuf:protoc:3.1.0:exe:${os.detected.classifier} - - grpc-java - - io.grpc:protoc-gen-grpc-java:1.29.0:exe:${os.detected.classifier} - - - - - - compile - compile-custom - - - - - - - - \ No newline at end of file diff --git a/mini-game/src/test/java/com/mini/game/GameTest.java b/mini-game/src/test/java/com/mini/game/GameTest.java deleted file mode 100644 index 980aae8..0000000 --- a/mini-game/src/test/java/com/mini/game/GameTest.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.mini.game; - -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.alibaba.fastjson2.TypeReference; -import com.mini.common.message.BaseMessage; -import com.mini.common.utils.Wrap; -import com.mini.game.pojo.blob.BaseInfo; -import com.mini.game.pojo.blob.PlayerCurrency; -import com.mini.game.pojo.blob.WarOrder; -import com.mini.game.pojo.entity.Player; -import com.mini.game.service.PlayerService; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -import java.util.Map; -import java.util.*; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.LinkedBlockingQueue; - -/** - * @author: yumi - * @date: 2023-03-13 11:43 - * @Description: TODO - */ -@SpringBootTest -public class GameTest { - - @Autowired - private PlayerService playerService; - - @Test - void test1() { -// PlayerCurrency playerCurrency = new PlayerCurrency(); -// playerCurrency.setGold(100000L); -// playerCurrency.setWood(0L); -// playerService.update(Wrap.lbu().set(Player::getCurrency, playerCurrency)); - - playerService.list().forEach(System.out::println); - } - - @Test - void test2() throws InterruptedException { - BlockingQueue blockingQueue = new LinkedBlockingQueue<>(); - System.out.println(blockingQueue.poll()); - blockingQueue.put("11"); - System.out.println(blockingQueue.poll()); - } - - - @Test - void test4() { - List list = playerService.list(); - Player player = list.get(0); - - WarOrder warOrder = new WarOrder(); - warOrder.setCurPoint(0L); - warOrder.setIsVip(false); - warOrder.setReceivePrizeId(new CopyOnWriteArrayList<>()); - Map map = new ConcurrentHashMap<>(); -// WarOrder.TaskInfo taskInfo = new WarOrder.TaskInfo(); -// taskInfo.setCurCompleteNum(0L); -// taskInfo.setCurCompleteTimes(0); -// taskInfo.setNextRefreshTime(); -// map.put(1L, taskInfo); - warOrder.setTaskInfoMap(map); - player.setWarOrder(warOrder); - player.setBaseInfo(new BaseInfo(new CopyOnWriteArrayList<>(), new ConcurrentHashMap<>())); - playerService.updateById(player); - System.out.println(); - } - -} diff --git a/mini-login/src/main/java/com/mini/login/server/LoginChannelInitializer.java b/mini-login/src/main/java/com/mini/login/server/LoginChannelInitializer.java deleted file mode 100644 index e6abd63..0000000 --- a/mini-login/src/main/java/com/mini/login/server/LoginChannelInitializer.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.mini.login.server; - -import com.mini.common.misc.GameChannelInitializer; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-02-24 17:56 - * @Description: TODO - */ -@Component -public class LoginChannelInitializer extends GameChannelInitializer { -} diff --git a/mini-client/pom.xml b/paradogs-client/pom.xml similarity index 67% rename from mini-client/pom.xml rename to paradogs-client/pom.xml index 9c885a4..3b31463 100644 --- a/mini-client/pom.xml +++ b/paradogs-client/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - mini - com.mini + paradogs + com.paradogs 0.0.1-SNAPSHOT 4.0.0 - mini-client + paradogs-client 8 @@ -18,12 +18,12 @@ - com.mini - mini-common + com.paradogs + paradogs-common - com.mini - mini-login + com.paradogs + paradogs-login diff --git a/mini-client/src/main/java/com/mini/client/ClientApplication.java b/paradogs-client/src/main/java/com/paradogs/client/ClientApplication.java similarity index 95% rename from mini-client/src/main/java/com/mini/client/ClientApplication.java rename to paradogs-client/src/main/java/com/paradogs/client/ClientApplication.java index 13b2c85..61aebfa 100644 --- a/mini-client/src/main/java/com/mini/client/ClientApplication.java +++ b/paradogs-client/src/main/java/com/paradogs/client/ClientApplication.java @@ -1,4 +1,4 @@ -package com.mini.client; +package com.paradogs.client; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; diff --git a/mini-client/src/main/java/com/mini/client/client/ApplicationRunner.java b/paradogs-client/src/main/java/com/paradogs/client/client/ApplicationRunner.java similarity index 93% rename from mini-client/src/main/java/com/mini/client/client/ApplicationRunner.java rename to paradogs-client/src/main/java/com/paradogs/client/client/ApplicationRunner.java index c36d1b5..e621011 100644 --- a/mini-client/src/main/java/com/mini/client/client/ApplicationRunner.java +++ b/paradogs-client/src/main/java/com/paradogs/client/client/ApplicationRunner.java @@ -1,4 +1,4 @@ -package com.mini.client.client; +package com.paradogs.client.client; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/mini-client/src/main/java/com/mini/client/client/ClientChannelInitializer.java b/paradogs-client/src/main/java/com/paradogs/client/client/ClientChannelInitializer.java similarity index 92% rename from mini-client/src/main/java/com/mini/client/client/ClientChannelInitializer.java rename to paradogs-client/src/main/java/com/paradogs/client/client/ClientChannelInitializer.java index b2a99b4..bdc9b12 100644 --- a/mini-client/src/main/java/com/mini/client/client/ClientChannelInitializer.java +++ b/paradogs-client/src/main/java/com/paradogs/client/client/ClientChannelInitializer.java @@ -1,12 +1,12 @@ -package com.mini.client.client; - -import com.mini.common.handler.BaseMessageHandler; -import com.mini.common.netty.Codec; -import com.mini.game.message.CGAttackMsg; -import com.mini.game.message.CGBuyGoodsMsg; -import com.mini.game.message.CGReceiveWarOrderPrizeMsg; -import com.mini.game.message.CGRechargeWarOrderVipMsg; -import com.mini.login.message.CGLoginMsg; +package com.paradogs.client.client; + +import com.paradogs.common.handler.BaseMessageHandler; +import com.paradogs.common.netty.Codec; +import com.paradogs.game.message.CGAttackMsg; +import com.paradogs.game.message.CGBuyGoodsMsg; +import com.paradogs.game.message.CGReceiveWarOrderPrizeMsg; +import com.paradogs.game.message.CGRechargeWarOrderVipMsg; +import com.paradogs.login.message.CGLoginMsg; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.channel.ChannelInitializer; diff --git a/mini-client/src/main/java/com/mini/client/client/ClientHeartDuplexHandler.java b/paradogs-client/src/main/java/com/paradogs/client/client/ClientHeartDuplexHandler.java similarity index 89% rename from mini-client/src/main/java/com/mini/client/client/ClientHeartDuplexHandler.java rename to paradogs-client/src/main/java/com/paradogs/client/client/ClientHeartDuplexHandler.java index 26021eb..cfd48f9 100644 --- a/mini-client/src/main/java/com/mini/client/client/ClientHeartDuplexHandler.java +++ b/paradogs-client/src/main/java/com/paradogs/client/client/ClientHeartDuplexHandler.java @@ -1,6 +1,6 @@ -package com.mini.client.client; +package com.paradogs.client.client; -import com.mini.common.message.CGHeartMsg; +import com.paradogs.common.message.CGHeartMsg; import io.netty.channel.ChannelDuplexHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.timeout.IdleState; diff --git a/mini-client/src/main/java/com/mini/client/client/GameClient.java b/paradogs-client/src/main/java/com/paradogs/client/client/GameClient.java similarity index 93% rename from mini-client/src/main/java/com/mini/client/client/GameClient.java rename to paradogs-client/src/main/java/com/paradogs/client/client/GameClient.java index bfe5d29..0f81ecc 100644 --- a/mini-client/src/main/java/com/mini/client/client/GameClient.java +++ b/paradogs-client/src/main/java/com/paradogs/client/client/GameClient.java @@ -1,6 +1,5 @@ -package com.mini.client.client; +package com.paradogs.client.client; -import com.mini.common.misc.GameChannelInitializer; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.nio.NioEventLoopGroup; diff --git a/mini-client/src/main/java/com/mini/client/handler/GCAttackMsgHandler.java b/paradogs-client/src/main/java/com/paradogs/client/handler/GCAttackMsgHandler.java similarity index 75% rename from mini-client/src/main/java/com/mini/client/handler/GCAttackMsgHandler.java rename to paradogs-client/src/main/java/com/paradogs/client/handler/GCAttackMsgHandler.java index 5cb2ee6..b69c7cc 100644 --- a/mini-client/src/main/java/com/mini/client/handler/GCAttackMsgHandler.java +++ b/paradogs-client/src/main/java/com/paradogs/client/handler/GCAttackMsgHandler.java @@ -1,7 +1,7 @@ -package com.mini.client.handler; +package com.paradogs.client.handler; -import com.mini.common.handler.BaseHandler; -import com.mini.game.message.GCAttackMsg; +import com.paradogs.common.handler.BaseHandler; +import com.paradogs.game.message.GCAttackMsg; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/mini-client/src/main/java/com/mini/client/handler/GCBuyGoodsMsgHandler.java b/paradogs-client/src/main/java/com/paradogs/client/handler/GCBuyGoodsMsgHandler.java similarity index 74% rename from mini-client/src/main/java/com/mini/client/handler/GCBuyGoodsMsgHandler.java rename to paradogs-client/src/main/java/com/paradogs/client/handler/GCBuyGoodsMsgHandler.java index f8596b6..e3f81b3 100644 --- a/mini-client/src/main/java/com/mini/client/handler/GCBuyGoodsMsgHandler.java +++ b/paradogs-client/src/main/java/com/paradogs/client/handler/GCBuyGoodsMsgHandler.java @@ -1,7 +1,7 @@ -package com.mini.client.handler; +package com.paradogs.client.handler; -import com.mini.common.handler.BaseHandler; -import com.mini.game.message.GCBuyGoodsMsg; +import com.paradogs.common.handler.BaseHandler; +import com.paradogs.game.message.GCBuyGoodsMsg; import io.netty.channel.Channel; import org.springframework.stereotype.Component; diff --git a/mini-client/src/main/java/com/mini/client/handler/GCLoginMsgHandler.java b/paradogs-client/src/main/java/com/paradogs/client/handler/GCLoginMsgHandler.java similarity index 70% rename from mini-client/src/main/java/com/mini/client/handler/GCLoginMsgHandler.java rename to paradogs-client/src/main/java/com/paradogs/client/handler/GCLoginMsgHandler.java index 7069de7..56b9921 100644 --- a/mini-client/src/main/java/com/mini/client/handler/GCLoginMsgHandler.java +++ b/paradogs-client/src/main/java/com/paradogs/client/handler/GCLoginMsgHandler.java @@ -1,10 +1,9 @@ -package com.mini.client.handler; +package com.paradogs.client.handler; -import com.mini.client.client.ClientChannelInitializer; -import com.mini.common.handler.BaseHandler; -import com.mini.login.message.GCLoginMsg; +import com.paradogs.client.client.ClientChannelInitializer; +import com.paradogs.common.handler.BaseHandler; +import com.paradogs.login.message.GCLoginMsg; import io.netty.channel.Channel; -import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/mini-client/src/main/java/com/mini/client/handler/GCReceiveWarOrderPrizeMsgHandler.java b/paradogs-client/src/main/java/com/paradogs/client/handler/GCReceiveWarOrderPrizeMsgHandler.java similarity index 68% rename from mini-client/src/main/java/com/mini/client/handler/GCReceiveWarOrderPrizeMsgHandler.java rename to paradogs-client/src/main/java/com/paradogs/client/handler/GCReceiveWarOrderPrizeMsgHandler.java index b657a47..99bef60 100644 --- a/mini-client/src/main/java/com/mini/client/handler/GCReceiveWarOrderPrizeMsgHandler.java +++ b/paradogs-client/src/main/java/com/paradogs/client/handler/GCReceiveWarOrderPrizeMsgHandler.java @@ -1,7 +1,7 @@ -package com.mini.client.handler; +package com.paradogs.client.handler; -import com.mini.common.handler.BaseHandler; -import com.mini.game.message.GCReceiveWarOrderPrizeMsg; +import com.paradogs.common.handler.BaseHandler; +import com.paradogs.game.message.GCReceiveWarOrderPrizeMsg; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -13,7 +13,7 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component -public class GCReceiveWarOrderPrizeMsgHandler implements BaseHandler { +public class GCReceiveWarOrderPrizeMsgHandler implements BaseHandler { @Override public void handler(Channel channel, GCReceiveWarOrderPrizeMsg msg) { diff --git a/mini-client/src/main/java/com/mini/client/handler/GCRechargeWarOrderVipMsgHandler.java b/paradogs-client/src/main/java/com/paradogs/client/handler/GCRechargeWarOrderVipMsgHandler.java similarity index 75% rename from mini-client/src/main/java/com/mini/client/handler/GCRechargeWarOrderVipMsgHandler.java rename to paradogs-client/src/main/java/com/paradogs/client/handler/GCRechargeWarOrderVipMsgHandler.java index f839ab4..51f6b61 100644 --- a/mini-client/src/main/java/com/mini/client/handler/GCRechargeWarOrderVipMsgHandler.java +++ b/paradogs-client/src/main/java/com/paradogs/client/handler/GCRechargeWarOrderVipMsgHandler.java @@ -1,7 +1,7 @@ -package com.mini.client.handler; +package com.paradogs.client.handler; -import com.mini.common.handler.BaseHandler; -import com.mini.game.message.GCRechargeWarOrderVipMsg; +import com.paradogs.common.handler.BaseHandler; +import com.paradogs.game.message.GCRechargeWarOrderVipMsg; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/mini-client/src/main/resources/application.yml b/paradogs-client/src/main/resources/application.yml similarity index 100% rename from mini-client/src/main/resources/application.yml rename to paradogs-client/src/main/resources/application.yml diff --git a/paradogs-common/paradogs-common-client-starter/pom.xml b/paradogs-common/paradogs-common-client-starter/pom.xml new file mode 100644 index 0000000..d2f5237 --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/pom.xml @@ -0,0 +1,26 @@ + + + + paradogs-common + com.paradogs + 0.0.1-SNAPSHOT + + 4.0.0 + + paradogs-common-client-starter + + + 8 + 8 + + + + + com.paradogs + paradogs-common-core + + + + \ No newline at end of file diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java new file mode 100644 index 0000000..a076b7c --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java @@ -0,0 +1,70 @@ +package com.paradogs.common.client; + +import com.paradogs.common.client.events.ClientStartEvent; +import com.paradogs.common.core.utils.SpringUtils; +import io.netty.bootstrap.Bootstrap; +import io.netty.channel.Channel; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.nio.NioSocketChannel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/7/31 22:36 + * @Description: TODO + */ +@Slf4j +@Component +public class Client { + + /** + * 待优化:可换成集合,因为有可能连接多个 server + */ + @Autowired + private ClientProperties clientConfig; + + @Autowired + private ChannelInitializer channelInitializer; + + private Bootstrap client; + + /** + * 启动 netty 服务器 + */ + @Async + public void start() { + + NioEventLoopGroup worker = new NioEventLoopGroup(); + + try { + long startTime = System.currentTimeMillis(); + this.client = new Bootstrap() + .group(worker) + .channel(NioSocketChannel.class) + .handler(channelInitializer); + + + Channel channel = client.connect(clientConfig.getHost(), clientConfig.getPort()).sync().channel(); + + log.info("{}:{} connect success", clientConfig.getHost(), clientConfig.getPort()); + SpringUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); + + channel.closeFuture().sync(); + + } catch (InterruptedException e) { + log.error("server error:[{}]", e.getMessage()); + } finally { + // 关闭服务器资源 + worker.shutdownGracefully(); + log.info("[{}] 服务器停止", this.getClass().getSimpleName()); + } + + } + +} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java new file mode 100644 index 0000000..2416a61 --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java @@ -0,0 +1,30 @@ +package com.paradogs.common.client; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.context.annotation.Scope; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/7/31 23:29 + * @Description: TODO + */ +@Slf4j +@Component +@Scope("prototype") +@EnableAsync +public class ClientLauncher implements ApplicationRunner { + + @Autowired + private Client client; + + @Override + public void run(ApplicationArguments args) throws Exception { + client.start(); + } + +} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java new file mode 100644 index 0000000..df5e323 --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java @@ -0,0 +1,27 @@ +package com.paradogs.common.client; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/7/31 22:39 + * @Description: TODO + */ +@Data +@Component +@ConfigurationProperties("paradogs.client") +public class ClientProperties { + + /** + * 主机 ip + */ + private String host; + + /** + * 端口号 + */ + private int port; + +} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/events/ClientStartEvent.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/events/ClientStartEvent.java new file mode 100644 index 0000000..caf686f --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/events/ClientStartEvent.java @@ -0,0 +1,14 @@ +package com.paradogs.common.client.events; + +import com.paradogs.common.core.events.BaseEvent; + +/** + * @author: yumi + * @date: 2023/7/31 23:11 + * @Description: TODO + */ +public class ClientStartEvent extends BaseEvent { + public ClientStartEvent(Object source) { + super(source); + } +} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..2e5a934 --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,5 @@ +com.paradogs.common.client.Client +com.paradogs.common.client.ClientProperties +com.paradogs.common.client.ClientLauncher + + diff --git a/paradogs-common/paradogs-common-core/pom.xml b/paradogs-common/paradogs-common-core/pom.xml new file mode 100644 index 0000000..92bfeb6 --- /dev/null +++ b/paradogs-common/paradogs-common-core/pom.xml @@ -0,0 +1,53 @@ + + + + paradogs-common + com.paradogs + 0.0.1-SNAPSHOT + + 4.0.0 + + paradogs-common-core + + + 8 + 8 + + + + + org.projectlombok + lombok + + + + com.baidu + jprotobuf + + + + io.netty + netty-all + + + + + org.springframework.boot + spring-boot-starter + + + + com.alibaba + easyexcel + + + + + + + + + + \ No newline at end of file diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgController.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgController.java new file mode 100644 index 0000000..40b8edf --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgController.java @@ -0,0 +1,20 @@ +package com.paradogs.common.core.annoations; + +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Controller; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/7/27 11:58 + * @Description: TODO + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Controller +public @interface PdgController { +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java new file mode 100644 index 0000000..a20463b --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java @@ -0,0 +1,22 @@ +package com.paradogs.common.core.annoations; + +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/7/27 9:47 + * @Description: TODO + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@ProtobufClass +public @interface PdgMsg { + + int value(); + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsgMapping.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsgMapping.java new file mode 100644 index 0000000..74391ff --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsgMapping.java @@ -0,0 +1,26 @@ +package com.paradogs.common.core.annoations; + +import com.paradogs.common.core.message.BaseMsg; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/8/1 15:19 + * @Description: TODO + * 根据消息 class 映射找到对应的处理方法 + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface PdgMsgMapping { + + /** + * 要处理的类型 + * @return + */ + Class value(); + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/BaseEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/BaseEvent.java new file mode 100644 index 0000000..05ebedf --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/BaseEvent.java @@ -0,0 +1,36 @@ +package com.paradogs.common.core.events; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; + +import java.time.LocalDateTime; +import java.util.UUID; + +/** + * @author: yumi + * @date: 2023/7/31 22:00 + * @Description: TODO + */ +@Getter +@Setter +@ToString +public class BaseEvent extends ApplicationEvent { + + /** + * 唯一 ID + */ + private String id; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + public BaseEvent(Object source) { + super(source); + this.id = UUID.randomUUID().toString(); + this.createTime = LocalDateTime.now(); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java new file mode 100644 index 0000000..4d3b0ba --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java @@ -0,0 +1,30 @@ +package com.paradogs.common.core.events; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import org.springframework.context.ApplicationEvent; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/7/26 16:06 + * @Description: 请求 - 响应类型消息的同步和异步调用处理 + */ +@Getter +@Setter +@ToString +@Component +public class SyncMsgEvent extends BaseEvent { + + /** + * 响应消息对应的请求消息 ID + */ + private int requestMsgId; + +// private BaseMsg + + public SyncMsgEvent(int requestMsgId) { + super(requestMsgId); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/listener/PdgEventListener.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/listener/PdgEventListener.java new file mode 100644 index 0000000..46353db --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/listener/PdgEventListener.java @@ -0,0 +1,48 @@ +package com.paradogs.common.core.events.listener; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; +import com.paradogs.common.core.events.SyncMsgEvent; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.concurrent.Callable; + +/** + * @author: yumi + * @date: 2023/7/26 16:30 + * @Description: TODO + */ +@Slf4j +@Component +public class PdgEventListener { + + /** + * 等待同步的请求消息 + */ + private Map waitSyncReqMsg = new LinkedHashMap<>(); + + /** + * 请求 - 响应类型的消息,进行请求消息的同步,将响应值给请求消息并执行回调 + * @param event + */ + @EventListener(SyncMsgEvent.class) + public void onSyncMsgEvent(SyncMsgEvent event) { + try { + Callable callable = waitSyncReqMsg.get(event.getRequestMsgId()); + if (callable == null) { + log.warn("MsgId [{}] 未找到,无法执行回调", event.getRequestMsgId()); + return; + } + // 执行回调 + callable.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + // 移除等待同步记录 + waitSyncReqMsg.remove(event.getRequestMsgId()); + } + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java new file mode 100644 index 0000000..cb2d8aa --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java @@ -0,0 +1,64 @@ +package com.paradogs.common.core.message; + +import com.baidu.bjf.remoting.protobuf.Codec; +import com.baidu.bjf.remoting.protobuf.FieldType; +import com.baidu.bjf.remoting.protobuf.ProtobufProxy; +import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +import com.paradogs.common.core.utils.BeanUtils; +import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.ProtoUtils; +import io.netty.buffer.ByteBuf; +import lombok.Data; +import lombok.experimental.Accessors; +import lombok.extern.slf4j.Slf4j; + +import java.io.IOException; + +/** + * @author: yumi + * @date: 2023/2/15 21:12 + * @Description: 基础消息类,通过约定类名实现反射自动调用, + * this 在子类使用时会指向子类对象,从而实现子类不需要实现接口就能自动转换 + */ +//@Slf4j 不能加,jprotobuf 会自动解析所有属性 +@Data +@Accessors(chain = true) +@ProtobufClass +public class BaseMsg implements IMsgSerializable { + + @Protobuf(fieldType = FieldType.OBJECT, order = 1) + private MsgHeader msgHeader; + + + /** + * 序列化(编码) + * @param out + */ + @Override + public void serialization(ByteBuf out) { + + byte[] bytes = ProtoUtils.encode(this); + // 写入消息体 + out.writeBytes(bytes); + + } + + /** + * 反序列化(解码) + * @param in + */ + @Override + public void deserialization(ByteBuf in) { + + // 读取消息体 byte 数组 + byte[] bytes = new byte[in.readableBytes()]; + in.readBytes(bytes); + BaseMsg msg = ProtoUtils.decode(bytes, this.getClass()); + + // 将属性设置到类上 + BeanUtils.copyProperties(msg, this); + + } + +} diff --git a/mini-common/src/main/java/com/mini/common/message/CGHeartMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java similarity index 31% rename from mini-common/src/main/java/com/mini/common/message/CGHeartMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java index 71b74f0..b7d24ef 100644 --- a/mini-common/src/main/java/com/mini/common/message/CGHeartMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java @@ -1,14 +1,14 @@ -package com.mini.common.message; +package com.paradogs.common.core.message; import lombok.Data; -import org.springframework.stereotype.Component; + /** * @author: yumi - * @date: 2023-02-24 16:40 + * @date: 2023/2/15 21:15 * @Description: TODO */ @Data -@Component -public class CGHeartMsg extends BaseMessage { +public abstract class CGMsg extends BaseMsg { + } diff --git a/mini-common/src/main/java/com/mini/common/message/GCErrorMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java similarity index 41% rename from mini-common/src/main/java/com/mini/common/message/GCErrorMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java index 95fca27..0596ec4 100644 --- a/mini-common/src/main/java/com/mini/common/message/GCErrorMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java @@ -1,19 +1,22 @@ -package com.mini.common.message; +package com.paradogs.common.core.message; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +import com.paradogs.common.core.annoations.PdgMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * @author: yumi - * @date: 2023/2/18 19:11 + * @date: 2023/8/1 9:28 * @Description: TODO */ @Data @AllArgsConstructor @NoArgsConstructor -public class GCErrorMsg extends BaseMessage { +@PdgMsg(1) +public class CGTestMsg extends CGMsg { - private String errorMessage; + private String str; } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/DBTask.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/DBTask.java new file mode 100644 index 0000000..969e975 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/DBTask.java @@ -0,0 +1,41 @@ +package com.paradogs.common.core.message; + +import lombok.Data; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.time.LocalDateTime; + +/** + * @author: yumi + * @date: 2023/7/28 22:50 + * @Description: DB 线程异步数据更新任务 + */ +@Data +public class DBTask { + + /** + * 操作类 + */ + private Object operateObj; + + /** + * 调用方法 + */ + private Method callMethod; + + /** + * 调用参数 + */ + private Object[] params; + + /** + * 任务发起时间 + */ + private LocalDateTime startTime; + + public void call() throws InvocationTargetException, IllegalAccessException { + callMethod.invoke(operateObj, params); + } + +} diff --git a/mini-common/src/main/java/com/mini/common/message/GCMessage.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCMsg.java similarity index 39% rename from mini-common/src/main/java/com/mini/common/message/GCMessage.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCMsg.java index 8c65b56..a41dd22 100644 --- a/mini-common/src/main/java/com/mini/common/message/GCMessage.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCMsg.java @@ -1,7 +1,6 @@ -package com.mini.common.message; +package com.paradogs.common.core.message; import lombok.Data; -import lombok.NoArgsConstructor; /** * @author: yumi @@ -9,6 +8,10 @@ import lombok.NoArgsConstructor; * @Description: TODO */ @Data -@NoArgsConstructor -public class GCMessage extends BaseMessage { +public abstract class GCMsg extends BaseMsg { + + /** + * 回复的 CG 消息 ID + */ + private int cgMsgId; } diff --git a/mini-common/src/main/java/com/mini/common/message/IMsgSerializable.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/IMsgSerializable.java similarity index 88% rename from mini-common/src/main/java/com/mini/common/message/IMsgSerializable.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/IMsgSerializable.java index da17347..849efb4 100644 --- a/mini-common/src/main/java/com/mini/common/message/IMsgSerializable.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/IMsgSerializable.java @@ -1,4 +1,4 @@ -package com.mini.common.message; +package com.paradogs.common.core.message; import com.google.protobuf.InvalidProtocolBufferException; import io.netty.buffer.ByteBuf; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MainMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MainMsgHandler.java new file mode 100644 index 0000000..42b49af --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MainMsgHandler.java @@ -0,0 +1,20 @@ +package com.paradogs.common.core.message; + + +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @author: yumi + * @date: 2023/7/27 13:43 + * @Description: 将接收的消息保存到消息队列 + */ +public class MainMsgHandler extends SimpleChannelInboundHandler { + + + @Override + protected void channelRead0(ChannelHandlerContext ctx, BaseMsg msg) throws Exception { + + } +} diff --git a/mini-common/src/main/java/com/mini/common/message/MsgHeader.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java similarity index 37% rename from mini-common/src/main/java/com/mini/common/message/MsgHeader.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java index 85c292e..620c633 100644 --- a/mini-common/src/main/java/com/mini/common/message/MsgHeader.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java @@ -1,75 +1,85 @@ -package com.mini.common.message; +package com.paradogs.common.core.message; +import com.baidu.bjf.remoting.protobuf.Codec; +import com.baidu.bjf.remoting.protobuf.FieldType; +import com.baidu.bjf.remoting.protobuf.ProtobufProxy; +import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.google.protobuf.InvalidProtocolBufferException; -import com.google.protobuf.MessageLite; -import com.mini.common.proto.ProtoMsg; -import com.mini.common.utils.BeanUtils; +import com.paradogs.common.core.utils.BeanUtils; +import com.paradogs.common.core.utils.ProtoUtils; import io.netty.buffer.ByteBuf; -import lombok.Builder; import lombok.Data; +import java.io.IOException; + /** * @author: yumi * @date: 2023-02-08 13:41 - * @Description: TODO + * @Description: 消息头 */ @Data -@Builder +@ProtobufClass public class MsgHeader implements IMsgSerializable { /** * 消息唯一 ID,用于请求 - 响应 */ - private String uuid; - - /** - * 服务名称,对应 application.yml 里的 netty.clients.service - */ - private String serviceName; + @Protobuf(fieldType = FieldType.STRING, order = 1, required = false) + private String id; /** - * 消息类型 约定为前缀名称,例:CGLogin - CGLoginMsg - CGLoginMsgHandler + * 消息类型,替代路由地址(java 使用类型对应,nodejs 可以使用字符串对应方法) + * 待优化,路由转 cmd api */ - private String msgType; + @Protobuf(fieldType = FieldType.INT32, order = 2, required = false) + private int cmd; +// private String route; /** - * 消息所属的连接 ID + * 玩家 ID */ - private String channelId; + @Protobuf(fieldType = FieldType.INT64, order = 3, required = false) + private Long playerId; /** * 消息生成的时间戳 */ + @Protobuf(fieldType = FieldType.INT64, order = 4, required = false) private Long timestamp; /** - * 玩家 ID + * 序列化(编码) + * @param out */ - private Long playerId; - - @Override public void serialization(ByteBuf out) { try { - MessageLite messageLite = BeanUtils.copy2ProtoBuilder(this, ProtoMsg.MsgHeader.class); - byte[] bytes = messageLite.toByteArray(); + byte[] bytes = ProtoUtils.encode(this); out.writeShort(bytes.length); out.writeBytes(bytes); + } catch (Exception e) { e.printStackTrace(); } } + /** + * 反序列化(解码) + * @param in + * @throws InvalidProtocolBufferException + */ @Override - public void deserialization(ByteBuf in) throws InvalidProtocolBufferException { + public void deserialization(ByteBuf in) { byte[] bytes = new byte[in.readShort()]; in.readBytes(bytes); - ProtoMsg.MsgHeader msgHeader = ProtoMsg.MsgHeader.parseFrom(bytes); - BeanUtils.copyProto2Entity(msgHeader, this); + MsgHeader msgHeader = ProtoUtils.decode(bytes, MsgHeader.class); + BeanUtils.copyProperties(msgHeader, this); + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgMapping.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgMapping.java new file mode 100644 index 0000000..c07c644 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgMapping.java @@ -0,0 +1,23 @@ +package com.paradogs.common.core.message; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.lang.reflect.Method; + +/** + * @author: yumi + * @date: 2023/8/1 15:47 + * @Description: cmd 消息映射 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MsgMapping { + + private Class msgClass; + + private Method method; + +} diff --git a/mini-common/src/main/java/com/mini/common/netty/Codec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/Codec.java similarity index 44% rename from mini-common/src/main/java/com/mini/common/netty/Codec.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/Codec.java index 33b385f..a48053d 100644 --- a/mini-common/src/main/java/com/mini/common/netty/Codec.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/Codec.java @@ -1,12 +1,14 @@ -package com.mini.common.netty; +package com.paradogs.common.core.netty.codec; -import com.mini.common.message.BaseMessage; -import com.mini.common.message.MsgHeader; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.message.MsgHeader; +import com.paradogs.common.core.utils.MsgUtils; import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; +import io.netty.util.AttributeKey; import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import java.util.List; @@ -15,13 +17,15 @@ import java.util.List; * @author: yumi * @date: 2023-02-08 11:43 * @Description: TODO + * not allowed to be shared !! */ @Slf4j @Component -public class Codec extends ByteToMessageCodec { +@Scope("prototype") +public class Codec extends ByteToMessageCodec { @Override - protected void encode(ChannelHandlerContext ctx, BaseMessage msg, ByteBuf out) throws Exception { + protected void encode(ChannelHandlerContext ctx, BaseMsg msg, ByteBuf out) throws Exception { msg.getMsgHeader().serialization(out); @@ -31,20 +35,16 @@ public class Codec extends ByteToMessageCodec { @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { - // 读取请求头 - MsgHeader msgHeader = MsgHeader.builder().build(); + MsgHeader msgHeader = new MsgHeader(); msgHeader.deserialization(in); - // 以后 Class.forName 可以改成类似 Spring 的组件形式,扫描包并注册到工厂 - Class aClass = Class.forName(msgHeader.getMsgType()); - BaseMessage baseMessage = (BaseMessage) aClass.newInstance(); - - baseMessage.deserialization(in); - // 这里注意需要设置参数 - baseMessage.setMsgHeader(msgHeader); + // 读取消息体,加载实际的消息类型 + BaseMsg baseMsg = MsgUtils.getMsgClass(msgHeader.getCmd()).newInstance(); + baseMsg.deserialization(in); + baseMsg.setMsgHeader(msgHeader); - out.add(baseMessage); + out.add(baseMsg); } diff --git a/mini-common/src/main/java/com/mini/common/handler/BaseMessageHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/handler/MsgHandler.java similarity index 36% rename from mini-common/src/main/java/com/mini/common/handler/BaseMessageHandler.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/handler/MsgHandler.java index 82ebbd3..15a5bf8 100644 --- a/mini-common/src/main/java/com/mini/common/handler/BaseMessageHandler.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/handler/MsgHandler.java @@ -1,31 +1,29 @@ -package com.mini.common.handler; +package com.paradogs.common.core.netty.handler; -import com.mini.common.message.BaseMessage; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.netty.queue.QueueManager; +import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * @author: yumi - * @date: 2023-02-08 15:58 - * @Description: TODO + * @date: 2023/7/27 9:32 + * @Description: 消息加入到 MAIN 处理队列 */ @Slf4j @Component -public class BaseMessageHandler extends SimpleChannelInboundHandler { +@ChannelHandler.Sharable +public class MsgHandler extends SimpleChannelInboundHandler { - /** - * 处理消息 - * @param ctx - */ - @Override - protected void channelRead0(ChannelHandlerContext ctx, BaseMessage msg) throws InterruptedException { - - /** - * 直接处理 - */ - msg.handler(ctx.channel()); + @Autowired + private QueueManager queueManager; + @Override + protected void channelRead0(ChannelHandlerContext ctx, BaseMsg msg) throws Exception { + queueManager.pushMainMsg(msg); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/handler/MsgHeaderWrapper.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/handler/MsgHeaderWrapper.java new file mode 100644 index 0000000..2456251 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/handler/MsgHeaderWrapper.java @@ -0,0 +1,30 @@ +package com.paradogs.common.core.netty.handler; + +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.message.MsgHeader; +import io.netty.channel.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/1 10:44 + * @Description: TODO + */ +@Slf4j +@Component +@ChannelHandler.Sharable +public class MsgHeaderWrapper extends ChannelDuplexHandler { + + @Override + public void write(ChannelHandlerContext ctx, Object data, ChannelPromise promise) throws Exception { + BaseMsg msg = (BaseMsg) data; + + MsgHeader header = new MsgHeader(); + header.setPlayerId(100L); + header.setCmd(1); + msg.setMsgHeader(header); + // 执行下一个 + super.write(ctx, msg, promise); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java new file mode 100644 index 0000000..21e0b0e --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java @@ -0,0 +1,90 @@ +package com.paradogs.common.core.netty.misc; + +import com.paradogs.common.core.message.CGTestMsg; +import com.paradogs.common.core.netty.codec.Codec; +import com.paradogs.common.core.netty.handler.MsgHandler; +import com.paradogs.common.core.netty.handler.MsgHeaderWrapper; +import com.paradogs.common.core.netty.protocol.ProtocolProperties; +import com.paradogs.common.core.utils.SpringUtils; +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.socket.nio.NioSocketChannel; +import io.netty.handler.codec.LengthFieldBasedFrameDecoder; +import io.netty.handler.codec.LengthFieldPrepender; +import lombok.extern.slf4j.Slf4j; +import org.apache.xmlbeans.impl.xb.ltgfmt.Code; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/2/18 13:14 + * @Description: TODO + */ +@Slf4j +@Component +@ChannelHandler.Sharable +public class ChannelInitializer extends io.netty.channel.ChannelInitializer { + + @Autowired + private MsgHandler msgHandler; + + @Autowired + private MsgHeaderWrapper msgHeaderWrapper; + + @Autowired + private ProtocolProperties protocolProperties; + + public Channel channeltest; + + /** + * 建立连接,初始化通道(还不能传输消息) + * @param channel + * @throws Exception + */ + @Override + protected void initChannel(NioSocketChannel channel) throws Exception { + + channel.pipeline().addLast(new LengthFieldBasedFrameDecoder( + protocolProperties.getMaxFrameLength(), + protocolProperties.getLengthFieldOffset(), + protocolProperties.getLengthFieldLength(), + protocolProperties.getLengthAdjustment(), + protocolProperties.getInitialBytesToStrip())); + + channel.pipeline().addLast(new LengthFieldPrepender(protocolProperties.getLengthFieldLength())); + + channel.pipeline().addLast(SpringUtils.getBean(Codec.class)); + + // addLast() 加入越晚的出栈时越先执行 + channel.pipeline().addLast(msgHeaderWrapper); + + channel.pipeline().addLast(msgHandler); + + channeltest = channel; + + if (channel.remoteAddress() != null) { + log.info("[{}:{}] open a new connection", channel.remoteAddress().getAddress(), channel.remoteAddress().getPort()); + } + + } + + + /** + * ChannelInitializer 的 ChannelActive 和 ChannelInboundHandlerAdapter 的不一样,一般用 ChannelInboundHandlerAdapter + * ChannelInitializer.ChannelActive 会不触发 + */ + + /** + * 异常处理 + * 待优化:在这做全局异常处理,类似 SpringMVC 的 + * @param ctx + * @throws Exception + */ + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + cause.printStackTrace(); + log.error("{}", cause.getMessage()); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/protocol/ProtocolProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/protocol/ProtocolProperties.java new file mode 100644 index 0000000..94ce77d --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/protocol/ProtocolProperties.java @@ -0,0 +1,28 @@ +package com.paradogs.common.core.netty.protocol; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/1 9:15 + * @Description: TODO + * 待优化:加上注释和用法 + */ +@Data +@Component +@ConfigurationProperties("paradogs.protocoal") +public class ProtocolProperties { + + private int maxFrameLength = 65534; + + private int lengthFieldOffset = 0; + + private int lengthFieldLength = 2; + + private int lengthAdjustment = 0; + + private int initialBytesToStrip = 2; + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/DBTaskConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/DBTaskConsumerThread.java new file mode 100644 index 0000000..1c04797 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/DBTaskConsumerThread.java @@ -0,0 +1,35 @@ +package com.paradogs.common.core.netty.queue; + +import com.paradogs.common.core.message.DBTask; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.lang.reflect.InvocationTargetException; + +/** + * @author: yumi + * @date: 2023/7/28 22:47 + * @Description: TODO + */ +@Slf4j +@Component +@Scope("prototype") +public class DBTaskConsumerThread extends QueueConsumerThread { + + /** + * 消息处理 + * @param task + * @throws InvocationTargetException + * @throws IllegalAccessException + */ + @Override + public void handle(DBTask task) throws InvocationTargetException, IllegalAccessException { + task.call(); + } + + @Override + public void heartbeat() { + + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java new file mode 100644 index 0000000..46a9fd3 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java @@ -0,0 +1,67 @@ +package com.paradogs.common.core.netty.queue; + +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.SpringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.stream.Stream; + +/** + * @author: yumi + * @date: 2023/7/28 9:27 + * @Description: TODO + */ +@Slf4j +@Component +@Scope("prototype") +public class MainMsgConsumerThread extends QueueConsumerThread { + + @Autowired + private QueueProperties queueProperties; + + /** + * 消息处理 + * @param msg + * @throws InvocationTargetException + * @throws IllegalAccessException + */ + @Override + public void handle(BaseMsg msg) throws InvocationTargetException, IllegalAccessException { + + if (!MsgUtils.containsKey(msg.getMsgHeader().getCmd())) { + log.error("cmd [{}] not found", msg.getMsgHeader().getCmd()); + return; + } + + Method method = MsgUtils.getMsgMethod(msg.getMsgHeader().getCmd()); + Object pdgController = SpringUtils.getBean(method.getDeclaringClass()); + + if (pdgController == null) { + log.error("class [{}] not managed by Spring", method.getDeclaringClass()); + } + + /** + * 待优化:这里可以像 SpringMVC 一样,根据方法参数注入相关变量,目前暂时只有 BaseMsg + */ + method.invoke( + pdgController, + Stream.of(method.getParameterTypes()) + .map(type -> BaseMsg.class.isAssignableFrom(type) ? msg : null) + .toArray() + ); + + } + + @Override + public void heartbeat() { + + } + + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java new file mode 100644 index 0000000..2e00a21 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java @@ -0,0 +1,95 @@ +package com.paradogs.common.core.netty.queue; + +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; + +import java.lang.reflect.InvocationTargetException; +import java.time.LocalDateTime; +import java.util.UUID; +import java.util.concurrent.BlockingQueue; + +/** + * @author: yumi + * @date: 2023/7/27 13:38 + * @Description: TODO + */ +@Slf4j +public abstract class QueueConsumerThread extends Thread { + + /** + * 处理的队列,一个消费者对应一个队列 + */ + @Setter + @Getter + private BlockingQueue queue; + + /** + * 启动时间 + */ + @Getter + private LocalDateTime startTime; + + /** + * 处理的消息总数 + */ + @Getter + private Long handleCount; + + /** + * 唯一标识 + */ + private String key; + + + public QueueConsumerThread() { + this.startTime = LocalDateTime.now(); + this.handleCount = 0L; + } + + /** + * 处理消息 + */ + public abstract void handle(T msg) throws InvocationTargetException, IllegalAccessException; + + /** + * 空闲时间校验 + */ + public abstract void heartbeat(); + + @Override + public void run() { + + log.info("[{}] queueConsumerThread start success", getKey()); + + while (true) { + + T msg = queue.poll(); + if (msg != null) { + this.handleCount++; + try { + handle(msg); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + heartbeat(); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + } + + } + + public String getKey() { + if (StringUtils.isBlank(this.key)) { + this.key = this.getClass().getSimpleName() + "-" + UUID.randomUUID().toString().replace("-", ""); + } + return this.key; + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java new file mode 100644 index 0000000..0a87c28 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java @@ -0,0 +1,105 @@ +package com.paradogs.common.core.netty.queue; + +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.utils.SpringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; + +/** + * @author: yumi + * @date: 2023/7/27 14:22 + * @Description: 队列管理器 + */ +@Slf4j +@Component +public class QueueManager { + + @Autowired + private QueueProperties queueProperties; + + /** + * 队列集合 + */ + private static Map>> queueMap; + + /** + * 初始化相关队列 + * ps: 这里要用自定义方法不能用构造器,因为构造器 properties 还未注入完成(空指针) + */ + public void init() { + + // 初始化队列 + queueMap = new HashMap<>(); + queueMap.put(QueueType.MAIN, new ArrayList<>(queueProperties.getMainSize())); + queueMap.put(QueueType.DB, new ArrayList<>(queueProperties.getDbSize())); + + for (int i = 0; i < queueProperties.getMainSize(); i++) { + queueMap.get(QueueType.MAIN).add(new LinkedBlockingQueue<>()); + } + for (int i = 0; i < queueProperties.getDbSize(); i++) { + queueMap.get(QueueType.DB).add(new LinkedBlockingQueue<>()); + } + + // 启动队列处理线程,1 对 1 + for (Map.Entry>> entry : queueMap.entrySet()) { + + for (BlockingQueue queue : entry.getValue()) { + // 原型模式 + QueueConsumerThread queueConsumerThread = SpringUtils.getBean(entry.getKey().queueConsumerThreadClass); + queueConsumerThread.setQueue(queue); + queueConsumerThread.start(); + } + + } + + } + + public enum QueueType { + + /** + * 消息逻辑处理 + */ + MAIN(MainMsgConsumerThread.class), + /** + * DB 持久化处理 + */ + DB(DBTaskConsumerThread.class); + + private Class queueConsumerThreadClass; + + QueueType(Class queueConsumerThreadClass) { + this.queueConsumerThreadClass = queueConsumerThreadClass; + } + } + + public void pushMainMsg(BaseMsg msg) throws InterruptedException { + banl(queueMap.get(QueueType.MAIN), msg).put(msg); + } + + public void pushDBMsg(BaseMsg msg) throws InterruptedException { + banl(queueMap.get(QueueType.DB), msg).put(msg); + } + + // 不需要出队方法,由线程直接消费 + // ==================================== + + + + /** + * 待优化,负载均衡规则,可以换成一个接口 + * @return + */ + private BlockingQueue banl(List> list, BaseMsg msg) { + return list.get((int) (msg.getMsgHeader().getPlayerId() % list.size())); + } + + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java new file mode 100644 index 0000000..dbcbaa0 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java @@ -0,0 +1,40 @@ +package com.paradogs.common.core.netty.queue; + +import com.paradogs.common.core.annoations.PdgMsg; +import com.paradogs.common.core.annoations.PdgMsgMapping; +import com.paradogs.common.core.message.BaseMsg; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +/** + * @author: yumi + * @date: 2023/7/27 19:16 + * @Description: TODO + */ +@Data +@Slf4j +@Component +@ConfigurationProperties("paradogs.queue") +public class QueueProperties implements BeanPostProcessor { + + /** + * 消息逻辑处理队列(待优化:暂时为 1,heartbeat 重复执行问题未解决) + */ + private int mainSize = 1; + + /** + * DB 持久化队列 + */ + private int dbSize = 3; + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java new file mode 100644 index 0000000..50d6452 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java @@ -0,0 +1,52 @@ +package com.paradogs.common.core.utils; + + +import lombok.extern.slf4j.Slf4j; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; + +/** + * @author: yumi + * @date: 2023/2/16 21:17 + * @Description: TODO + */ +@Slf4j +public class BeanUtils extends org.springframework.beans.BeanUtils { + + + /** + * 包装类和基本数据类型映射 + */ + private static Map, Class> primitiveAndWrap; + + private static Map, Class> wrapAndPrimitive; + + static { + primitiveAndWrap = new HashMap<>(); + wrapAndPrimitive = new HashMap<>(); + + primitiveAndWrap.put(byte.class, Byte.class); + primitiveAndWrap.put(short.class, Short.class); + primitiveAndWrap.put(int.class, Integer.class); + primitiveAndWrap.put(long.class, Long.class); + primitiveAndWrap.put(float.class, Float.class); + primitiveAndWrap.put(double.class, Double.class); + primitiveAndWrap.put(char.class, Character.class); + primitiveAndWrap.put(boolean.class, Boolean.class); + + primitiveAndWrap.entrySet().forEach(entry -> wrapAndPrimitive.put(entry.getValue(), entry.getKey())); + + + } + + public static V copy(T source, V target) { + copyProperties(source, target); + return target; + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java new file mode 100644 index 0000000..fb37502 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java @@ -0,0 +1,23 @@ +package com.paradogs.common.core.utils; + +import org.springframework.context.ApplicationEvent; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/7/26 17:34 + * @Description: TODO + */ +@Component +public class EventUtils { + + /** + * 发布事件 + * ps: 订阅事件由 Spring 的 @EventListener 注册 + * @param event + */ + public static void publish(ApplicationEvent event) { + SpringUtils.publishEvent(event); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java new file mode 100644 index 0000000..88c9569 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java @@ -0,0 +1,78 @@ +package com.paradogs.common.core.utils; + +import com.paradogs.common.core.annoations.PdgMsg; +import com.paradogs.common.core.annoations.PdgMsgMapping; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.message.MsgMapping; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.lang.reflect.Method; +import java.util.Map; +import java.util.Optional; +import java.util.TreeMap; + +/** + * @author: yumi + * @date: 2023/7/27 10:33 + * @Description: TODO + */ +@Slf4j +@Component +public class MsgUtils implements BeanPostProcessor { + + /** + * 消息 cmd - 消息类型 + */ + private static Map msgMappingMap = new TreeMap<>(); + + + /** + * 加载映射和消息 cmd,Bean 注册完成后执行 + * @param bean + * @param beanName + * @return + * @throws BeansException + */ + @Override + public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { + Class beanClass = bean.getClass(); + Method[] methods = beanClass.getDeclaredMethods(); + for (Method method : methods) { + if (!method.isAnnotationPresent(PdgMsgMapping.class)) { + continue; + } + + PdgMsgMapping pdgMsgMapping = method.getAnnotation(PdgMsgMapping.class); + PdgMsg pdgMsg = pdgMsgMapping.value().getDeclaredAnnotation(PdgMsg.class); + + if (pdgMsg == null) { + log.error("@PdgMsgMapping class [{}] no has @PdgMsg", pdgMsgMapping.value()); + throw new RuntimeException("@PdgMsgMapping class [{" + pdgMsgMapping.value() + "}] no has @PdgMsg"); + } + if (msgMappingMap.get(pdgMsg.value()) != null) { + log.error("cmd [{}] already exists", pdgMsgMapping.value()); + throw new RuntimeException("cmd [" + pdgMsgMapping.value() + "] already exists"); + } + msgMappingMap.put(pdgMsg.value(), new MsgMapping(pdgMsgMapping.value(), method)); + } + + return bean; + } + + public static boolean containsKey(int cmd) { + return msgMappingMap.containsKey(cmd); + } + + public static Class getMsgClass(int cmd) { + return Optional.ofNullable(msgMappingMap.get(cmd)).map(MsgMapping::getMsgClass).orElse(null); + } + + public static Method getMsgMethod(int cmd) { + return Optional.ofNullable(msgMappingMap.get(cmd)).map(MsgMapping::getMethod).orElse(null); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java new file mode 100644 index 0000000..592f204 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java @@ -0,0 +1,62 @@ +package com.paradogs.common.core.utils; + +import com.baidu.bjf.remoting.protobuf.Codec; +import com.baidu.bjf.remoting.protobuf.ProtobufProxy; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +/** + * @author: yumi + * @date: 2023/8/1 13:48 + * @Description: TODO + */ +public class ProtoUtils { + + /** + * 优化效率,避免每次都创建一个编解码器 + */ + public static Map, Codec> codecMap = new HashMap<>(); + + /** + * jprotobuf 编码 + * @param obj + * @param + * @return + */ + public static byte[] encode(T obj) { + + if (!codecMap.containsKey(obj.getClass())) { + codecMap.put(obj.getClass(), ProtobufProxy.create(obj.getClass())); + } + + try { + return codecMap.get(obj.getClass()).encode(obj); + } catch (IOException e) { + e.printStackTrace(); + } + return new byte[0]; + } + + /** + * jprotobuf 解码 + * @param bytes + * @param clz + * @param + * @return + */ + public static T decode(byte[] bytes, Class clz) { + + if (!codecMap.containsKey(clz)) { + codecMap.put(clz, ProtobufProxy.create(clz)); + } + try { + return (T) codecMap.get(clz).decode(bytes); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/mini-common/src/main/java/com/mini/common/utils/SpringUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java similarity index 71% rename from mini-common/src/main/java/com/mini/common/utils/SpringUtils.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java index 66a4a0a..51884d8 100644 --- a/mini-common/src/main/java/com/mini/common/utils/SpringUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java @@ -1,29 +1,45 @@ -package com.mini.common.utils; +package com.paradogs.common.core.utils; import org.springframework.aop.framework.AopContext; import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.context.ApplicationEvent; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.stereotype.Component; +import java.lang.annotation.Annotation; +import java.util.Map; + /** * spring工具类 方便在非spring管理环境中获取bean * * @author ruoyi */ @Component -public final class SpringUtils implements BeanFactoryPostProcessor +public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationEventPublisherAware { /** Spring应用上下文环境 */ private static ConfigurableListableBeanFactory beanFactory; + /** + * Spring 事件发布机制 + */ + private static ApplicationEventPublisher applicationEventPublisher; + @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { SpringUtils.beanFactory = beanFactory; } + @Override + public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { + SpringUtils.applicationEventPublisher = applicationEventPublisher; + } + /** * 获取对象 * @@ -52,6 +68,15 @@ public final class SpringUtils implements BeanFactoryPostProcessor return result; } + public static Map getBeansWithAnnotation(Class clz) { + return beanFactory.getBeansWithAnnotation(clz); + } + + public static Map getBeans(Class clz) throws BeansException + { + return beanFactory.getBeansOfType(clz); + } + /** * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true * @@ -107,8 +132,17 @@ public final class SpringUtils implements BeanFactoryPostProcessor * @return */ @SuppressWarnings("unchecked") - public static T getAopProxy(T invoker) - { + public static T getAopProxy(T invoker) { return (T) AopContext.currentProxy(); } + + /** + * 发布(触发)事件 + * @param event + * @return + */ + public static void publishEvent(ApplicationEvent event) { + applicationEventPublisher.publishEvent(event); + } + } diff --git a/mini-common/src/main/java/com/mini/common/utils/StringUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java similarity index 90% rename from mini-common/src/main/java/com/mini/common/utils/StringUtils.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java index 35beb04..393af0a 100644 --- a/mini-common/src/main/java/com/mini/common/utils/StringUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java @@ -1,4 +1,4 @@ -package com.mini.common.utils; +package com.paradogs.common.core.utils; import static org.apache.logging.log4j.util.Strings.isBlank; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/Wrap.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/Wrap.java new file mode 100644 index 0000000..dc7c257 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/Wrap.java @@ -0,0 +1,21 @@ +//package com.paradogs.common.core.utils; +// +//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +//import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +// +///** +// * @author: yumi +// * @date: 2023/2/18 15:20 +// * @Description: TODO +// */ +//public class Wrap { +// +// public static LambdaQueryWrapper lbq() { +// return new LambdaQueryWrapper<>(); +// } +// +// public static LambdaUpdateWrapper lbu() { +// return new LambdaUpdateWrapper<>(); +// } +// +//} diff --git a/mini-game/src/main/java/com/mini/game/pojo/excel/ExcelDataTransformListener.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelDataTransformListener.java similarity index 96% rename from mini-game/src/main/java/com/mini/game/pojo/excel/ExcelDataTransformListener.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelDataTransformListener.java index b1ed9cf..c581e27 100644 --- a/mini-game/src/main/java/com/mini/game/pojo/excel/ExcelDataTransformListener.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelDataTransformListener.java @@ -1,4 +1,4 @@ -package com.mini.game.pojo.excel; +package com.paradogs.common.core.utils.excel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; diff --git a/mini-common/src/main/java/com/mini/common/utils/ExcelUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelUtils.java similarity index 90% rename from mini-common/src/main/java/com/mini/common/utils/ExcelUtils.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelUtils.java index b1c5c73..7466943 100644 --- a/mini-common/src/main/java/com/mini/common/utils/ExcelUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelUtils.java @@ -1,7 +1,7 @@ -package com.mini.common.utils; +package com.paradogs.common.core.utils.excel; import com.alibaba.excel.EasyExcel; -import com.mini.common.misc.ExcelDataTransformListener; +import com.paradogs.common.core.utils.excel.ExcelDataTransformListener; import java.io.File; import java.util.List; diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..0758e27 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,16 @@ +com.paradogs.common.core.utils.SpringUtils +com.paradogs.common.core.utils.MsgUtils +com.paradogs.common.core.events.listener.PdgEventListener + +com.paradogs.common.core.netty.codec.Codec +com.paradogs.common.core.netty.misc.ChannelInitializer +com.paradogs.common.core.netty.handler.MsgHeaderWrapper +com.paradogs.common.core.netty.handler.MsgHandler + +com.paradogs.common.core.netty.queue.DBTaskConsumerThread +com.paradogs.common.core.netty.queue.MainMsgConsumerThread +com.paradogs.common.core.netty.queue.QueueManager +com.paradogs.common.core.netty.queue.QueueProperties + +com.paradogs.common.core.netty.protocol.ProtocolProperties + diff --git a/paradogs-common/paradogs-common-redis/pom.xml b/paradogs-common/paradogs-common-redis/pom.xml new file mode 100644 index 0000000..3ea1a68 --- /dev/null +++ b/paradogs-common/paradogs-common-redis/pom.xml @@ -0,0 +1,33 @@ + + + + paradogs-common + com.paradogs + 0.0.1-SNAPSHOT + + 4.0.0 + + paradogs-common-redis + + + 8 + 8 + + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + com.alibaba.fastjson2 + fastjson2 + + + + + \ No newline at end of file diff --git a/mini-common/src/main/java/com/mini/common/config/FastJson2JsonRedisSerializer.java b/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/FastJson2JsonRedisSerializer.java similarity index 83% rename from mini-common/src/main/java/com/mini/common/config/FastJson2JsonRedisSerializer.java rename to paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/FastJson2JsonRedisSerializer.java index 94dec21..3bfc5f1 100644 --- a/mini-common/src/main/java/com/mini/common/config/FastJson2JsonRedisSerializer.java +++ b/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/FastJson2JsonRedisSerializer.java @@ -1,10 +1,10 @@ -package com.mini.common.config; +package com.paradogs.common.redis.config; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONReader; import com.alibaba.fastjson2.JSONWriter; +import com.sun.xml.internal.ws.encoding.soap.SerializationException; import org.springframework.data.redis.serializer.RedisSerializer; -import org.springframework.data.redis.serializer.SerializationException; import java.nio.charset.Charset; @@ -27,7 +27,7 @@ public class FastJson2JsonRedisSerializer implements RedisSerializer } @Override - public byte[] serialize(T t) throws SerializationException + public byte[] serialize(T t) throws com.sun.xml.internal.ws.encoding.soap.SerializationException { if (t == null) { diff --git a/mini-common/src/main/java/com/mini/common/config/RedisConfig.java b/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/RedisConfig.java similarity index 97% rename from mini-common/src/main/java/com/mini/common/config/RedisConfig.java rename to paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/RedisConfig.java index 0ff46c3..e871f3f 100644 --- a/mini-common/src/main/java/com/mini/common/config/RedisConfig.java +++ b/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/RedisConfig.java @@ -1,4 +1,4 @@ -package com.mini.common.config; +package com.paradogs.common.redis.config; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; diff --git a/mini-common/src/main/java/com/mini/common/utils/RedisService.java b/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/service/RedisService.java similarity index 99% rename from mini-common/src/main/java/com/mini/common/utils/RedisService.java rename to paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/service/RedisService.java index 54d70c8..036f538 100644 --- a/mini-common/src/main/java/com/mini/common/utils/RedisService.java +++ b/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/service/RedisService.java @@ -1,4 +1,4 @@ -package com.mini.common.utils; +package com.paradogs.common.redis.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.BoundSetOperations; diff --git a/paradogs-common/paradogs-common-server-starter/pom.xml b/paradogs-common/paradogs-common-server-starter/pom.xml new file mode 100644 index 0000000..4fc39ef --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/pom.xml @@ -0,0 +1,26 @@ + + + + paradogs-common + com.paradogs + 0.0.1-SNAPSHOT + + 4.0.0 + + paradogs-common-server-starter + + + 8 + 8 + + + + + com.paradogs + paradogs-common-core + + + + \ No newline at end of file diff --git a/mini-login/src/main/java/com/mini/login/server/LoginServer.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java similarity index 62% rename from mini-login/src/main/java/com/mini/login/server/LoginServer.java rename to paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java index 2580503..c2c6c12 100644 --- a/mini-login/src/main/java/com/mini/login/server/LoginServer.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java @@ -1,14 +1,15 @@ -package com.mini.login.server; +package com.paradogs.common.server; -import com.mini.common.misc.GameChannelInitializer; +import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.common.server.events.ServerStartEvent; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; -import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelInitializer; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; +import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; @@ -18,11 +19,15 @@ import org.springframework.stereotype.Component; * @Description: TODO */ @Slf4j +@Data @Component -public class LoginServer { +public class Server { - @Value("${netty.server.port}") - private Integer port; + @Autowired + private ServerProperties serverConfig; + + @Autowired + private ChannelInitializer channelInitializer; private ServerBootstrap server; @@ -36,12 +41,16 @@ public class LoginServer { NioEventLoopGroup worker = new NioEventLoopGroup(); try { + long startTime = System.currentTimeMillis(); this.server = new ServerBootstrap() .group(boss, worker) .channel(NioServerSocketChannel.class) - .childHandler(new LoginChannelInitializer()); + .childHandler(channelInitializer); + + Channel channel = this.server.bind(serverConfig.getPort()).sync().channel(); + log.info("[{} localhost:{}] start success", serverConfig.getName(), serverConfig.getPort()); + SpringUtils.publishEvent(new ServerStartEvent(System.currentTimeMillis() - startTime)); - Channel channel = this.server.bind(port).sync().channel(); channel.closeFuture().sync(); } catch (InterruptedException e) { @@ -53,6 +62,6 @@ public class LoginServer { log.info("[{}] 服务器停止", this.getClass().getSimpleName()); } - } + } diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java new file mode 100644 index 0000000..1f69bea --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java @@ -0,0 +1,40 @@ +package com.paradogs.common.server; + +import com.paradogs.common.core.netty.queue.QueueManager; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/7/28 23:41 + * @Description: TODO + */ +@Slf4j +@Component +@EnableAsync +public class ServerLauncher implements ApplicationRunner { + + @Autowired + private QueueManager queueManager; + + @Autowired + private Server paradogsServer; + + @Override + public void run(ApplicationArguments args) throws Exception { + + /** + * 初始化消息处理队列 + */ + queueManager.init(); + + /** + * 启动服务器 + */ + paradogsServer.start(); + } +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java new file mode 100644 index 0000000..24c6656 --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java @@ -0,0 +1,44 @@ +package com.paradogs.common.server; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.util.UUID; + +/** + * @author: yumi + * @date: 2023/7/27 10:02 + * @Description: TODO + */ +@Data +@Slf4j +@Component +@ConfigurationProperties("paradogs.server") +public class ServerProperties { + + /** + * 端口 + */ + private int port; + + /** + * 服务类型,相同服务类型相同 + */ + private String key; + + /** + * 服务名称 + */ + private String name; + + public String getName() { + if (StringUtils.isNotBlank(this.name)) { + return this.name; + } + return this.name = key + "-" + UUID.randomUUID().toString().replace("-", ""); + } + +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerStartEvent.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerStartEvent.java new file mode 100644 index 0000000..4d124a6 --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerStartEvent.java @@ -0,0 +1,27 @@ +package com.paradogs.common.server.events; + +import com.paradogs.common.core.events.BaseEvent; +import lombok.Getter; +import lombok.Setter; +import org.springframework.stereotype.Component; + + +/** + * @author: yumi + * @date: 2023/7/29 9:18 + * @Description: TODO + */ +@Getter +@Setter +@Component +public class ServerStartEvent extends BaseEvent { + + /** + * 启动耗时 + */ + private Long startTimeout; + + public ServerStartEvent(Long startTimeout) { + super(startTimeout); + } +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..bbffe78 --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,5 @@ +com.paradogs.common.server.Server +com.paradogs.common.server.ServerProperties +com.paradogs.common.server.ServerLauncher + + diff --git a/mini-common/pom.xml b/paradogs-common/pom.xml similarity index 45% rename from mini-common/pom.xml rename to paradogs-common/pom.xml index 1b28bb3..45a5766 100644 --- a/mini-common/pom.xml +++ b/paradogs-common/pom.xml @@ -3,61 +3,68 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - mini - com.mini + paradogs + com.paradogs 0.0.1-SNAPSHOT 4.0.0 - mini-common + paradogs-common + pom + + paradogs-common-core + paradogs-common-redis + paradogs-common-server-starter + paradogs-common-client-starter + - - io.netty - netty-all - + + + + - - org.projectlombok - lombok - + + + + - - - org.springframework.boot - spring-boot-starter - + + + + + - - com.baomidou - mybatis-plus-boot-starter - + + + + - - com.alibaba - easyexcel - + + + + - - - com.google.protobuf - protobuf-java - + + + + + - - mysql - mysql-connector-java - + + + + - - org.springframework.boot - spring-boot-starter-data-redis - + + + + - - com.alibaba.fastjson2 - fastjson2 - + + + + diff --git a/paradogs-game/pom.xml b/paradogs-game/pom.xml new file mode 100644 index 0000000..944bba7 --- /dev/null +++ b/paradogs-game/pom.xml @@ -0,0 +1,24 @@ + + + + paradogs + com.paradogs + 0.0.1-SNAPSHOT + + 4.0.0 + + paradogs-game + + + + + com.paradogs + paradogs-common-core + 0.0.1-SNAPSHOT + + + + + \ No newline at end of file diff --git a/mini-game/src/main/java/com/mini/game/GameApplication.java b/paradogs-game/src/main/java/com/paradogs/game/GameApplication.java similarity index 68% rename from mini-game/src/main/java/com/mini/game/GameApplication.java rename to paradogs-game/src/main/java/com/paradogs/game/GameApplication.java index bdae14c..2072755 100644 --- a/mini-game/src/main/java/com/mini/game/GameApplication.java +++ b/paradogs-game/src/main/java/com/paradogs/game/GameApplication.java @@ -1,6 +1,5 @@ -package com.mini.game; +package com.paradogs.game; -import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; @@ -10,12 +9,8 @@ import org.springframework.scheduling.annotation.EnableAsync; * @date: 2023-02-24 09:18 * @Description: TODO */ -@SpringBootApplication( - scanBasePackageClasses = {GameApplication.class}, - scanBasePackages = {"com.mini.common"} -) +@SpringBootApplication @EnableAsync -@Slf4j public class GameApplication { public static void main(String[] args) { SpringApplication.run(GameApplication.class, args); diff --git a/mini-game/src/main/java/com/mini/game/handler/CGAttackMsgHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/CGAttackMsgHandler.java similarity index 73% rename from mini-game/src/main/java/com/mini/game/handler/CGAttackMsgHandler.java rename to paradogs-game/src/main/java/com/paradogs/game/handler/CGAttackMsgHandler.java index 9f5e670..d81dc59 100644 --- a/mini-game/src/main/java/com/mini/game/handler/CGAttackMsgHandler.java +++ b/paradogs-game/src/main/java/com/paradogs/game/handler/CGAttackMsgHandler.java @@ -1,13 +1,12 @@ -package com.mini.game.handler; +package com.paradogs.game.handler; -import com.mini.common.handler.BaseHandler; -import com.mini.common.message.GCMessage; -import com.mini.common.utils.SpringUtils; -import com.mini.game.message.CGAttackMsg; -import com.mini.game.message.GCAttackMsg; -import com.mini.game.misc.GameRepository; -import com.mini.game.pojo.entity.Player; -import com.mini.game.pojo.excel.ExcelWarOrderTask; +import com.paradogs.common.handler.BaseHandler; +import com.paradogs.common.utils.SpringUtils; +import com.paradogs.game.message.CGAttackMsg; +import com.paradogs.game.message.GCAttackMsg; +import com.paradogs.game.misc.GameRepository; +import com.paradogs.game.pojo.entity.Player; +import com.paradogs.game.pojo.excel.ExcelWarOrderTask; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/mini-game/src/main/java/com/mini/game/handler/CGBuyGoodsMsgHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/CGBuyGoodsMsgHandler.java similarity index 74% rename from mini-game/src/main/java/com/mini/game/handler/CGBuyGoodsMsgHandler.java rename to paradogs-game/src/main/java/com/paradogs/game/handler/CGBuyGoodsMsgHandler.java index e7b0e7a..f6ea626 100644 --- a/mini-game/src/main/java/com/mini/game/handler/CGBuyGoodsMsgHandler.java +++ b/paradogs-game/src/main/java/com/paradogs/game/handler/CGBuyGoodsMsgHandler.java @@ -1,14 +1,11 @@ -package com.mini.game.handler; - -import com.mini.common.handler.CGHandler; -import com.mini.common.utils.Wrap; -import com.mini.game.message.CGBuyGoodsMsg; -import com.mini.game.message.GCBuyGoodsMsg; -import com.mini.game.misc.GameRepository; -import com.mini.game.pojo.blob.PlayerCurrency; -import com.mini.game.pojo.entity.Player; -import com.mini.game.pojo.excel.ExcelGoods; -import com.mini.game.service.PlayerService; +package com.paradogs.game.handler; + +import com.paradogs.common.handler.CGHandler; +import com.paradogs.common.utils.Wrap; +import com.paradogs.game.message.CGBuyGoodsMsg; +import com.paradogs.game.misc.GameRepository; +import com.paradogs.game.pojo.entity.Player; +import com.paradogs.game.service.PlayerService; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/mini-game/src/main/java/com/mini/game/handler/CGLoginSuccessMsgHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/CGLoginSuccessMsgHandler.java similarity index 71% rename from mini-game/src/main/java/com/mini/game/handler/CGLoginSuccessMsgHandler.java rename to paradogs-game/src/main/java/com/paradogs/game/handler/CGLoginSuccessMsgHandler.java index dc46cbd..8c85f1a 100644 --- a/mini-game/src/main/java/com/mini/game/handler/CGLoginSuccessMsgHandler.java +++ b/paradogs-game/src/main/java/com/paradogs/game/handler/CGLoginSuccessMsgHandler.java @@ -1,13 +1,12 @@ -package com.mini.game.handler; - -import com.mini.common.handler.BaseHandler; -import com.mini.game.message.CGLoginSuccessMsg; -import com.mini.game.message.GCLoginSuccessMsg; -import com.mini.game.misc.GameRepository; -import com.mini.game.misc.PubSubManager; -import com.mini.game.misc.pubsub.LoginPub; -import com.mini.game.pojo.entity.Player; -import com.mini.game.service.PlayerService; +package com.paradogs.game.handler; + +import com.paradogs.common.handler.BaseHandler; +import com.paradogs.game.message.CGLoginSuccessMsg; +import com.paradogs.game.message.GCLoginSuccessMsg; +import com.paradogs.game.misc.GameRepository; +import com.paradogs.game.misc.PubSubManager; +import com.paradogs.game.pojo.entity.Player; +import com.paradogs.game.service.PlayerService; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/mini-game/src/main/java/com/mini/game/handler/CGReceiveWarOrderPrizeMsgHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/CGReceiveWarOrderPrizeMsgHandler.java similarity index 84% rename from mini-game/src/main/java/com/mini/game/handler/CGReceiveWarOrderPrizeMsgHandler.java rename to paradogs-game/src/main/java/com/paradogs/game/handler/CGReceiveWarOrderPrizeMsgHandler.java index 070665e..02018e3 100644 --- a/mini-game/src/main/java/com/mini/game/handler/CGReceiveWarOrderPrizeMsgHandler.java +++ b/paradogs-game/src/main/java/com/paradogs/game/handler/CGReceiveWarOrderPrizeMsgHandler.java @@ -1,15 +1,14 @@ -package com.mini.game.handler; +package com.paradogs.game.handler; -import com.mini.common.handler.BaseHandler; -import com.mini.common.utils.SpringUtils; -import com.mini.game.message.CGReceiveWarOrderPrizeMsg; -import com.mini.game.message.GCReceiveWarOrderPrizeMsg; -import com.mini.game.misc.GameRepository; -import com.mini.game.pojo.db.ModifyPlayerMsg; -import com.mini.game.pojo.entity.Player; -import com.mini.game.pojo.excel.ExcelWarOrderPrize; -import com.mini.game.service.WarOrderService; -import com.mini.game.service.impl.WarOrderServiceImpl; +import com.paradogs.common.handler.BaseHandler; +import com.paradogs.common.utils.SpringUtils; +import com.paradogs.game.message.CGReceiveWarOrderPrizeMsg; +import com.paradogs.game.message.GCReceiveWarOrderPrizeMsg; +import com.paradogs.game.misc.GameRepository; +import com.paradogs.game.pojo.db.ModifyPlayerMsg; +import com.paradogs.game.pojo.entity.Player; +import com.paradogs.game.pojo.excel.ExcelWarOrderPrize; +import com.paradogs.game.service.impl.WarOrderServiceImpl; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/mini-game/src/main/java/com/mini/game/handler/CGRechargeWarOrderVipMsgHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/CGRechargeWarOrderVipMsgHandler.java similarity index 75% rename from mini-game/src/main/java/com/mini/game/handler/CGRechargeWarOrderVipMsgHandler.java rename to paradogs-game/src/main/java/com/paradogs/game/handler/CGRechargeWarOrderVipMsgHandler.java index 6a4512d..a5a8ecb 100644 --- a/mini-game/src/main/java/com/mini/game/handler/CGRechargeWarOrderVipMsgHandler.java +++ b/paradogs-game/src/main/java/com/paradogs/game/handler/CGRechargeWarOrderVipMsgHandler.java @@ -1,13 +1,12 @@ -package com.mini.game.handler; +package com.paradogs.game.handler; -import com.mini.common.handler.BaseHandler; -import com.mini.common.message.GCMessage; -import com.mini.common.utils.SpringUtils; -import com.mini.game.message.CGRechargeWarOrderVipMsg; -import com.mini.game.message.GCRechargeWarOrderVipMsg; -import com.mini.game.misc.GameRepository; -import com.mini.game.pojo.db.ModifyPlayerMsg; -import com.mini.game.pojo.entity.Player; +import com.paradogs.common.handler.BaseHandler; +import com.paradogs.common.utils.SpringUtils; +import com.paradogs.game.message.CGRechargeWarOrderVipMsg; +import com.paradogs.game.message.GCRechargeWarOrderVipMsg; +import com.paradogs.game.misc.GameRepository; +import com.paradogs.game.pojo.db.ModifyPlayerMsg; +import com.paradogs.game.pojo.entity.Player; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/mini-game/src/main/java/com/mini/game/handler/GCBuyGoodsMsgHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/GCBuyGoodsMsgHandler.java similarity index 74% rename from mini-game/src/main/java/com/mini/game/handler/GCBuyGoodsMsgHandler.java rename to paradogs-game/src/main/java/com/paradogs/game/handler/GCBuyGoodsMsgHandler.java index 731ab28..7c8c332 100644 --- a/mini-game/src/main/java/com/mini/game/handler/GCBuyGoodsMsgHandler.java +++ b/paradogs-game/src/main/java/com/paradogs/game/handler/GCBuyGoodsMsgHandler.java @@ -1,7 +1,7 @@ -package com.mini.game.handler; +package com.paradogs.game.handler; -import com.mini.common.handler.BaseHandler; -import com.mini.game.message.GCBuyGoodsMsg; +import com.paradogs.common.handler.BaseHandler; +import com.paradogs.game.message.GCBuyGoodsMsg; import io.netty.channel.Channel; import org.springframework.stereotype.Component; diff --git a/mini-game/src/main/java/com/mini/game/handler/base/GameMessageHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/base/GameMessageHandler.java similarity index 85% rename from mini-game/src/main/java/com/mini/game/handler/base/GameMessageHandler.java rename to paradogs-game/src/main/java/com/paradogs/game/handler/base/GameMessageHandler.java index 81befb5..c481880 100644 --- a/mini-game/src/main/java/com/mini/game/handler/base/GameMessageHandler.java +++ b/paradogs-game/src/main/java/com/paradogs/game/handler/base/GameMessageHandler.java @@ -1,7 +1,7 @@ -package com.mini.game.handler.base; +package com.paradogs.game.handler.base; -import com.mini.common.message.BaseMessage; -import com.mini.game.misc.GameRepository; +import com.paradogs.common.message.BaseMessage; +import com.paradogs.game.misc.GameRepository; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; diff --git a/mini-game/src/main/java/com/mini/game/manager/BaseInfoManager.java b/paradogs-game/src/main/java/com/paradogs/game/manager/BaseInfoManager.java similarity index 86% rename from mini-game/src/main/java/com/mini/game/manager/BaseInfoManager.java rename to paradogs-game/src/main/java/com/paradogs/game/manager/BaseInfoManager.java index 1651a26..fd593cb 100644 --- a/mini-game/src/main/java/com/mini/game/manager/BaseInfoManager.java +++ b/paradogs-game/src/main/java/com/paradogs/game/manager/BaseInfoManager.java @@ -1,15 +1,9 @@ -package com.mini.game.manager; +package com.paradogs.game.manager; -import com.alibaba.fastjson2.util.DateUtils; -import com.mini.common.utils.SpringUtils; -import com.mini.game.misc.PubSubManager; -import com.mini.game.pojo.blob.BaseInfo; -import com.mini.game.pojo.entity.Player; +import com.paradogs.game.pojo.blob.BaseInfo; +import com.paradogs.game.pojo.entity.Player; import lombok.extern.slf4j.Slf4j; -import org.assertj.core.util.DateUtil; -import javax.swing.*; -import java.text.DateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Map; diff --git a/mini-game/src/main/java/com/mini/game/manager/BaseManager.java b/paradogs-game/src/main/java/com/paradogs/game/manager/BaseManager.java similarity index 83% rename from mini-game/src/main/java/com/mini/game/manager/BaseManager.java rename to paradogs-game/src/main/java/com/paradogs/game/manager/BaseManager.java index f148d84..6d49d83 100644 --- a/mini-game/src/main/java/com/mini/game/manager/BaseManager.java +++ b/paradogs-game/src/main/java/com/paradogs/game/manager/BaseManager.java @@ -1,4 +1,4 @@ -package com.mini.game.manager; +package com.paradogs.game.manager; /** * @author: yumi diff --git a/mini-game/src/main/java/com/mini/game/manager/WarOrderManager.java b/paradogs-game/src/main/java/com/paradogs/game/manager/WarOrderManager.java similarity index 90% rename from mini-game/src/main/java/com/mini/game/manager/WarOrderManager.java rename to paradogs-game/src/main/java/com/paradogs/game/manager/WarOrderManager.java index bb65eda..09e6dc6 100644 --- a/mini-game/src/main/java/com/mini/game/manager/WarOrderManager.java +++ b/paradogs-game/src/main/java/com/paradogs/game/manager/WarOrderManager.java @@ -1,17 +1,14 @@ -package com.mini.game.manager; - -import com.mini.common.utils.ExcelUtils; -import com.mini.common.utils.SpringUtils; -import com.mini.game.misc.GameRepository; -import com.mini.game.misc.PubSubManager; -import com.mini.game.misc.pubsub.base.Sub; -import com.mini.game.pojo.blob.WarOrder; -import com.mini.game.pojo.db.ModifyPlayerMsg; -import com.mini.game.pojo.entity.Player; -import com.mini.game.pojo.excel.ExcelWarOrderTask; -import com.mini.game.pojo.notify.CompleteTaskNotify; -import com.mini.game.service.WarOrderService; -import com.mini.game.service.impl.WarOrderServiceImpl; +package com.paradogs.game.manager; + +import com.paradogs.common.utils.SpringUtils; +import com.paradogs.game.misc.GameRepository; +import com.paradogs.game.misc.PubSubManager; +import com.paradogs.game.pojo.blob.WarOrder; +import com.paradogs.game.pojo.db.ModifyPlayerMsg; +import com.paradogs.game.pojo.entity.Player; +import com.paradogs.game.pojo.excel.ExcelWarOrderTask; +import com.paradogs.game.pojo.notify.CompleteTaskNotify; +import com.paradogs.game.service.impl.WarOrderServiceImpl; import lombok.Data; import lombok.extern.slf4j.Slf4j; diff --git a/mini-game/src/main/java/com/mini/game/manager/WoodShopManager.java b/paradogs-game/src/main/java/com/paradogs/game/manager/WoodShopManager.java similarity index 79% rename from mini-game/src/main/java/com/mini/game/manager/WoodShopManager.java rename to paradogs-game/src/main/java/com/paradogs/game/manager/WoodShopManager.java index 6b95737..9cb3e79 100644 --- a/mini-game/src/main/java/com/mini/game/manager/WoodShopManager.java +++ b/paradogs-game/src/main/java/com/paradogs/game/manager/WoodShopManager.java @@ -1,17 +1,14 @@ -package com.mini.game.manager; - -import com.mini.common.utils.SpringUtils; -import com.mini.game.message.CGBuyGoodsMsg; -import com.mini.game.message.GCBuyGoodsMsg; -import com.mini.game.misc.GameRepository; -import com.mini.game.pojo.blob.PlayerCurrency; -import com.mini.game.pojo.entity.Player; -import com.mini.game.pojo.excel.ExcelGoods; +package com.paradogs.game.manager; + +import com.paradogs.common.utils.SpringUtils; +import com.paradogs.game.message.CGBuyGoodsMsg; +import com.paradogs.game.misc.GameRepository; +import com.paradogs.game.message.GCBuyGoodsMsg; +import com.paradogs.game.pojo.blob.PlayerCurrency; +import com.paradogs.game.pojo.entity.Player; +import com.paradogs.game.pojo.excel.ExcelGoods; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; /** * @author: yumi diff --git a/mini-game/src/main/java/com/mini/game/mapper/PlayerMapper.java b/paradogs-game/src/main/java/com/paradogs/game/mapper/PlayerMapper.java similarity index 75% rename from mini-game/src/main/java/com/mini/game/mapper/PlayerMapper.java rename to paradogs-game/src/main/java/com/paradogs/game/mapper/PlayerMapper.java index b0e4c81..afdd056 100644 --- a/mini-game/src/main/java/com/mini/game/mapper/PlayerMapper.java +++ b/paradogs-game/src/main/java/com/paradogs/game/mapper/PlayerMapper.java @@ -1,7 +1,7 @@ -package com.mini.game.mapper; +package com.paradogs.game.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.mini.game.pojo.entity.Player; +import com.paradogs.game.pojo.entity.Player; import org.apache.ibatis.annotations.Mapper; /** diff --git a/mini-game/src/main/java/com/mini/game/message/CGAttackMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/CGAttackMsg.java similarity index 60% rename from mini-game/src/main/java/com/mini/game/message/CGAttackMsg.java rename to paradogs-game/src/main/java/com/paradogs/game/message/CGAttackMsg.java index 2946eb9..290f3d3 100644 --- a/mini-game/src/main/java/com/mini/game/message/CGAttackMsg.java +++ b/paradogs-game/src/main/java/com/paradogs/game/message/CGAttackMsg.java @@ -1,8 +1,7 @@ -package com.mini.game.message; +package com.paradogs.game.message; -import com.mini.common.message.CGMessage; +import com.paradogs.common.message.CGMessage; import lombok.Data; -import lombok.extern.slf4j.Slf4j; /** * @author: yumi diff --git a/mini-game/src/main/java/com/mini/game/message/CGBuyGoodsMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/CGBuyGoodsMsg.java similarity index 84% rename from mini-game/src/main/java/com/mini/game/message/CGBuyGoodsMsg.java rename to paradogs-game/src/main/java/com/paradogs/game/message/CGBuyGoodsMsg.java index 1f93c08..d47aba9 100644 --- a/mini-game/src/main/java/com/mini/game/message/CGBuyGoodsMsg.java +++ b/paradogs-game/src/main/java/com/paradogs/game/message/CGBuyGoodsMsg.java @@ -1,6 +1,6 @@ -package com.mini.game.message; +package com.paradogs.game.message; -import com.mini.common.message.CGMessage; +import com.paradogs.common.message.CGMessage; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/mini-game/src/main/java/com/mini/game/message/CGLoginSuccessMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/CGLoginSuccessMsg.java similarity index 78% rename from mini-game/src/main/java/com/mini/game/message/CGLoginSuccessMsg.java rename to paradogs-game/src/main/java/com/paradogs/game/message/CGLoginSuccessMsg.java index d9ae8b1..ea64106 100644 --- a/mini-game/src/main/java/com/mini/game/message/CGLoginSuccessMsg.java +++ b/paradogs-game/src/main/java/com/paradogs/game/message/CGLoginSuccessMsg.java @@ -1,6 +1,6 @@ -package com.mini.game.message; +package com.paradogs.game.message; -import com.mini.common.message.CGMessage; +import com.paradogs.common.message.CGMessage; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/mini-game/src/main/java/com/mini/game/message/CGReceiveWarOrderPrizeMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/CGReceiveWarOrderPrizeMsg.java similarity index 72% rename from mini-game/src/main/java/com/mini/game/message/CGReceiveWarOrderPrizeMsg.java rename to paradogs-game/src/main/java/com/paradogs/game/message/CGReceiveWarOrderPrizeMsg.java index 493c34a..11310ef 100644 --- a/mini-game/src/main/java/com/mini/game/message/CGReceiveWarOrderPrizeMsg.java +++ b/paradogs-game/src/main/java/com/paradogs/game/message/CGReceiveWarOrderPrizeMsg.java @@ -1,7 +1,6 @@ -package com.mini.game.message; +package com.paradogs.game.message; -import com.mini.common.message.BaseMessage; -import com.mini.common.message.CGMessage; +import com.paradogs.common.message.CGMessage; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/mini-game/src/main/java/com/mini/game/message/CGRechargeWarOrderVipMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/CGRechargeWarOrderVipMsg.java similarity index 68% rename from mini-game/src/main/java/com/mini/game/message/CGRechargeWarOrderVipMsg.java rename to paradogs-game/src/main/java/com/paradogs/game/message/CGRechargeWarOrderVipMsg.java index 1277687..e33dfaa 100644 --- a/mini-game/src/main/java/com/mini/game/message/CGRechargeWarOrderVipMsg.java +++ b/paradogs-game/src/main/java/com/paradogs/game/message/CGRechargeWarOrderVipMsg.java @@ -1,6 +1,6 @@ -package com.mini.game.message; +package com.paradogs.game.message; -import com.mini.common.message.CGMessage; +import com.paradogs.common.message.CGMessage; import lombok.Data; /** diff --git a/mini-game/src/main/java/com/mini/game/message/GCAttackMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/GCAttackMsg.java similarity index 68% rename from mini-game/src/main/java/com/mini/game/message/GCAttackMsg.java rename to paradogs-game/src/main/java/com/paradogs/game/message/GCAttackMsg.java index 40ed95c..7929045 100644 --- a/mini-game/src/main/java/com/mini/game/message/GCAttackMsg.java +++ b/paradogs-game/src/main/java/com/paradogs/game/message/GCAttackMsg.java @@ -1,6 +1,6 @@ -package com.mini.game.message; +package com.paradogs.game.message; -import com.mini.common.message.GCMessage; +import com.paradogs.common.message.GCMessage; import lombok.Data; /** diff --git a/mini-game/src/main/java/com/mini/game/message/GCBuyGoodsMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/GCBuyGoodsMsg.java similarity index 81% rename from mini-game/src/main/java/com/mini/game/message/GCBuyGoodsMsg.java rename to paradogs-game/src/main/java/com/paradogs/game/message/GCBuyGoodsMsg.java index 106c007..a7b0177 100644 --- a/mini-game/src/main/java/com/mini/game/message/GCBuyGoodsMsg.java +++ b/paradogs-game/src/main/java/com/paradogs/game/message/GCBuyGoodsMsg.java @@ -1,6 +1,6 @@ -package com.mini.game.message; +package com.paradogs.game.message; -import com.mini.common.message.GCMessage; +import com.paradogs.common.message.GCMessage; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/mini-game/src/main/java/com/mini/game/message/GCLoginSuccessMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/GCLoginSuccessMsg.java similarity index 65% rename from mini-game/src/main/java/com/mini/game/message/GCLoginSuccessMsg.java rename to paradogs-game/src/main/java/com/paradogs/game/message/GCLoginSuccessMsg.java index f64b3c2..f6054a6 100644 --- a/mini-game/src/main/java/com/mini/game/message/GCLoginSuccessMsg.java +++ b/paradogs-game/src/main/java/com/paradogs/game/message/GCLoginSuccessMsg.java @@ -1,6 +1,6 @@ -package com.mini.game.message; +package com.paradogs.game.message; -import com.mini.common.message.GCMessage; +import com.paradogs.common.message.GCMessage; import lombok.Data; /** diff --git a/mini-game/src/main/java/com/mini/game/message/GCReceiveWarOrderPrizeMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/GCReceiveWarOrderPrizeMsg.java similarity index 61% rename from mini-game/src/main/java/com/mini/game/message/GCReceiveWarOrderPrizeMsg.java rename to paradogs-game/src/main/java/com/paradogs/game/message/GCReceiveWarOrderPrizeMsg.java index 74528a7..4a016ec 100644 --- a/mini-game/src/main/java/com/mini/game/message/GCReceiveWarOrderPrizeMsg.java +++ b/paradogs-game/src/main/java/com/paradogs/game/message/GCReceiveWarOrderPrizeMsg.java @@ -1,7 +1,6 @@ -package com.mini.game.message; +package com.paradogs.game.message; -import com.mini.common.message.BaseMessage; -import com.mini.common.message.GCMessage; +import com.paradogs.common.message.GCMessage; import lombok.Data; /** diff --git a/mini-game/src/main/java/com/mini/game/message/GCRechargeWarOrderVipMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/GCRechargeWarOrderVipMsg.java similarity index 70% rename from mini-game/src/main/java/com/mini/game/message/GCRechargeWarOrderVipMsg.java rename to paradogs-game/src/main/java/com/paradogs/game/message/GCRechargeWarOrderVipMsg.java index 5b218ba..a0fa86a 100644 --- a/mini-game/src/main/java/com/mini/game/message/GCRechargeWarOrderVipMsg.java +++ b/paradogs-game/src/main/java/com/paradogs/game/message/GCRechargeWarOrderVipMsg.java @@ -1,6 +1,6 @@ -package com.mini.game.message; +package com.paradogs.game.message; -import com.mini.common.message.GCMessage; +import com.paradogs.common.message.GCMessage; import lombok.Data; /** diff --git a/mini-game/src/main/java/com/mini/game/misc/GameRepository.java b/paradogs-game/src/main/java/com/paradogs/game/misc/GameRepository.java similarity index 92% rename from mini-game/src/main/java/com/mini/game/misc/GameRepository.java rename to paradogs-game/src/main/java/com/paradogs/game/misc/GameRepository.java index 83a1619..0fae002 100644 --- a/mini-game/src/main/java/com/mini/game/misc/GameRepository.java +++ b/paradogs-game/src/main/java/com/paradogs/game/misc/GameRepository.java @@ -1,11 +1,11 @@ -package com.mini.game.misc; - -import com.mini.common.message.BaseMessage; -import com.mini.common.utils.ExcelUtils; -import com.mini.game.pojo.entity.Player; -import com.mini.game.pojo.excel.ExcelGoods; -import com.mini.game.server.thread.CGMainHandleThread; -import com.mini.game.server.thread.DBHandlerThread; +package com.paradogs.game.misc; + +import com.paradogs.common.message.BaseMessage; +import com.paradogs.common.utils.ExcelUtils; +import com.paradogs.game.pojo.entity.Player; +import com.paradogs.game.pojo.excel.ExcelGoods; +import com.paradogs.game.server.thread.CGMainHandleThread; +import com.paradogs.game.server.thread.DBHandlerThread; import io.netty.channel.Channel; import lombok.Data; import lombok.Getter; diff --git a/mini-game/src/main/java/com/mini/game/misc/ObjectAndByteArrayTypeHandler.java b/paradogs-game/src/main/java/com/paradogs/game/misc/ObjectAndByteArrayTypeHandler.java similarity index 96% rename from mini-game/src/main/java/com/mini/game/misc/ObjectAndByteArrayTypeHandler.java rename to paradogs-game/src/main/java/com/paradogs/game/misc/ObjectAndByteArrayTypeHandler.java index 18178a6..73e334e 100644 --- a/mini-game/src/main/java/com/mini/game/misc/ObjectAndByteArrayTypeHandler.java +++ b/paradogs-game/src/main/java/com/paradogs/game/misc/ObjectAndByteArrayTypeHandler.java @@ -1,6 +1,6 @@ -package com.mini.game.misc; +package com.paradogs.game.misc; -import com.mini.game.pojo.blob.BaseBlob; +import com.paradogs.game.pojo.blob.BaseBlob; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedJdbcTypes; import org.apache.ibatis.type.MappedTypes; diff --git a/mini-game/src/main/java/com/mini/game/misc/PubSubManager.java b/paradogs-game/src/main/java/com/paradogs/game/misc/PubSubManager.java similarity index 80% rename from mini-game/src/main/java/com/mini/game/misc/PubSubManager.java rename to paradogs-game/src/main/java/com/paradogs/game/misc/PubSubManager.java index 23b3cc6..4d796dd 100644 --- a/mini-game/src/main/java/com/mini/game/misc/PubSubManager.java +++ b/paradogs-game/src/main/java/com/paradogs/game/misc/PubSubManager.java @@ -1,12 +1,8 @@ -package com.mini.game.misc; +package com.paradogs.game.misc; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.alibaba.fastjson2.TypeReference; -import com.mini.game.misc.pubsub.base.Pub; -import com.mini.game.misc.pubsub.base.Sub; +import com.paradogs.game.misc.pubsub.base.Pub; +import com.paradogs.game.misc.pubsub.base.Sub; import lombok.extern.slf4j.Slf4j; -import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/mini-game/src/main/java/com/mini/game/misc/pubsub/CompleteTaskPub.java b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/CompleteTaskPub.java similarity index 84% rename from mini-game/src/main/java/com/mini/game/misc/pubsub/CompleteTaskPub.java rename to paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/CompleteTaskPub.java index 385f6f1..1f6e6f1 100644 --- a/mini-game/src/main/java/com/mini/game/misc/pubsub/CompleteTaskPub.java +++ b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/CompleteTaskPub.java @@ -1,7 +1,7 @@ -package com.mini.game.misc.pubsub; +package com.paradogs.game.misc.pubsub; -import com.mini.game.misc.pubsub.base.Pub; -import com.mini.game.misc.pubsub.base.Sub; +import com.paradogs.game.misc.pubsub.base.Pub; +import com.paradogs.game.misc.pubsub.base.Sub; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/mini-game/src/main/java/com/mini/game/misc/pubsub/KillChangePub.java b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/KillChangePub.java similarity index 83% rename from mini-game/src/main/java/com/mini/game/misc/pubsub/KillChangePub.java rename to paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/KillChangePub.java index 34c7d0e..b8cf1fd 100644 --- a/mini-game/src/main/java/com/mini/game/misc/pubsub/KillChangePub.java +++ b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/KillChangePub.java @@ -1,7 +1,7 @@ -package com.mini.game.misc.pubsub; +package com.paradogs.game.misc.pubsub; -import com.mini.game.misc.pubsub.base.Pub; -import com.mini.game.misc.pubsub.base.Sub; +import com.paradogs.game.misc.pubsub.base.Pub; +import com.paradogs.game.misc.pubsub.base.Sub; import org.springframework.stereotype.Component; import java.util.List; diff --git a/mini-game/src/main/java/com/mini/game/misc/pubsub/LoginPub.java b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/LoginPub.java similarity index 84% rename from mini-game/src/main/java/com/mini/game/misc/pubsub/LoginPub.java rename to paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/LoginPub.java index eb3885e..698283b 100644 --- a/mini-game/src/main/java/com/mini/game/misc/pubsub/LoginPub.java +++ b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/LoginPub.java @@ -1,13 +1,12 @@ -package com.mini.game.misc.pubsub; +package com.paradogs.game.misc.pubsub; -import com.mini.game.misc.pubsub.base.Pub; -import com.mini.game.misc.pubsub.base.Sub; +import com.paradogs.game.misc.pubsub.base.Pub; +import com.paradogs.game.misc.pubsub.base.Sub; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.util.List; -import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; /** diff --git a/mini-game/src/main/java/com/mini/game/misc/pubsub/base/Pub.java b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Pub.java similarity index 81% rename from mini-game/src/main/java/com/mini/game/misc/pubsub/base/Pub.java rename to paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Pub.java index 04b621e..8b40d0e 100644 --- a/mini-game/src/main/java/com/mini/game/misc/pubsub/base/Pub.java +++ b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Pub.java @@ -1,4 +1,4 @@ -package com.mini.game.misc.pubsub.base; +package com.paradogs.game.misc.pubsub.base; /** * @author: yumi diff --git a/mini-game/src/main/java/com/mini/game/misc/pubsub/base/Sub.java b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Sub.java similarity index 76% rename from mini-game/src/main/java/com/mini/game/misc/pubsub/base/Sub.java rename to paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Sub.java index 05b9de4..74b6517 100644 --- a/mini-game/src/main/java/com/mini/game/misc/pubsub/base/Sub.java +++ b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Sub.java @@ -1,4 +1,4 @@ -package com.mini.game.misc.pubsub.base; +package com.paradogs.game.misc.pubsub.base; /** * @author: yumi diff --git a/mini-game/src/main/java/com/mini/game/pojo/blob/BaseBlob.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseBlob.java similarity index 93% rename from mini-game/src/main/java/com/mini/game/pojo/blob/BaseBlob.java rename to paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseBlob.java index f3ef9cd..3c7495d 100644 --- a/mini-game/src/main/java/com/mini/game/pojo/blob/BaseBlob.java +++ b/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseBlob.java @@ -1,4 +1,4 @@ -package com.mini.game.pojo.blob; +package com.paradogs.game.pojo.blob; import lombok.Data; diff --git a/mini-game/src/main/java/com/mini/game/pojo/blob/BaseInfo.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseInfo.java similarity index 93% rename from mini-game/src/main/java/com/mini/game/pojo/blob/BaseInfo.java rename to paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseInfo.java index 3213c28..8924e9b 100644 --- a/mini-game/src/main/java/com/mini/game/pojo/blob/BaseInfo.java +++ b/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseInfo.java @@ -1,4 +1,4 @@ -package com.mini.game.pojo.blob; +package com.paradogs.game.pojo.blob; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/mini-game/src/main/java/com/mini/game/pojo/blob/PlayerCurrency.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/PlayerCurrency.java similarity index 90% rename from mini-game/src/main/java/com/mini/game/pojo/blob/PlayerCurrency.java rename to paradogs-game/src/main/java/com/paradogs/game/pojo/blob/PlayerCurrency.java index ad188de..902e050 100644 --- a/mini-game/src/main/java/com/mini/game/pojo/blob/PlayerCurrency.java +++ b/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/PlayerCurrency.java @@ -1,4 +1,4 @@ -package com.mini.game.pojo.blob; +package com.paradogs.game.pojo.blob; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/mini-game/src/main/java/com/mini/game/pojo/blob/WarOrder.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/WarOrder.java similarity index 90% rename from mini-game/src/main/java/com/mini/game/pojo/blob/WarOrder.java rename to paradogs-game/src/main/java/com/paradogs/game/pojo/blob/WarOrder.java index fbaa102..f11dd4c 100644 --- a/mini-game/src/main/java/com/mini/game/pojo/blob/WarOrder.java +++ b/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/WarOrder.java @@ -1,15 +1,13 @@ -package com.mini.game.pojo.blob; +package com.paradogs.game.pojo.blob; -import com.alibaba.excel.annotation.ExcelIgnore; -import com.mini.common.utils.SpringUtils; -import com.mini.game.pojo.excel.ExcelWarOrderTask; -import com.mini.game.service.impl.WarOrderServiceImpl; +import com.paradogs.common.utils.SpringUtils; +import com.paradogs.game.pojo.excel.ExcelWarOrderTask; +import com.paradogs.game.service.impl.WarOrderServiceImpl; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; -import java.text.DateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; diff --git a/mini-game/src/main/java/com/mini/game/pojo/db/ModifyPlayerMsg.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/db/ModifyPlayerMsg.java similarity index 71% rename from mini-game/src/main/java/com/mini/game/pojo/db/ModifyPlayerMsg.java rename to paradogs-game/src/main/java/com/paradogs/game/pojo/db/ModifyPlayerMsg.java index 0bb5f09..f908356 100644 --- a/mini-game/src/main/java/com/mini/game/pojo/db/ModifyPlayerMsg.java +++ b/paradogs-game/src/main/java/com/paradogs/game/pojo/db/ModifyPlayerMsg.java @@ -1,8 +1,7 @@ -package com.mini.game.pojo.db; +package com.paradogs.game.pojo.db; -import com.mini.common.message.BaseMessage; -import com.mini.game.pojo.entity.Player; -import lombok.AllArgsConstructor; +import com.paradogs.common.message.BaseMessage; +import com.paradogs.game.pojo.entity.Player; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/mini-game/src/main/java/com/mini/game/pojo/entity/Player.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/entity/Player.java similarity index 86% rename from mini-game/src/main/java/com/mini/game/pojo/entity/Player.java rename to paradogs-game/src/main/java/com/paradogs/game/pojo/entity/Player.java index fc06f63..f4a263e 100644 --- a/mini-game/src/main/java/com/mini/game/pojo/entity/Player.java +++ b/paradogs-game/src/main/java/com/paradogs/game/pojo/entity/Player.java @@ -1,22 +1,21 @@ -package com.mini.game.pojo.entity; +package com.paradogs.game.pojo.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.mini.game.manager.BaseInfoManager; -import com.mini.game.manager.WarOrderManager; -import com.mini.game.manager.WoodShopManager; -import com.mini.game.misc.ObjectAndByteArrayTypeHandler; -import com.mini.game.pojo.blob.BaseInfo; -import com.mini.game.pojo.blob.PlayerCurrency; -import com.mini.game.pojo.blob.WarOrder; +import com.paradogs.game.manager.BaseInfoManager; +import com.paradogs.game.manager.WarOrderManager; +import com.paradogs.game.manager.WoodShopManager; +import com.paradogs.game.misc.ObjectAndByteArrayTypeHandler; +import com.paradogs.game.pojo.blob.BaseInfo; +import com.paradogs.game.pojo.blob.PlayerCurrency; +import com.paradogs.game.pojo.blob.WarOrder; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; -import java.io.FileNotFoundException; import java.io.Serializable; /** diff --git a/mini-common/src/main/java/com/mini/common/misc/ExcelDataTransformListener.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelDataTransformListener.java similarity index 97% rename from mini-common/src/main/java/com/mini/common/misc/ExcelDataTransformListener.java rename to paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelDataTransformListener.java index 3caff17..0132857 100644 --- a/mini-common/src/main/java/com/mini/common/misc/ExcelDataTransformListener.java +++ b/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelDataTransformListener.java @@ -1,4 +1,4 @@ -package com.mini.common.misc; +package com.paradogs.game.pojo.excel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; diff --git a/mini-game/src/main/java/com/mini/game/pojo/excel/ExcelGoods.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelGoods.java similarity index 91% rename from mini-game/src/main/java/com/mini/game/pojo/excel/ExcelGoods.java rename to paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelGoods.java index 8159788..7e4897d 100644 --- a/mini-game/src/main/java/com/mini/game/pojo/excel/ExcelGoods.java +++ b/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelGoods.java @@ -1,4 +1,4 @@ -package com.mini.game.pojo.excel; +package com.paradogs.game.pojo.excel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/mini-game/src/main/java/com/mini/game/pojo/excel/ExcelWarOrderPrize.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderPrize.java similarity index 96% rename from mini-game/src/main/java/com/mini/game/pojo/excel/ExcelWarOrderPrize.java rename to paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderPrize.java index fef1a02..9d32175 100644 --- a/mini-game/src/main/java/com/mini/game/pojo/excel/ExcelWarOrderPrize.java +++ b/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderPrize.java @@ -1,4 +1,4 @@ -package com.mini.game.pojo.excel; +package com.paradogs.game.pojo.excel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; diff --git a/mini-game/src/main/java/com/mini/game/pojo/excel/ExcelWarOrderTask.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderTask.java similarity index 97% rename from mini-game/src/main/java/com/mini/game/pojo/excel/ExcelWarOrderTask.java rename to paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderTask.java index 5b32c81..0f1259e 100644 --- a/mini-game/src/main/java/com/mini/game/pojo/excel/ExcelWarOrderTask.java +++ b/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderTask.java @@ -1,4 +1,4 @@ -package com.mini.game.pojo.excel; +package com.paradogs.game.pojo.excel; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; diff --git a/mini-game/src/main/java/com/mini/game/pojo/notify/CompleteTaskNotify.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/notify/CompleteTaskNotify.java similarity index 84% rename from mini-game/src/main/java/com/mini/game/pojo/notify/CompleteTaskNotify.java rename to paradogs-game/src/main/java/com/paradogs/game/pojo/notify/CompleteTaskNotify.java index 4f1c33a..a96c36b 100644 --- a/mini-game/src/main/java/com/mini/game/pojo/notify/CompleteTaskNotify.java +++ b/paradogs-game/src/main/java/com/paradogs/game/pojo/notify/CompleteTaskNotify.java @@ -1,4 +1,4 @@ -package com.mini.game.pojo.notify; +package com.paradogs.game.pojo.notify; import lombok.Data; diff --git a/mini-game/src/main/java/com/mini/game/proto/ProtoMsg.java b/paradogs-game/src/main/java/com/paradogs/game/proto/ProtoMsg.java similarity index 99% rename from mini-game/src/main/java/com/mini/game/proto/ProtoMsg.java rename to paradogs-game/src/main/java/com/paradogs/game/proto/ProtoMsg.java index e8ad63e..011be1d 100644 --- a/mini-game/src/main/java/com/mini/game/proto/ProtoMsg.java +++ b/paradogs-game/src/main/java/com/paradogs/game/proto/ProtoMsg.java @@ -1,4 +1,4 @@ -package com.mini.game.proto;// Generated by the protocol buffer compiler. DO NOT EDIT! +package com.paradogs.game.proto;// Generated by the protocol buffer compiler. DO NOT EDIT! // source: Entity.proto public final class ProtoMsg { diff --git a/mini-game/src/main/java/com/mini/game/server/GameMainChannelInitializer.java b/paradogs-game/src/main/java/com/paradogs/game/server/GameMainChannelInitializer.java similarity index 89% rename from mini-game/src/main/java/com/mini/game/server/GameMainChannelInitializer.java rename to paradogs-game/src/main/java/com/paradogs/game/server/GameMainChannelInitializer.java index aabde82..52896d3 100644 --- a/mini-game/src/main/java/com/mini/game/server/GameMainChannelInitializer.java +++ b/paradogs-game/src/main/java/com/paradogs/game/server/GameMainChannelInitializer.java @@ -1,8 +1,8 @@ -package com.mini.game.server; +package com.paradogs.game.server; -import com.mini.common.netty.Codec; -import com.mini.game.handler.base.GameMessageHandler; -import com.mini.game.misc.GameRepository; +import com.paradogs.common.netty.Codec; +import com.paradogs.game.handler.base.GameMessageHandler; +import com.paradogs.game.misc.GameRepository; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInitializer; import io.netty.channel.socket.nio.NioSocketChannel; diff --git a/mini-game/src/main/java/com/mini/game/server/GameServer.java b/paradogs-game/src/main/java/com/paradogs/game/server/GameServer.java similarity index 95% rename from mini-game/src/main/java/com/mini/game/server/GameServer.java rename to paradogs-game/src/main/java/com/paradogs/game/server/GameServer.java index e64de9c..d2d0d2e 100644 --- a/mini-game/src/main/java/com/mini/game/server/GameServer.java +++ b/paradogs-game/src/main/java/com/paradogs/game/server/GameServer.java @@ -1,6 +1,6 @@ -package com.mini.game.server; +package com.paradogs.game.server; -import com.mini.game.misc.GameRepository; +import com.paradogs.game.misc.GameRepository; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; import io.netty.channel.nio.NioEventLoopGroup; diff --git a/mini-game/src/main/java/com/mini/game/server/ServerRunner.java b/paradogs-game/src/main/java/com/paradogs/game/server/ServerRunner.java similarity index 94% rename from mini-game/src/main/java/com/mini/game/server/ServerRunner.java rename to paradogs-game/src/main/java/com/paradogs/game/server/ServerRunner.java index e9eea21..622fba7 100644 --- a/mini-game/src/main/java/com/mini/game/server/ServerRunner.java +++ b/paradogs-game/src/main/java/com/paradogs/game/server/ServerRunner.java @@ -1,4 +1,4 @@ -package com.mini.game.server; +package com.paradogs.game.server; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/mini-game/src/main/java/com/mini/game/server/thread/CGMainHandleThread.java b/paradogs-game/src/main/java/com/paradogs/game/server/thread/CGMainHandleThread.java similarity index 81% rename from mini-game/src/main/java/com/mini/game/server/thread/CGMainHandleThread.java rename to paradogs-game/src/main/java/com/paradogs/game/server/thread/CGMainHandleThread.java index 40b8256..3551bf8 100644 --- a/mini-game/src/main/java/com/mini/game/server/thread/CGMainHandleThread.java +++ b/paradogs-game/src/main/java/com/paradogs/game/server/thread/CGMainHandleThread.java @@ -1,9 +1,9 @@ -package com.mini.game.server.thread; +package com.paradogs.game.server.thread; -import com.mini.common.message.BaseMessage; -import com.mini.common.utils.SpringUtils; -import com.mini.game.misc.GameRepository; -import com.mini.game.pojo.entity.Player; +import com.paradogs.common.message.BaseMessage; +import com.paradogs.common.utils.SpringUtils; +import com.paradogs.game.misc.GameRepository; +import com.paradogs.game.pojo.entity.Player; import lombok.extern.slf4j.Slf4j; /** diff --git a/mini-game/src/main/java/com/mini/game/server/thread/DBHandlerThread.java b/paradogs-game/src/main/java/com/paradogs/game/server/thread/DBHandlerThread.java similarity index 83% rename from mini-game/src/main/java/com/mini/game/server/thread/DBHandlerThread.java rename to paradogs-game/src/main/java/com/paradogs/game/server/thread/DBHandlerThread.java index cd9042d..b07acb3 100644 --- a/mini-game/src/main/java/com/mini/game/server/thread/DBHandlerThread.java +++ b/paradogs-game/src/main/java/com/paradogs/game/server/thread/DBHandlerThread.java @@ -1,11 +1,11 @@ -package com.mini.game.server.thread; +package com.paradogs.game.server.thread; -import com.mini.common.handler.CGHandler; -import com.mini.common.message.BaseMessage; -import com.mini.common.utils.SpringUtils; -import com.mini.game.misc.GameRepository; -import com.mini.game.pojo.db.ModifyPlayerMsg; -import com.mini.game.service.impl.PlayerServiceImpl; +import com.paradogs.common.handler.CGHandler; +import com.paradogs.common.message.BaseMessage; +import com.paradogs.common.utils.SpringUtils; +import com.paradogs.game.misc.GameRepository; +import com.paradogs.game.pojo.db.ModifyPlayerMsg; +import com.paradogs.game.service.impl.PlayerServiceImpl; import lombok.extern.slf4j.Slf4j; /** diff --git a/mini-game/src/main/java/com/mini/game/service/PlayerService.java b/paradogs-game/src/main/java/com/paradogs/game/service/PlayerService.java similarity index 71% rename from mini-game/src/main/java/com/mini/game/service/PlayerService.java rename to paradogs-game/src/main/java/com/paradogs/game/service/PlayerService.java index 4c9ac01..61d00ff 100644 --- a/mini-game/src/main/java/com/mini/game/service/PlayerService.java +++ b/paradogs-game/src/main/java/com/paradogs/game/service/PlayerService.java @@ -1,8 +1,8 @@ -package com.mini.game.service; +package com.paradogs.game.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.mini.game.pojo.entity.Player; +import com.paradogs.game.pojo.entity.Player; /** * @author: yumi diff --git a/mini-game/src/main/java/com/mini/game/service/WarOrderService.java b/paradogs-game/src/main/java/com/paradogs/game/service/WarOrderService.java similarity index 76% rename from mini-game/src/main/java/com/mini/game/service/WarOrderService.java rename to paradogs-game/src/main/java/com/paradogs/game/service/WarOrderService.java index df70ad9..5d1911f 100644 --- a/mini-game/src/main/java/com/mini/game/service/WarOrderService.java +++ b/paradogs-game/src/main/java/com/paradogs/game/service/WarOrderService.java @@ -1,4 +1,4 @@ -package com.mini.game.service; +package com.paradogs.game.service; /** * @author: yumi diff --git a/mini-game/src/main/java/com/mini/game/service/impl/PlayerServiceImpl.java b/paradogs-game/src/main/java/com/paradogs/game/service/impl/PlayerServiceImpl.java similarity index 62% rename from mini-game/src/main/java/com/mini/game/service/impl/PlayerServiceImpl.java rename to paradogs-game/src/main/java/com/paradogs/game/service/impl/PlayerServiceImpl.java index 11e13a1..9543d13 100644 --- a/mini-game/src/main/java/com/mini/game/service/impl/PlayerServiceImpl.java +++ b/paradogs-game/src/main/java/com/paradogs/game/service/impl/PlayerServiceImpl.java @@ -1,9 +1,9 @@ -package com.mini.game.service.impl; +package com.paradogs.game.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.mini.game.mapper.PlayerMapper; -import com.mini.game.pojo.entity.Player; -import com.mini.game.service.PlayerService; +import com.paradogs.game.mapper.PlayerMapper; +import com.paradogs.game.pojo.entity.Player; +import com.paradogs.game.service.PlayerService; import org.springframework.stereotype.Service; /** diff --git a/mini-game/src/main/java/com/mini/game/service/impl/WarOrderServiceImpl.java b/paradogs-game/src/main/java/com/paradogs/game/service/impl/WarOrderServiceImpl.java similarity index 86% rename from mini-game/src/main/java/com/mini/game/service/impl/WarOrderServiceImpl.java rename to paradogs-game/src/main/java/com/paradogs/game/service/impl/WarOrderServiceImpl.java index b1cecb9..467bfa2 100644 --- a/mini-game/src/main/java/com/mini/game/service/impl/WarOrderServiceImpl.java +++ b/paradogs-game/src/main/java/com/paradogs/game/service/impl/WarOrderServiceImpl.java @@ -1,16 +1,13 @@ -package com.mini.game.service.impl; +package com.paradogs.game.service.impl; -import com.mini.common.utils.ExcelUtils; -import com.mini.common.utils.SpringUtils; -import com.mini.game.misc.GameRepository; -import com.mini.game.misc.PubSubManager; -import com.mini.game.misc.pubsub.base.Sub; -import com.mini.game.pojo.blob.WarOrder; -import com.mini.game.pojo.entity.Player; -import com.mini.game.pojo.excel.ExcelWarOrderPrize; -import com.mini.game.pojo.excel.ExcelWarOrderTask; -import com.mini.game.pojo.notify.CompleteTaskNotify; -import com.mini.game.service.WarOrderService; +import com.paradogs.common.utils.ExcelUtils; +import com.paradogs.game.misc.GameRepository; +import com.paradogs.game.misc.PubSubManager; +import com.paradogs.game.misc.pubsub.base.Sub; +import com.paradogs.game.pojo.entity.Player; +import com.paradogs.game.pojo.excel.ExcelWarOrderPrize; +import com.paradogs.game.pojo.excel.ExcelWarOrderTask; +import com.paradogs.game.service.WarOrderService; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/mini-game/src/main/proto/Entity.proto b/paradogs-game/src/main/proto/Entity.proto similarity index 100% rename from mini-game/src/main/proto/Entity.proto rename to paradogs-game/src/main/proto/Entity.proto diff --git a/mini-game/src/main/resources/application.yml b/paradogs-game/src/main/resources/application.yml similarity index 100% rename from mini-game/src/main/resources/application.yml rename to paradogs-game/src/main/resources/application.yml diff --git "a/mini-game/src/main/resources/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" "b/paradogs-game/src/main/resources/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" similarity index 100% rename from "mini-game/src/main/resources/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" rename to "paradogs-game/src/main/resources/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" diff --git "a/mini-game/src/main/resources/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" "b/paradogs-game/src/main/resources/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" similarity index 100% rename from "mini-game/src/main/resources/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" rename to "paradogs-game/src/main/resources/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" diff --git a/paradogs-game/src/test/java/com/paradogs/game/GameTest.java b/paradogs-game/src/test/java/com/paradogs/game/GameTest.java new file mode 100644 index 0000000..0ed7c40 --- /dev/null +++ b/paradogs-game/src/test/java/com/paradogs/game/GameTest.java @@ -0,0 +1,70 @@ +//package com.paradogs.game; +// +//import com.paradogs.game.pojo.blob.BaseInfo; +//import com.paradogs.game.pojo.blob.WarOrder; +//import com.paradogs.game.pojo.entity.Player; +//import com.paradogs.game.service.PlayerService; +//import org.junit.jupiter.api.Test; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.boot.test.context.SpringBootTest; +// +//import java.util.Map; +//import java.util.*; +//import java.util.concurrent.BlockingQueue; +//import java.util.concurrent.ConcurrentHashMap; +//import java.util.concurrent.CopyOnWriteArrayList; +//import java.util.concurrent.LinkedBlockingQueue; +// +///** +// * @author: yumi +// * @date: 2023-03-13 11:43 +// * @Description: TODO +// */ +//@SpringBootTest +//public class GameTest { +// +// @Autowired +// private PlayerService playerService; +// +// @Test +// void test1() { +//// PlayerCurrency playerCurrency = new PlayerCurrency(); +//// playerCurrency.setGold(100000L); +//// playerCurrency.setWood(0L); +//// playerService.update(Wrap.lbu().set(Player::getCurrency, playerCurrency)); +// +// playerService.list().forEach(System.out::println); +// } +// +// @Test +// void test2() throws InterruptedException { +// BlockingQueue blockingQueue = new LinkedBlockingQueue<>(); +// System.out.println(blockingQueue.poll()); +// blockingQueue.put("11"); +// System.out.println(blockingQueue.poll()); +// } +// +// +// @Test +// void test4() { +// List list = playerService.list(); +// Player player = list.get(0); +// +// WarOrder warOrder = new WarOrder(); +// warOrder.setCurPoint(0L); +// warOrder.setIsVip(false); +// warOrder.setReceivePrizeId(new CopyOnWriteArrayList<>()); +// Map map = new ConcurrentHashMap<>(); +//// WarOrder.TaskInfo taskInfo = new WarOrder.TaskInfo(); +//// taskInfo.setCurCompleteNum(0L); +//// taskInfo.setCurCompleteTimes(0); +//// taskInfo.setNextRefreshTime(); +//// map.put(1L, taskInfo); +// warOrder.setTaskInfoMap(map); +// player.setWarOrder(warOrder); +// player.setBaseInfo(new BaseInfo(new CopyOnWriteArrayList<>(), new ConcurrentHashMap<>())); +// playerService.updateById(player); +// System.out.println(); +// } +// +//} diff --git a/mini-game/target/classes/application.yml b/paradogs-game/target/classes/application.yml similarity index 100% rename from mini-game/target/classes/application.yml rename to paradogs-game/target/classes/application.yml diff --git "a/mini-game/target/classes/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" "b/paradogs-game/target/classes/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" similarity index 100% rename from "mini-game/target/classes/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" rename to "paradogs-game/target/classes/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" diff --git "a/mini-game/target/classes/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" "b/paradogs-game/target/classes/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" similarity index 100% rename from "mini-game/target/classes/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" rename to "paradogs-game/target/classes/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" diff --git a/mini-gate/pom.xml b/paradogs-gate/pom.xml similarity index 61% rename from mini-gate/pom.xml rename to paradogs-gate/pom.xml index c8297db..f83a53e 100644 --- a/mini-gate/pom.xml +++ b/paradogs-gate/pom.xml @@ -3,24 +3,24 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - mini - com.mini + paradogs + com.paradogs 0.0.1-SNAPSHOT 4.0.0 - mini-gate + paradogs-gate - com.mini - mini-common + com.paradogs + paradogs-common - com.mini - mini-game + com.paradogs + paradogs-game diff --git a/mini-gate/src/main/java/com/mini/gate/GateApplication.java b/paradogs-gate/src/main/java/com/paradogs/gate/GateApplication.java similarity index 95% rename from mini-gate/src/main/java/com/mini/gate/GateApplication.java rename to paradogs-gate/src/main/java/com/paradogs/gate/GateApplication.java index 1c3a3d1..778dbfe 100644 --- a/mini-gate/src/main/java/com/mini/gate/GateApplication.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/GateApplication.java @@ -1,4 +1,4 @@ -package com.mini.gate; +package com.paradogs.gate; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/mini-gate/src/main/java/com/mini/gate/client/ClientCfg.java b/paradogs-gate/src/main/java/com/paradogs/gate/client/ClientCfg.java similarity index 87% rename from mini-gate/src/main/java/com/mini/gate/client/ClientCfg.java rename to paradogs-gate/src/main/java/com/paradogs/gate/client/ClientCfg.java index eb04ae3..7f08999 100644 --- a/mini-gate/src/main/java/com/mini/gate/client/ClientCfg.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/client/ClientCfg.java @@ -1,4 +1,4 @@ -package com.mini.gate.client; +package com.paradogs.gate.client; import lombok.Data; diff --git a/mini-gate/src/main/java/com/mini/gate/client/ClientManager.java b/paradogs-gate/src/main/java/com/paradogs/gate/client/ClientManager.java similarity index 94% rename from mini-gate/src/main/java/com/mini/gate/client/ClientManager.java rename to paradogs-gate/src/main/java/com/paradogs/gate/client/ClientManager.java index d6a3fb8..02d5642 100644 --- a/mini-gate/src/main/java/com/mini/gate/client/ClientManager.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/client/ClientManager.java @@ -1,6 +1,6 @@ -package com.mini.gate.client; +package com.paradogs.gate.client; -import com.mini.gate.misc.ServiceServer; +import com.paradogs.gate.misc.ServiceServer; import io.netty.bootstrap.Bootstrap; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; diff --git a/mini-gate/src/main/java/com/mini/gate/client/GateClientChannelInitializer.java b/paradogs-gate/src/main/java/com/paradogs/gate/client/GateClientChannelInitializer.java similarity index 93% rename from mini-gate/src/main/java/com/mini/gate/client/GateClientChannelInitializer.java rename to paradogs-gate/src/main/java/com/paradogs/gate/client/GateClientChannelInitializer.java index 9e45df3..3898662 100644 --- a/mini-gate/src/main/java/com/mini/gate/client/GateClientChannelInitializer.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/client/GateClientChannelInitializer.java @@ -1,7 +1,7 @@ -package com.mini.gate.client; +package com.paradogs.gate.client; -import com.mini.gate.handler.GateMessageHandler; -import com.mini.gate.misc.GateCodec; +import com.paradogs.gate.handler.GateMessageHandler; +import com.paradogs.gate.misc.GateCodec; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInitializer; import io.netty.channel.socket.nio.NioSocketChannel; diff --git a/mini-gate/src/main/java/com/mini/gate/config/ClientConfig.java b/paradogs-gate/src/main/java/com/paradogs/gate/config/ClientConfig.java similarity index 82% rename from mini-gate/src/main/java/com/mini/gate/config/ClientConfig.java rename to paradogs-gate/src/main/java/com/paradogs/gate/config/ClientConfig.java index ebc657b..7def352 100644 --- a/mini-gate/src/main/java/com/mini/gate/config/ClientConfig.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/config/ClientConfig.java @@ -1,6 +1,6 @@ -package com.mini.gate.config; +package com.paradogs.gate.config; -import com.mini.gate.client.ClientCfg; +import com.paradogs.gate.client.ClientCfg; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; diff --git a/mini-gate/src/main/java/com/mini/gate/handler/GateMessageHandler.java b/paradogs-gate/src/main/java/com/paradogs/gate/handler/GateMessageHandler.java similarity index 88% rename from mini-gate/src/main/java/com/mini/gate/handler/GateMessageHandler.java rename to paradogs-gate/src/main/java/com/paradogs/gate/handler/GateMessageHandler.java index a824178..ccddb0e 100644 --- a/mini-gate/src/main/java/com/mini/gate/handler/GateMessageHandler.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/handler/GateMessageHandler.java @@ -1,13 +1,13 @@ -package com.mini.gate.handler; +package com.paradogs.gate.handler; -import com.mini.common.message.CGHeartMsg; -import com.mini.common.message.GCHeartMsg; -import com.mini.common.message.MsgHeader; -import com.mini.common.proto.ProtoMsg; -import com.mini.game.message.CGLoginSuccessMsg; -import com.mini.gate.misc.ServiceServer; -import com.mini.gate.misc.GateMessage; -import com.mini.gate.misc.GateRepository; +import com.paradogs.gate.misc.GateMessage; +import com.paradogs.gate.misc.GateRepository; +import com.paradogs.gate.misc.ServiceServer; +import com.paradogs.common.message.CGHeartMsg; +import com.paradogs.common.message.GCHeartMsg; +import com.paradogs.common.message.MsgHeader; +import com.paradogs.common.proto.ProtoMsg; +import com.paradogs.game.message.CGLoginSuccessMsg; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; diff --git a/mini-gate/src/main/java/com/mini/gate/misc/GateCodec.java b/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateCodec.java similarity index 91% rename from mini-gate/src/main/java/com/mini/gate/misc/GateCodec.java rename to paradogs-gate/src/main/java/com/paradogs/gate/misc/GateCodec.java index 52b864d..8158395 100644 --- a/mini-gate/src/main/java/com/mini/gate/misc/GateCodec.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateCodec.java @@ -1,6 +1,6 @@ -package com.mini.gate.misc; +package com.paradogs.gate.misc; -import com.mini.common.message.BaseMessage; +import com.paradogs.common.message.BaseMessage; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; diff --git a/mini-gate/src/main/java/com/mini/gate/misc/GateMessage.java b/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateMessage.java similarity index 86% rename from mini-gate/src/main/java/com/mini/gate/misc/GateMessage.java rename to paradogs-gate/src/main/java/com/paradogs/gate/misc/GateMessage.java index 05ac23c..4982e68 100644 --- a/mini-gate/src/main/java/com/mini/gate/misc/GateMessage.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateMessage.java @@ -1,8 +1,8 @@ -package com.mini.gate.misc; +package com.paradogs.gate.misc; import com.google.protobuf.InvalidProtocolBufferException; -import com.mini.common.message.BaseMessage; -import com.mini.common.message.MsgHeader; +import com.paradogs.common.message.BaseMessage; +import com.paradogs.common.message.MsgHeader; import io.netty.buffer.ByteBuf; import lombok.Data; diff --git a/mini-gate/src/main/java/com/mini/gate/misc/GateRepository.java b/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateRepository.java similarity index 98% rename from mini-gate/src/main/java/com/mini/gate/misc/GateRepository.java rename to paradogs-gate/src/main/java/com/paradogs/gate/misc/GateRepository.java index 79e9928..a4e35ac 100644 --- a/mini-gate/src/main/java/com/mini/gate/misc/GateRepository.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateRepository.java @@ -1,4 +1,4 @@ -package com.mini.gate.misc; +package com.paradogs.gate.misc; import io.netty.channel.Channel; import io.netty.channel.socket.nio.NioSocketChannel; diff --git a/mini-gate/src/main/java/com/mini/gate/misc/ServiceServer.java b/paradogs-gate/src/main/java/com/paradogs/gate/misc/ServiceServer.java similarity index 96% rename from mini-gate/src/main/java/com/mini/gate/misc/ServiceServer.java rename to paradogs-gate/src/main/java/com/paradogs/gate/misc/ServiceServer.java index 0b9433f..a881db7 100644 --- a/mini-gate/src/main/java/com/mini/gate/misc/ServiceServer.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/misc/ServiceServer.java @@ -1,6 +1,6 @@ -package com.mini.gate.misc; +package com.paradogs.gate.misc; -import com.mini.gate.client.ClientCfg; +import com.paradogs.gate.client.ClientCfg; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.nio.NioEventLoopGroup; diff --git a/mini-gate/src/main/java/com/mini/gate/server/GateChannelDuplexHandler.java b/paradogs-gate/src/main/java/com/paradogs/gate/server/GateChannelDuplexHandler.java similarity index 94% rename from mini-gate/src/main/java/com/mini/gate/server/GateChannelDuplexHandler.java rename to paradogs-gate/src/main/java/com/paradogs/gate/server/GateChannelDuplexHandler.java index 052d068..345e9bd 100644 --- a/mini-gate/src/main/java/com/mini/gate/server/GateChannelDuplexHandler.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/server/GateChannelDuplexHandler.java @@ -1,4 +1,4 @@ -package com.mini.gate.server; +package com.paradogs.gate.server; import io.netty.channel.ChannelDuplexHandler; import io.netty.channel.ChannelHandlerContext; diff --git a/mini-gate/src/main/java/com/mini/gate/server/GateServer.java b/paradogs-gate/src/main/java/com/paradogs/gate/server/GateServer.java similarity index 97% rename from mini-gate/src/main/java/com/mini/gate/server/GateServer.java rename to paradogs-gate/src/main/java/com/paradogs/gate/server/GateServer.java index 0e9f5d9..0c4f247 100644 --- a/mini-gate/src/main/java/com/mini/gate/server/GateServer.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/server/GateServer.java @@ -1,4 +1,4 @@ -package com.mini.gate.server; +package com.paradogs.gate.server; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; diff --git a/mini-gate/src/main/java/com/mini/gate/server/GateServerChannelInitializer.java b/paradogs-gate/src/main/java/com/paradogs/gate/server/GateServerChannelInitializer.java similarity index 88% rename from mini-gate/src/main/java/com/mini/gate/server/GateServerChannelInitializer.java rename to paradogs-gate/src/main/java/com/paradogs/gate/server/GateServerChannelInitializer.java index 5f003c4..fc05691 100644 --- a/mini-gate/src/main/java/com/mini/gate/server/GateServerChannelInitializer.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/server/GateServerChannelInitializer.java @@ -1,9 +1,9 @@ -package com.mini.gate.server; +package com.paradogs.gate.server; -import com.mini.gate.handler.GateMessageHandler; -import com.mini.gate.misc.ServiceServer; -import com.mini.gate.misc.GateCodec; -import com.mini.gate.misc.GateRepository; +import com.paradogs.gate.handler.GateMessageHandler; +import com.paradogs.gate.misc.ServiceServer; +import com.paradogs.gate.misc.GateCodec; +import com.paradogs.gate.misc.GateRepository; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInitializer; import io.netty.channel.socket.nio.NioSocketChannel; diff --git a/mini-gate/src/main/java/com/mini/gate/server/ServerRunner.java b/paradogs-gate/src/main/java/com/paradogs/gate/server/ServerRunner.java similarity index 82% rename from mini-gate/src/main/java/com/mini/gate/server/ServerRunner.java rename to paradogs-gate/src/main/java/com/paradogs/gate/server/ServerRunner.java index 75cd133..adbfbd7 100644 --- a/mini-gate/src/main/java/com/mini/gate/server/ServerRunner.java +++ b/paradogs-gate/src/main/java/com/paradogs/gate/server/ServerRunner.java @@ -1,8 +1,8 @@ -package com.mini.gate.server; +package com.paradogs.gate.server; -import com.mini.gate.client.ClientCfg; -import com.mini.gate.client.ClientManager; -import com.mini.gate.config.ClientConfig; +import com.paradogs.gate.client.ClientCfg; +import com.paradogs.gate.client.ClientManager; +import com.paradogs.gate.config.ClientConfig; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; diff --git a/mini-gate/src/main/resources/application.yml b/paradogs-gate/src/main/resources/application.yml similarity index 100% rename from mini-gate/src/main/resources/application.yml rename to paradogs-gate/src/main/resources/application.yml diff --git a/mini-gate/target/classes/application.yml b/paradogs-gate/target/classes/application.yml similarity index 100% rename from mini-gate/target/classes/application.yml rename to paradogs-gate/target/classes/application.yml diff --git a/mini-login/pom.xml b/paradogs-login/pom.xml similarity index 88% rename from mini-login/pom.xml rename to paradogs-login/pom.xml index 3b7070d..4284a24 100644 --- a/mini-login/pom.xml +++ b/paradogs-login/pom.xml @@ -3,19 +3,19 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - mini - com.mini + paradogs + com.paradogs 0.0.1-SNAPSHOT 4.0.0 - mini-login + paradogs-login - com.mini - mini-common + com.paradogs + paradogs-common @@ -34,8 +34,8 @@ - com.mini - mini-game + com.paradogs + paradogs-game diff --git a/mini-login/src/main/java/com/mini/login/LoginApplication.java b/paradogs-login/src/main/java/com/paradogs/login/LoginApplication.java similarity index 88% rename from mini-login/src/main/java/com/mini/login/LoginApplication.java rename to paradogs-login/src/main/java/com/paradogs/login/LoginApplication.java index b0da69a..417115e 100644 --- a/mini-login/src/main/java/com/mini/login/LoginApplication.java +++ b/paradogs-login/src/main/java/com/paradogs/login/LoginApplication.java @@ -1,6 +1,5 @@ -package com.mini.login; +package com.paradogs.login; -import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; diff --git a/mini-login/src/main/java/com/mini/login/client/GateClient.java b/paradogs-login/src/main/java/com/paradogs/login/client/GateClient.java similarity index 89% rename from mini-login/src/main/java/com/mini/login/client/GateClient.java rename to paradogs-login/src/main/java/com/paradogs/login/client/GateClient.java index 4aab5e9..b7ffac0 100644 --- a/mini-login/src/main/java/com/mini/login/client/GateClient.java +++ b/paradogs-login/src/main/java/com/paradogs/login/client/GateClient.java @@ -1,6 +1,6 @@ -package com.mini.login.client; +package com.paradogs.login.client; -import com.mini.common.misc.GameChannelInitializer; +import com.paradogs.common.misc.GameChannelInitializer; import io.netty.bootstrap.Bootstrap; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; diff --git a/mini-login/src/main/java/com/mini/login/handler/CGLoginMsgHandler.java b/paradogs-login/src/main/java/com/paradogs/login/handler/CGLoginMsgHandler.java similarity index 80% rename from mini-login/src/main/java/com/mini/login/handler/CGLoginMsgHandler.java rename to paradogs-login/src/main/java/com/paradogs/login/handler/CGLoginMsgHandler.java index 928e76f..b45361a 100644 --- a/mini-login/src/main/java/com/mini/login/handler/CGLoginMsgHandler.java +++ b/paradogs-login/src/main/java/com/paradogs/login/handler/CGLoginMsgHandler.java @@ -1,12 +1,12 @@ -package com.mini.login.handler; - -import com.mini.common.handler.BaseHandler; -import com.mini.common.utils.Wrap; -import com.mini.game.message.CGLoginSuccessMsg; -import com.mini.login.message.CGLoginMsg; -import com.mini.login.message.GCLoginMsg; -import com.mini.login.pojo.entity.Player; -import com.mini.login.service.PlayerService; +package com.paradogs.login.handler; + +import com.paradogs.common.handler.BaseHandler; +import com.paradogs.common.utils.Wrap; +import com.paradogs.game.message.CGLoginSuccessMsg; +import com.paradogs.login.message.CGLoginMsg; +import com.paradogs.login.message.GCLoginMsg; +import com.paradogs.login.pojo.entity.Player; +import com.paradogs.login.service.PlayerService; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/mini-login/src/main/java/com/mini/login/handler/GCLoginSuccessMsgHandler.java b/paradogs-login/src/main/java/com/paradogs/login/handler/GCLoginSuccessMsgHandler.java similarity index 76% rename from mini-login/src/main/java/com/mini/login/handler/GCLoginSuccessMsgHandler.java rename to paradogs-login/src/main/java/com/paradogs/login/handler/GCLoginSuccessMsgHandler.java index cb8ef63..bd1e545 100644 --- a/mini-login/src/main/java/com/mini/login/handler/GCLoginSuccessMsgHandler.java +++ b/paradogs-login/src/main/java/com/paradogs/login/handler/GCLoginSuccessMsgHandler.java @@ -1,7 +1,7 @@ -package com.mini.login.handler; +package com.paradogs.login.handler; -import com.mini.common.handler.BaseHandler; -import com.mini.game.message.GCLoginSuccessMsg; +import com.paradogs.common.handler.BaseHandler; +import com.paradogs.game.message.GCLoginSuccessMsg; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/mini-login/src/main/java/com/mini/login/mapper/PlayerMapper.java b/paradogs-login/src/main/java/com/paradogs/login/mapper/PlayerMapper.java similarity index 75% rename from mini-login/src/main/java/com/mini/login/mapper/PlayerMapper.java rename to paradogs-login/src/main/java/com/paradogs/login/mapper/PlayerMapper.java index 0e8c4b4..0a656be 100644 --- a/mini-login/src/main/java/com/mini/login/mapper/PlayerMapper.java +++ b/paradogs-login/src/main/java/com/paradogs/login/mapper/PlayerMapper.java @@ -1,7 +1,7 @@ -package com.mini.login.mapper; +package com.paradogs.login.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.mini.login.pojo.entity.Player; +import com.paradogs.login.pojo.entity.Player; import org.apache.ibatis.annotations.Mapper; /** diff --git a/mini-login/src/main/java/com/mini/login/message/CGLoginMsg.java b/paradogs-login/src/main/java/com/paradogs/login/message/CGLoginMsg.java similarity index 69% rename from mini-login/src/main/java/com/mini/login/message/CGLoginMsg.java rename to paradogs-login/src/main/java/com/paradogs/login/message/CGLoginMsg.java index b7e6d8a..9f6c780 100644 --- a/mini-login/src/main/java/com/mini/login/message/CGLoginMsg.java +++ b/paradogs-login/src/main/java/com/paradogs/login/message/CGLoginMsg.java @@ -1,7 +1,6 @@ -package com.mini.login.message; +package com.paradogs.login.message; -import com.mini.common.message.BaseMessage; -import com.mini.common.message.CGMessage; +import com.paradogs.common.message.CGMessage; import lombok.Data; /** diff --git a/mini-login/src/main/java/com/mini/login/message/GCLoginMsg.java b/paradogs-login/src/main/java/com/paradogs/login/message/GCLoginMsg.java similarity index 76% rename from mini-login/src/main/java/com/mini/login/message/GCLoginMsg.java rename to paradogs-login/src/main/java/com/paradogs/login/message/GCLoginMsg.java index 5a8f8c8..6d4fdb5 100644 --- a/mini-login/src/main/java/com/mini/login/message/GCLoginMsg.java +++ b/paradogs-login/src/main/java/com/paradogs/login/message/GCLoginMsg.java @@ -1,7 +1,6 @@ -package com.mini.login.message; +package com.paradogs.login.message; -import com.mini.common.message.BaseMessage; -import com.mini.common.message.GCMessage; +import com.paradogs.common.message.GCMessage; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/mini-login/src/main/java/com/mini/login/pojo/blob/BaseBlob.java b/paradogs-login/src/main/java/com/paradogs/login/pojo/blob/BaseBlob.java similarity index 93% rename from mini-login/src/main/java/com/mini/login/pojo/blob/BaseBlob.java rename to paradogs-login/src/main/java/com/paradogs/login/pojo/blob/BaseBlob.java index 484da75..1b77369 100644 --- a/mini-login/src/main/java/com/mini/login/pojo/blob/BaseBlob.java +++ b/paradogs-login/src/main/java/com/paradogs/login/pojo/blob/BaseBlob.java @@ -1,4 +1,4 @@ -package com.mini.login.pojo.blob; +package com.paradogs.login.pojo.blob; import lombok.Data; diff --git a/mini-login/src/main/java/com/mini/login/pojo/blob/PlayerCurrency.java b/paradogs-login/src/main/java/com/paradogs/login/pojo/blob/PlayerCurrency.java similarity index 90% rename from mini-login/src/main/java/com/mini/login/pojo/blob/PlayerCurrency.java rename to paradogs-login/src/main/java/com/paradogs/login/pojo/blob/PlayerCurrency.java index 39d8c5d..d09c911 100644 --- a/mini-login/src/main/java/com/mini/login/pojo/blob/PlayerCurrency.java +++ b/paradogs-login/src/main/java/com/paradogs/login/pojo/blob/PlayerCurrency.java @@ -1,4 +1,4 @@ -package com.mini.login.pojo.blob; +package com.paradogs.login.pojo.blob; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/mini-login/src/main/java/com/mini/login/pojo/entity/Player.java b/paradogs-login/src/main/java/com/paradogs/login/pojo/entity/Player.java similarity index 91% rename from mini-login/src/main/java/com/mini/login/pojo/entity/Player.java rename to paradogs-login/src/main/java/com/paradogs/login/pojo/entity/Player.java index 7041bb7..de02291 100644 --- a/mini-login/src/main/java/com/mini/login/pojo/entity/Player.java +++ b/paradogs-login/src/main/java/com/paradogs/login/pojo/entity/Player.java @@ -1,10 +1,10 @@ -package com.mini.login.pojo.entity; +package com.paradogs.login.pojo.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.mini.login.pojo.blob.PlayerCurrency; +import com.paradogs.login.pojo.blob.PlayerCurrency; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/mini-login/src/main/java/com/mini/login/proto/ProtoMsg.java b/paradogs-login/src/main/java/com/paradogs/login/proto/ProtoMsg.java similarity index 99% rename from mini-login/src/main/java/com/mini/login/proto/ProtoMsg.java rename to paradogs-login/src/main/java/com/paradogs/login/proto/ProtoMsg.java index c8e61f7..173448c 100644 --- a/mini-login/src/main/java/com/mini/login/proto/ProtoMsg.java +++ b/paradogs-login/src/main/java/com/paradogs/login/proto/ProtoMsg.java @@ -1,4 +1,4 @@ -package com.mini.login.proto;// Generated by the protocol buffer compiler. DO NOT EDIT! +package com.paradogs.login.proto;// Generated by the protocol buffer compiler. DO NOT EDIT! // source: Entity.proto public final class ProtoMsg { diff --git a/mini-login/src/main/java/com/mini/login/server/ServerRunner.java b/paradogs-login/src/main/java/com/paradogs/login/server/ServerRunner.java similarity index 80% rename from mini-login/src/main/java/com/mini/login/server/ServerRunner.java rename to paradogs-login/src/main/java/com/paradogs/login/server/ServerRunner.java index 4c6a02f..08ac344 100644 --- a/mini-login/src/main/java/com/mini/login/server/ServerRunner.java +++ b/paradogs-login/src/main/java/com/paradogs/login/server/ServerRunner.java @@ -1,6 +1,6 @@ -package com.mini.login.server; +package com.paradogs.login.server; -import com.mini.login.client.GateClient; +import com.paradogs.common.server.netty.server.ParadogsServer; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; @@ -17,7 +17,7 @@ import org.springframework.stereotype.Component; public class ServerRunner implements ApplicationRunner { @Autowired - private LoginServer loginServer; + private ParadogsServer loginServer; @Override public void run(ApplicationArguments args) throws Exception { diff --git a/mini-login/src/main/java/com/mini/login/service/PlayerService.java b/paradogs-login/src/main/java/com/paradogs/login/service/PlayerService.java similarity index 70% rename from mini-login/src/main/java/com/mini/login/service/PlayerService.java rename to paradogs-login/src/main/java/com/paradogs/login/service/PlayerService.java index b604ace..8aea927 100644 --- a/mini-login/src/main/java/com/mini/login/service/PlayerService.java +++ b/paradogs-login/src/main/java/com/paradogs/login/service/PlayerService.java @@ -1,8 +1,8 @@ -package com.mini.login.service; +package com.paradogs.login.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.mini.login.pojo.entity.Player; +import com.paradogs.login.pojo.entity.Player; /** * @author: yumi diff --git a/mini-login/src/main/java/com/mini/login/service/impl/PlayerServiceImpl.java b/paradogs-login/src/main/java/com/paradogs/login/service/impl/PlayerServiceImpl.java similarity index 62% rename from mini-login/src/main/java/com/mini/login/service/impl/PlayerServiceImpl.java rename to paradogs-login/src/main/java/com/paradogs/login/service/impl/PlayerServiceImpl.java index bf061f5..bc87c4a 100644 --- a/mini-login/src/main/java/com/mini/login/service/impl/PlayerServiceImpl.java +++ b/paradogs-login/src/main/java/com/paradogs/login/service/impl/PlayerServiceImpl.java @@ -1,9 +1,9 @@ -package com.mini.login.service.impl; +package com.paradogs.login.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.mini.login.mapper.PlayerMapper; -import com.mini.login.pojo.entity.Player; -import com.mini.login.service.PlayerService; +import com.paradogs.login.mapper.PlayerMapper; +import com.paradogs.login.pojo.entity.Player; +import com.paradogs.login.service.PlayerService; import org.springframework.stereotype.Service; /** diff --git a/mini-login/src/main/proto/Entity.proto b/paradogs-login/src/main/proto/Entity.proto similarity index 100% rename from mini-login/src/main/proto/Entity.proto rename to paradogs-login/src/main/proto/Entity.proto diff --git a/mini-login/src/main/resources/application.yml b/paradogs-login/src/main/resources/application.yml similarity index 100% rename from mini-login/src/main/resources/application.yml rename to paradogs-login/src/main/resources/application.yml diff --git a/mini-login/src/test/java/com/mini/login/LoginTest.java b/paradogs-login/src/test/java/com/paradogs/login/LoginTest.java similarity index 84% rename from mini-login/src/test/java/com/mini/login/LoginTest.java rename to paradogs-login/src/test/java/com/paradogs/login/LoginTest.java index b1eda1a..3cde8c3 100644 --- a/mini-login/src/test/java/com/mini/login/LoginTest.java +++ b/paradogs-login/src/test/java/com/paradogs/login/LoginTest.java @@ -1,7 +1,7 @@ -package com.mini.login; +package com.paradogs.login; -import com.mini.login.service.PlayerService; +import com.paradogs.login.service.PlayerService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; diff --git a/paradogs-master/pom.xml b/paradogs-master/pom.xml new file mode 100644 index 0000000..f9acdd0 --- /dev/null +++ b/paradogs-master/pom.xml @@ -0,0 +1,43 @@ + + + + paradogs + com.paradogs + 0.0.1-SNAPSHOT + + 4.0.0 + + paradogs-master + + + 8 + 8 + + + + + io.netty + netty-all + + + + + + + + + com.paradogs + paradogs-common-core + 0.0.1-SNAPSHOT + + + + org.springframework.boot + spring-boot-starter-test + + + + + \ No newline at end of file diff --git a/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java b/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java new file mode 100644 index 0000000..998ba7b --- /dev/null +++ b/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java @@ -0,0 +1,16 @@ +package com.paradogs.master; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @author: yumi + * @date: 2023/7/26 16:46 + * @Description: TODO + */ +@SpringBootApplication +public class MasterApplication { + public static void main(String[] args) { + SpringApplication.run(MasterApplication.class, args); + } +} diff --git a/paradogs-master/src/main/resources/application.yml b/paradogs-master/src/main/resources/application.yml new file mode 100644 index 0000000..e733db2 --- /dev/null +++ b/paradogs-master/src/main/resources/application.yml @@ -0,0 +1,19 @@ +netty: + server: + port: 8002 + gate: + port: 80 + +spring: + datasource: + url: jdbc:mysql://47.102.133.168:3306/netty?useUnicode=true&characterEncoding=utf-8&useSSL=false + driver-class-name: com.mysql.jdbc.Driver + username: root + password: root + +mybatis-plus: + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + +excel: + folder-path: classpath:excel/ \ No newline at end of file diff --git a/paradogs-master/src/test/java/com/paradogs/master/test/Test11.java b/paradogs-master/src/test/java/com/paradogs/master/test/Test11.java new file mode 100644 index 0000000..2298267 --- /dev/null +++ b/paradogs-master/src/test/java/com/paradogs/master/test/Test11.java @@ -0,0 +1,20 @@ +package com.paradogs.master.test; + +import com.paradogs.common.core.events.SyncMsgEvent; +import com.paradogs.common.core.utils.SpringUtils; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +/** + * @author: yumi + * @date: 2023/7/26 16:44 + * @Description: TODO + */ +@SpringBootTest +public class Test11 { + + @Test + public void test1() { + SpringUtils.publishEvent(new SyncMsgEvent(1)); + } +} diff --git a/paradogs-test/paradogs-test-client/pom.xml b/paradogs-test/paradogs-test-client/pom.xml new file mode 100644 index 0000000..cc23c38 --- /dev/null +++ b/paradogs-test/paradogs-test-client/pom.xml @@ -0,0 +1,26 @@ + + + + paradogs-test + com.paradogs + 0.0.1-SNAPSHOT + + 4.0.0 + + paradogs-test-client + + + 8 + 8 + + + + + com.paradogs + paradogs-common-client-starter + + + + \ No newline at end of file diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java new file mode 100644 index 0000000..a76b331 --- /dev/null +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java @@ -0,0 +1,30 @@ +package com.paradogs.test.client; + +import com.paradogs.common.core.message.CGTestMsg; +import com.paradogs.common.core.netty.misc.ChannelInitializer; +import com.paradogs.common.core.utils.SpringUtils; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @author: yumi + * @date: 2023/7/31 23:25 + * @Description: TODO + */ +@SpringBootApplication +public class TestClientApplication { + public static void main(String[] args) { + SpringApplication.run(TestClientApplication.class, args); + System.out.println("client test"); + + while (SpringUtils.getBean(ChannelInitializer.class).channeltest == null) { + try { + Thread.sleep(1000); + SpringUtils.getBean(ChannelInitializer.class).channeltest.writeAndFlush(new CGTestMsg("hel yumi")); + } catch (Exception e) { + e.printStackTrace(); + } + } + + } +} diff --git a/paradogs-test/paradogs-test-client/src/main/resources/application.yml b/paradogs-test/paradogs-test-client/src/main/resources/application.yml new file mode 100644 index 0000000..a9ebe61 --- /dev/null +++ b/paradogs-test/paradogs-test-client/src/main/resources/application.yml @@ -0,0 +1,4 @@ +paradogs: + client: + host: localhost + port: 8001 \ No newline at end of file diff --git a/paradogs-test/paradogs-test-server/pom.xml b/paradogs-test/paradogs-test-server/pom.xml new file mode 100644 index 0000000..002a258 --- /dev/null +++ b/paradogs-test/paradogs-test-server/pom.xml @@ -0,0 +1,26 @@ + + + + paradogs-test + com.paradogs + 0.0.1-SNAPSHOT + + 4.0.0 + + paradogs-test-server + + + 8 + 8 + + + + + com.paradogs + paradogs-common-server-starter + + + + \ No newline at end of file diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/misc/TestProto.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/misc/TestProto.java new file mode 100644 index 0000000..e074df1 --- /dev/null +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/misc/TestProto.java @@ -0,0 +1,75 @@ +package com.paradogs.test.misc; + +import com.baidu.bjf.remoting.protobuf.Codec; +import com.baidu.bjf.remoting.protobuf.FieldType; +import com.baidu.bjf.remoting.protobuf.ProtobufProxy; +import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +import com.google.protobuf.InvalidProtocolBufferException; +import com.paradogs.common.core.message.IMsgSerializable; +import com.paradogs.common.core.message.MsgHeader; +import com.paradogs.common.core.utils.BeanUtils; +import io.netty.buffer.ByteBuf; +import lombok.Data; + +import java.io.IOException; + +/** + * @author: yumi + * @date: 2023/8/1 13:39 + * @Description: TODO + */ +@Data +@ProtobufClass +public class TestProto implements IMsgSerializable { + + + /** + * 消息唯一 ID,用于请求 - 响应 + */ + @Protobuf(fieldType = FieldType.STRING, order = 1, required = false) + private String id; + + /** + * 消息类型,替代路由地址(java 使用类型对应,nodejs 可以使用字符串对应方法) + * 待优化,路由转 cmd api + */ + @Protobuf(fieldType = FieldType.INT32, order = 2, required = false) + private int cmd; +// private String route; + + /** + * 玩家 ID + */ + @Protobuf(fieldType = FieldType.INT64, order = 3, required = false) + private Long playerId; + + /** + * 消息生成的时间戳 + */ + @Protobuf(fieldType = FieldType.INT64, order = 4, required = false) + private Long timestamp; + + + + /** + * 序列化(编码) + * @param out + */ + @Override + public void serialization(ByteBuf out) { + + + } + + /** + * 反序列化(解码) + * @param in + * @throws InvalidProtocolBufferException + */ + @Override + public void deserialization(ByteBuf in) { + + + } +} diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java new file mode 100644 index 0000000..1440e5e --- /dev/null +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java @@ -0,0 +1,16 @@ +package com.paradogs.test.server; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @author: yumi + * @date: 2023/7/31 23:20 + * @Description: TODO + */ +@SpringBootApplication +public class TestServerApplication { + public static void main(String[] args) { + SpringApplication.run(TestServerApplication.class,args); + } +} diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java new file mode 100644 index 0000000..6a3bf87 --- /dev/null +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java @@ -0,0 +1,22 @@ +package com.paradogs.test.server.controller; + +import com.paradogs.common.core.annoations.PdgMsgMapping; +import com.paradogs.common.core.message.CGTestMsg; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; + +/** + * @author: yumi + * @date: 2023/8/1 9:29 + * @Description: TODO + */ +@Slf4j +@Controller +public class TestController { + + @PdgMsgMapping(CGTestMsg.class) + public void test1(CGTestMsg msg) { + log.info(msg.getStr()); + } + +} diff --git a/paradogs-test/paradogs-test-server/src/main/resources/application.yml b/paradogs-test/paradogs-test-server/src/main/resources/application.yml new file mode 100644 index 0000000..1b39bb9 --- /dev/null +++ b/paradogs-test/paradogs-test-server/src/main/resources/application.yml @@ -0,0 +1,3 @@ +paradogs: + server: + port: 8001 \ No newline at end of file diff --git a/paradogs-test/pom.xml b/paradogs-test/pom.xml new file mode 100644 index 0000000..d0d829a --- /dev/null +++ b/paradogs-test/pom.xml @@ -0,0 +1,24 @@ + + + + paradogs + com.paradogs + 0.0.1-SNAPSHOT + + 4.0.0 + + paradogs-test + pom + + paradogs-test-server + paradogs-test-client + + + + 8 + 8 + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index a98875f..c14e94d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,22 +4,24 @@ 4.0.0 pom - mini-game - mini-common - mini-login - mini-gate - mini-client + paradogs-game + paradogs-common + paradogs-login + paradogs-gate + paradogs-client + paradogs-master + paradogs-test - - org.springframework.boot - spring-boot-starter-parent - 2.2.5.RELEASE - - - com.mini - mini + + + + + + + com.paradogs + paradogs 0.0.1-SNAPSHOT - mini + paradogs Demo project for Spring Boot 8 @@ -28,6 +30,14 @@ + + + org.springframework.boot + spring-boot-dependencies + 2.7.7 + pom + import + io.netty netty-all @@ -80,20 +90,50 @@ - com.mini - mini-common + com.paradogs + paradogs-common + 0.0.1-SNAPSHOT + + + + com.paradogs + paradogs-login + 0.0.1-SNAPSHOT + + + + com.paradogs + paradogs-game + 0.0.1-SNAPSHOT + + + + + com.baidu + jprotobuf + 2.4.5 + + + + + + + + + com.paradogs + paradogs-common-core 0.0.1-SNAPSHOT - com.mini - mini-login + com.paradogs + paradogs-common-server-starter 0.0.1-SNAPSHOT - com.mini - mini-game + com.paradogs + paradogs-common-client-starter 0.0.1-SNAPSHOT -- Gitee From 2e193c3a043dc586067c4d794e5ac069c9dd5b6f Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Wed, 2 Aug 2023 11:21:42 +0800 Subject: [PATCH 02/32] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/annoations/PdgExceptionHandler.java | 21 ++++++ .../annoations/PdgExceptionHandlerClass.java | 19 +++++ .../paradogs/common/core/enums/ExCode.java | 12 +++ .../exceptions/SerializationException.java | 15 ++++ .../core/exceptions/ServiceException.java | 15 ++++ .../exceptions/base/BaseCheckedException.java | 24 ++++++ .../base/BaseUncheckedException.java | 25 +++++++ .../base/GlobalExceptionDispatch.java | 73 +++++++++++++++++++ .../paradogs/common/core/message/BaseMsg.java | 8 +- .../common/core/message/IMsgSerializable.java | 6 +- .../common/core/message/MsgHeader.java | 30 ++++---- .../core/netty/misc/ChannelInitializer.java | 10 +-- .../{handler => pipelines}/MsgHandler.java | 2 +- .../MsgHeaderWrapper.java | 2 +- .../core/netty/queue/QueueConsumerThread.java | 11 ++- .../common/core/utils/ProtoUtils.java | 3 +- ...ot.autoconfigure.AutoConfiguration.imports | 6 +- .../test/server/TestServerApplication.java | 2 +- .../server/controller/TestController.java | 2 + .../exceptions/GobalExceptionHandler.java | 27 +++++++ pom.xml | 2 +- 21 files changed, 279 insertions(+), 36 deletions(-) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandler.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandlerClass.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/enums/ExCode.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/ServiceException.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseCheckedException.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/{handler => pipelines}/MsgHandler.java (94%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/{handler => pipelines}/MsgHeaderWrapper.java (93%) create mode 100644 paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandler.java new file mode 100644 index 0000000..4e62a40 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandler.java @@ -0,0 +1,21 @@ +package com.paradogs.common.core.annoations; + +import org.apache.poi.ss.formula.functions.T; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/8/2 9:15 + * @Description: TODO + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface PdgExceptionHandler { + + Class value(); + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandlerClass.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandlerClass.java new file mode 100644 index 0000000..7a7f3dd --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandlerClass.java @@ -0,0 +1,19 @@ +package com.paradogs.common.core.annoations; + +import org.springframework.stereotype.Component; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/8/2 9:16 + * @Description: TODO + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Component +public @interface PdgExceptionHandlerClass { +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/enums/ExCode.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/enums/ExCode.java new file mode 100644 index 0000000..307581f --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/enums/ExCode.java @@ -0,0 +1,12 @@ +package com.paradogs.common.core.enums; + +/** + * @author: yumi + * @date: 2023/8/1 16:33 + * @Description: 异常错误码 + */ +public enum ExCode { + + + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java new file mode 100644 index 0000000..d4407c1 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java @@ -0,0 +1,15 @@ +package com.paradogs.common.core.exceptions; + +import com.paradogs.common.core.exceptions.base.BaseUncheckedException; + +/** + * @author: yumi + * @date: 2023/8/1 16:28 + * @Description: TODO + */ +public class SerializationException extends BaseUncheckedException { + + public SerializationException() { + super(1, "序列化异常"); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/ServiceException.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/ServiceException.java new file mode 100644 index 0000000..3abb3ac --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/ServiceException.java @@ -0,0 +1,15 @@ +package com.paradogs.common.core.exceptions; + +import com.paradogs.common.core.exceptions.base.BaseUncheckedException; + +/** + * @author: yumi + * @date: 2023/8/1 16:46 + * @Description: TODO + */ +public class ServiceException extends BaseUncheckedException { + + public ServiceException(int code, String message) { + super(code, message); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseCheckedException.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseCheckedException.java new file mode 100644 index 0000000..f98d667 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseCheckedException.java @@ -0,0 +1,24 @@ +package com.paradogs.common.core.exceptions.base; + +import lombok.Data; + +/** + * @author: yumi + * @date: 2023/8/1 16:43 + * @Description: TODO + */ +@Data +public class BaseCheckedException extends Exception { + + /** + * 错误码 + */ + private int code; + + + public BaseCheckedException(int code, String message) { + super(message); + this.code = code; + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java new file mode 100644 index 0000000..26a7a84 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java @@ -0,0 +1,25 @@ +package com.paradogs.common.core.exceptions.base; + +import lombok.Data; + +/** + * @author: yumi + * @date: 2023/8/1 16:30 + * @Description: TODO + * ps: 不要重写 toString 方法,否则异常显示不正常不规范了 + * 异常栈显示正常:com.paradogs.common.core.exceptions.base.BaseUncheckedException: uncheck test + */ +public class BaseUncheckedException extends RuntimeException { + + /** + * 错误码 + */ + private int code; + + + public BaseUncheckedException(int code, String message) { + super(message); + this.code = code; + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java new file mode 100644 index 0000000..a1f3c2b --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java @@ -0,0 +1,73 @@ +package com.paradogs.common.core.exceptions.base; + +import com.paradogs.common.core.annoations.PdgExceptionHandler; +import com.paradogs.common.core.annoations.PdgExceptionHandlerClass; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.utils.SpringUtils; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +/** + * @author: yumi + * @date: 2023/8/2 9:12 + * @Description: TODO + */ +@Slf4j +@Component +public class GlobalExceptionDispatch { + + @Getter + private Map, Method> exceptionHandlerMap = new HashMap<>(); + + /** + * 加载注册异常处理 + */ + @PostConstruct + public void registerExceptionHandler() { + for (Object bean : SpringUtils.getBeansWithAnnotation(PdgExceptionHandlerClass.class).values()) { + for (Method method : bean.getClass().getDeclaredMethods()) { + PdgExceptionHandler pdgExceptionHandler = method.getAnnotation(PdgExceptionHandler.class); + if (pdgExceptionHandler == null) { + continue; + } + exceptionHandlerMap.put(pdgExceptionHandler.value(), method); + } + } + + } + + /** + * 将异常转发到对应异常处理方法 + * ps: 会自动优先找最相近的类 + * @param throwable + */ + public void forward(Throwable throwable) { + // 这里的异常时 InvocationTargetException 反射异常,转换成真正的异常 + Method method = exceptionHandlerMap.get(throwable.getCause().getClass()); + if (method == null && (method = exceptionHandlerMap.get(Exception.class)) == null) { + throwable.getCause().printStackTrace(); + return; + } + try { + method.invoke( + SpringUtils.getBean(method.getDeclaringClass()), + Stream.of(method.getParameterTypes()) + .map(type -> BaseMsg.class.isAssignableFrom(type) ? throwable : null) + .toArray() + ); + } catch (Exception e) { + // 可能会死循环 + forward(e.getCause()); + } + } + + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java index cb2d8aa..589499a 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java @@ -24,15 +24,17 @@ import java.io.IOException; //@Slf4j 不能加,jprotobuf 会自动解析所有属性 @Data @Accessors(chain = true) -@ProtobufClass public class BaseMsg implements IMsgSerializable { + @Protobuf(fieldType = FieldType.OBJECT, order = 1) private MsgHeader msgHeader; /** - * 序列化(编码) + * 序列化(编码 + * ps: BaseMsg 的 JProtobuf 序列化时,this 指向 BaseMsg(实际运行会指向子类),无法通过编译,需要额外处理 (ProtoUtils), + * 不指定 Codec<> 的泛型虽然可以通过编译但是无法正确的编解码 * @param out */ @Override @@ -49,7 +51,7 @@ public class BaseMsg implements IMsgSerializable { * @param in */ @Override - public void deserialization(ByteBuf in) { + public void deserialization(ByteBuf in) throws IOException { // 读取消息体 byte 数组 byte[] bytes = new byte[in.readableBytes()]; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/IMsgSerializable.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/IMsgSerializable.java index 849efb4..7c5bb74 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/IMsgSerializable.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/IMsgSerializable.java @@ -3,6 +3,8 @@ package com.paradogs.common.core.message; import com.google.protobuf.InvalidProtocolBufferException; import io.netty.buffer.ByteBuf; +import java.io.IOException; + /** * @author: yumi @@ -11,8 +13,8 @@ import io.netty.buffer.ByteBuf; */ public interface IMsgSerializable { - void serialization(ByteBuf out); + void serialization(ByteBuf out) throws IOException; - void deserialization(ByteBuf in) throws InvalidProtocolBufferException; + void deserialization(ByteBuf in) throws IOException; } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java index 620c633..51e89a6 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java @@ -6,6 +6,7 @@ import com.baidu.bjf.remoting.protobuf.ProtobufProxy; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.google.protobuf.InvalidProtocolBufferException; +import com.paradogs.common.core.exceptions.SerializationException; import com.paradogs.common.core.utils.BeanUtils; import com.paradogs.common.core.utils.ProtoUtils; import io.netty.buffer.ByteBuf; @@ -20,9 +21,13 @@ import java.io.IOException; * @Description: 消息头 */ @Data -@ProtobufClass public class MsgHeader implements IMsgSerializable { + /** + * 解析器(也可以用 ProtoUtils) + */ + private static Codec codec = ProtobufProxy.create(MsgHeader.class); + /** * 消息唯一 ID,用于请求 - 响应 */ @@ -51,20 +56,14 @@ public class MsgHeader implements IMsgSerializable { /** * 序列化(编码) + * ps: netty 的 codec 最终会捕获异常转换成 EncoderException * @param out */ @Override - public void serialization(ByteBuf out) { - try { - - byte[] bytes = ProtoUtils.encode(this); - out.writeShort(bytes.length); - out.writeBytes(bytes); - - } catch (Exception e) { - e.printStackTrace(); - } - + public void serialization(ByteBuf out) throws IOException { + byte[] bytes = codec.encode(this); + out.writeShort(bytes.length); + out.writeBytes(bytes); } /** @@ -73,13 +72,10 @@ public class MsgHeader implements IMsgSerializable { * @throws InvalidProtocolBufferException */ @Override - public void deserialization(ByteBuf in) { + public void deserialization(ByteBuf in) throws IOException { byte[] bytes = new byte[in.readShort()]; in.readBytes(bytes); - - MsgHeader msgHeader = ProtoUtils.decode(bytes, MsgHeader.class); + MsgHeader msgHeader = codec.decode(bytes); BeanUtils.copyProperties(msgHeader, this); - - } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java index 21e0b0e..bc94389 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java @@ -1,9 +1,8 @@ package com.paradogs.common.core.netty.misc; -import com.paradogs.common.core.message.CGTestMsg; import com.paradogs.common.core.netty.codec.Codec; -import com.paradogs.common.core.netty.handler.MsgHandler; -import com.paradogs.common.core.netty.handler.MsgHeaderWrapper; +import com.paradogs.common.core.netty.pipelines.MsgHandler; +import com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper; import com.paradogs.common.core.netty.protocol.ProtocolProperties; import com.paradogs.common.core.utils.SpringUtils; import io.netty.channel.Channel; @@ -13,7 +12,6 @@ import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.handler.codec.LengthFieldBasedFrameDecoder; import io.netty.handler.codec.LengthFieldPrepender; import lombok.extern.slf4j.Slf4j; -import org.apache.xmlbeans.impl.xb.ltgfmt.Code; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -36,6 +34,7 @@ public class ChannelInitializer extends io.netty.channel.ChannelInitializer extends Thread { */ private String key; + /** + * 全局异常处理转发器 + */ + @Autowired + private GlobalExceptionDispatch globalExceptionDispatch; + public QueueConsumerThread() { this.startTime = LocalDateTime.now(); @@ -71,7 +79,8 @@ public abstract class QueueConsumerThread extends Thread { try { handle(msg); } catch (Exception e) { - throw new RuntimeException(e); + // 发送到对应异常处理方法 + globalExceptionDispatch.forward(e); } } heartbeat(); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java index 592f204..09b388f 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java @@ -6,6 +6,7 @@ import com.baidu.bjf.remoting.protobuf.ProtobufProxy; import java.io.IOException; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** * @author: yumi @@ -17,7 +18,7 @@ public class ProtoUtils { /** * 优化效率,避免每次都创建一个编解码器 */ - public static Map, Codec> codecMap = new HashMap<>(); + public static Map, Codec> codecMap = new ConcurrentHashMap<>(); /** * jprotobuf 编码 diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 0758e27..6f5fec8 100644 --- a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -4,8 +4,8 @@ com.paradogs.common.core.events.listener.PdgEventListener com.paradogs.common.core.netty.codec.Codec com.paradogs.common.core.netty.misc.ChannelInitializer -com.paradogs.common.core.netty.handler.MsgHeaderWrapper -com.paradogs.common.core.netty.handler.MsgHandler +com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper +com.paradogs.common.core.netty.pipelines.MsgHandler com.paradogs.common.core.netty.queue.DBTaskConsumerThread com.paradogs.common.core.netty.queue.MainMsgConsumerThread @@ -14,3 +14,5 @@ com.paradogs.common.core.netty.queue.QueueProperties com.paradogs.common.core.netty.protocol.ProtocolProperties +com.paradogs.common.core.exceptions.base.GlobalExceptionDispatch + diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java index 1440e5e..14ed94e 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java @@ -11,6 +11,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class TestServerApplication { public static void main(String[] args) { - SpringApplication.run(TestServerApplication.class,args); + SpringApplication.run(TestServerApplication.class, args); } } diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java index 6a3bf87..4b05620 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java @@ -1,6 +1,7 @@ package com.paradogs.test.server.controller; import com.paradogs.common.core.annoations.PdgMsgMapping; +import com.paradogs.common.core.exceptions.SerializationException; import com.paradogs.common.core.message.CGTestMsg; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; @@ -17,6 +18,7 @@ public class TestController { @PdgMsgMapping(CGTestMsg.class) public void test1(CGTestMsg msg) { log.info(msg.getStr()); + throw new SerializationException(); } } diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java new file mode 100644 index 0000000..11b8107 --- /dev/null +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java @@ -0,0 +1,27 @@ +package com.paradogs.test.server.exceptions; + +import com.paradogs.common.core.annoations.PdgExceptionHandler; +import com.paradogs.common.core.annoations.PdgExceptionHandlerClass; +import com.paradogs.common.core.exceptions.SerializationException; +import lombok.extern.slf4j.Slf4j; + +/** + * @author: yumi + * @date: 2023/8/2 11:06 + * @Description: TODO + */ +@Slf4j +@PdgExceptionHandlerClass +public class GobalExceptionHandler { + + @PdgExceptionHandler(Exception.class) + public void handleException(Exception e) { + log.info("yumi !!"); + } + +// @PdgExceptionHandler(SerializationException.class) +// public void handleSerializationException(SerializationException e) { +// log.info("yumi !! 序列化异常 !!"); +// } + +} diff --git a/pom.xml b/pom.xml index c14e94d..226b529 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ - + org.springframework.boot spring-boot-dependencies -- Gitee From ae52af41ea74f405233a4d82e88f9172bb581d96 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Thu, 3 Aug 2023 08:46:53 +0800 Subject: [PATCH 03/32] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20@PdgMsg=20=E7=9A=84?= =?UTF-8?q?=20@ProtobufClass=20=E4=B8=8D=E7=94=9F=E6=95=88=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=BC=96=E8=A7=A3=E7=A0=81=E4=B8=8D=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/paradogs/common/client/Client.java | 3 +- .../common/core/annoations/PdgMsg.java | 5 ++-- .../paradogs/common/core/message/BaseMsg.java | 2 +- .../paradogs/common/core/message/CGMsg.java | 2 ++ .../common/core/message/CGTestMsg.java | 8 ++---- .../core/netty/queue/QueueConsumerThread.java | 28 ++++++++++++------- .../common/core/netty/queue/QueueManager.java | 9 +++--- .../common/core/utils/EventUtils.java | 17 +++++++++-- .../common/core/utils/SpringUtils.java | 20 +------------ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../com/paradogs/common/server/Server.java | 3 +- .../test/client/TestClientApplication.java | 21 ++++++++++++-- .../server/controller/TestController.java | 5 ++-- .../src/main/resources/application.yml | 4 ++- 14 files changed, 73 insertions(+), 55 deletions(-) diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java index a076b7c..fce2180 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java @@ -1,6 +1,7 @@ package com.paradogs.common.client; import com.paradogs.common.client.events.ClientStartEvent; +import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.SpringUtils; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; @@ -53,7 +54,7 @@ public class Client { Channel channel = client.connect(clientConfig.getHost(), clientConfig.getPort()).sync().channel(); log.info("{}:{} connect success", clientConfig.getHost(), clientConfig.getPort()); - SpringUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); + EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); channel.closeFuture().sync(); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java index a20463b..76092e3 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java @@ -1,7 +1,5 @@ package com.paradogs.common.core.annoations; -import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; - import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -14,7 +12,8 @@ import java.lang.annotation.Target; */ @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) -@ProtobufClass +//@ProtobufClass 坑,@ProtobufClass 加在自定义注解上时,使用自定义注解不会生效该注解 +// 可以加上父类 BaseMsg 上或者实际类上 public @interface PdgMsg { int value(); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java index 589499a..92ec8e5 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java @@ -23,7 +23,7 @@ import java.io.IOException; */ //@Slf4j 不能加,jprotobuf 会自动解析所有属性 @Data -@Accessors(chain = true) +@ProtobufClass public class BaseMsg implements IMsgSerializable { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java index b7d24ef..f18d1d7 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java @@ -11,4 +11,6 @@ import lombok.Data; @Data public abstract class CGMsg extends BaseMsg { + private String cgMsgClassTest = "cgMsgClassTest"; + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java index 0596ec4..234ddec 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java @@ -1,20 +1,18 @@ package com.paradogs.common.core.message; -import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.paradogs.common.core.annoations.PdgMsg; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; /** * @author: yumi * @date: 2023/8/1 9:28 * @Description: TODO */ + +@PdgMsg(1) @Data @AllArgsConstructor @NoArgsConstructor -@PdgMsg(1) public class CGTestMsg extends CGMsg { private String str; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java index 373dc4b..455dad6 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java @@ -63,6 +63,7 @@ public abstract class QueueConsumerThread extends Thread { /** * 空闲时间校验 + * 待优化:可以用发起事件 */ public abstract void heartbeat(); @@ -73,21 +74,28 @@ public abstract class QueueConsumerThread extends Thread { while (true) { + heartbeat(); + T msg = queue.poll(); - if (msg != null) { - this.handleCount++; + + // 消息队列为空时,等待一段时间再处理,如果有消息则处理完直接找下一个 + if (msg == null) { try { - handle(msg); - } catch (Exception e) { - // 发送到对应异常处理方法 - globalExceptionDispatch.forward(e); + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } finally { + continue; } + } - heartbeat(); + + this.handleCount++; try { - Thread.sleep(100); - } catch (InterruptedException e) { - e.printStackTrace(); + handle(msg); + } catch (Exception e) { + // 转发到全局异常处理 + globalExceptionDispatch.forward(e); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java index 0a87c28..2b7c29c 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java @@ -6,10 +6,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; @@ -27,6 +24,7 @@ public class QueueManager { /** * 队列集合 + * 待优化:有一些业务不需要保证顺序性,可以创建一个队列由多个消费者消费,不需要一对一,提高效率 */ private static Map>> queueMap; @@ -52,7 +50,7 @@ public class QueueManager { for (Map.Entry>> entry : queueMap.entrySet()) { for (BlockingQueue queue : entry.getValue()) { - // 原型模式 + // 原型模式 getBean QueueConsumerThread queueConsumerThread = SpringUtils.getBean(entry.getKey().queueConsumerThreadClass); queueConsumerThread.setQueue(queue); queueConsumerThread.start(); @@ -99,6 +97,7 @@ public class QueueManager { */ private BlockingQueue banl(List> list, BaseMsg msg) { return list.get((int) (msg.getMsgHeader().getPlayerId() % list.size())); +// return list.get(random.nextInt(list.size())); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java index fb37502..fe4bcc5 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java @@ -1,6 +1,8 @@ package com.paradogs.common.core.utils; import org.springframework.context.ApplicationEvent; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.stereotype.Component; /** @@ -9,15 +11,24 @@ import org.springframework.stereotype.Component; * @Description: TODO */ @Component -public class EventUtils { +public class EventUtils implements ApplicationEventPublisherAware { + + /** + * Spring 事件发布机制 + */ + private static ApplicationEventPublisher applicationEventPublisher; /** * 发布事件 * ps: 订阅事件由 Spring 的 @EventListener 注册 * @param event */ - public static void publish(ApplicationEvent event) { - SpringUtils.publishEvent(event); + public static void publishEvent(ApplicationEvent event) { + applicationEventPublisher.publishEvent(event); } + @Override + public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { + EventUtils.applicationEventPublisher = applicationEventPublisher; + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java index 51884d8..7cbf045 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java @@ -19,15 +19,11 @@ import java.util.Map; * @author ruoyi */ @Component -public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationEventPublisherAware +public final class SpringUtils implements BeanFactoryPostProcessor { /** Spring应用上下文环境 */ private static ConfigurableListableBeanFactory beanFactory; - /** - * Spring 事件发布机制 - */ - private static ApplicationEventPublisher applicationEventPublisher; @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException @@ -35,11 +31,6 @@ public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationE SpringUtils.beanFactory = beanFactory; } - @Override - public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { - SpringUtils.applicationEventPublisher = applicationEventPublisher; - } - /** * 获取对象 * @@ -136,13 +127,4 @@ public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationE return (T) AopContext.currentProxy(); } - /** - * 发布(触发)事件 - * @param event - * @return - */ - public static void publishEvent(ApplicationEvent event) { - applicationEventPublisher.publishEvent(event); - } - } diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 6f5fec8..f02fea8 100644 --- a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,4 +1,5 @@ com.paradogs.common.core.utils.SpringUtils +com.paradogs.common.core.utils.EventUtils com.paradogs.common.core.utils.MsgUtils com.paradogs.common.core.events.listener.PdgEventListener diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java index c2c6c12..70332d4 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java @@ -1,5 +1,6 @@ package com.paradogs.common.server; +import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.SpringUtils; import com.paradogs.common.server.events.ServerStartEvent; import io.netty.bootstrap.ServerBootstrap; @@ -49,7 +50,7 @@ public class Server { Channel channel = this.server.bind(serverConfig.getPort()).sync().channel(); log.info("[{} localhost:{}] start success", serverConfig.getName(), serverConfig.getPort()); - SpringUtils.publishEvent(new ServerStartEvent(System.currentTimeMillis() - startTime)); + EventUtils.publishEvent(new ServerStartEvent(System.currentTimeMillis() - startTime)); channel.closeFuture().sync(); diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java index a76b331..d7637fd 100644 --- a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java @@ -3,6 +3,7 @@ package com.paradogs.test.client; import com.paradogs.common.core.message.CGTestMsg; import com.paradogs.common.core.netty.misc.ChannelInitializer; import com.paradogs.common.core.utils.SpringUtils; +import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -11,20 +12,34 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @date: 2023/7/31 23:25 * @Description: TODO */ +@Slf4j @SpringBootApplication public class TestClientApplication { public static void main(String[] args) { SpringApplication.run(TestClientApplication.class, args); System.out.println("client test"); - while (SpringUtils.getBean(ChannelInitializer.class).channeltest == null) { + while (SpringUtils.getBean(ChannelInitializer.class).channeltest == null); + + int i = 1; + long start = System.currentTimeMillis(); + int startI = i; + while (true) { try { - Thread.sleep(1000); - SpringUtils.getBean(ChannelInitializer.class).channeltest.writeAndFlush(new CGTestMsg("hel yumi")); + CGTestMsg cgTestMsg = new CGTestMsg("hel yumi >> " + i++); + SpringUtils.getBean(ChannelInitializer.class).channeltest.writeAndFlush(cgTestMsg); +// System.out.println("send " + cgTestMsg); + Thread.sleep(1); + if (System.currentTimeMillis() - start > 1000) { + log.info("每秒发送消息 {} 个,共发送 {} 个", i - startI, i); + startI = i; + start = System.currentTimeMillis(); + } } catch (Exception e) { e.printStackTrace(); } } + } } diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java index 4b05620..5849e50 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java @@ -1,7 +1,6 @@ package com.paradogs.test.server.controller; import com.paradogs.common.core.annoations.PdgMsgMapping; -import com.paradogs.common.core.exceptions.SerializationException; import com.paradogs.common.core.message.CGTestMsg; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; @@ -17,8 +16,8 @@ public class TestController { @PdgMsgMapping(CGTestMsg.class) public void test1(CGTestMsg msg) { - log.info(msg.getStr()); - throw new SerializationException(); + log.info(msg.toString()); +// throw new SerializationException(); } } diff --git a/paradogs-test/paradogs-test-server/src/main/resources/application.yml b/paradogs-test/paradogs-test-server/src/main/resources/application.yml index 1b39bb9..c7ab6f0 100644 --- a/paradogs-test/paradogs-test-server/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-server/src/main/resources/application.yml @@ -1,3 +1,5 @@ paradogs: server: - port: 8001 \ No newline at end of file + port: 8001 + queue: + main-size: 1 \ No newline at end of file -- Gitee From c7216c4d55476b835810890e4d5e52e0b0e3cfa7 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Thu, 3 Aug 2023 17:03:06 +0800 Subject: [PATCH 04/32] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20Connector=20?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- paradogs-client/pom.xml | 2 +- .../paradogs-common-client-starter/pom.xml | 2 +- paradogs-common/paradogs-common-core/pom.xml | 2 +- .../core/netty/codec/CodecConfiguration.java | 30 ++++ .../core/netty/codec/ConnectorCodec.java | 53 +++++++ .../codec/{Codec.java => ServerCodec.java} | 6 +- .../core/netty/misc/ChannelInitializer.java | 4 +- .../netty/queue/DBTaskConsumerThread.java | 5 +- .../netty/queue/MainMsgConsumerThread.java | 9 +- .../core/netty/queue/QueueConfiguration.java | 41 +++++ .../core/netty/queue/QueueConsumerThread.java | 8 +- .../common/core/netty/queue/QueueManager.java | 34 ++-- .../core/netty/queue/QueueProperties.java | 5 +- ...ot.autoconfigure.AutoConfiguration.imports | 10 +- paradogs-common/paradogs-common-redis/pom.xml | 2 +- .../config/FastJson2JsonRedisSerializer.java | 4 +- .../paradogs-common-server-starter/pom.xml | 2 +- .../common/server/ServerLauncher.java | 5 - paradogs-common/pom.xml | 2 +- paradogs-connector/pom.xml | 20 +++ .../src/main/resources/application.yml | 6 + paradogs-master/pom.xml | 4 +- paradogs-test/paradogs-test-client/pom.xml | 2 +- .../test/client/TestClientApplication.java | 1 + paradogs-test/paradogs-test-server/pom.xml | 2 +- .../com/paradogs/test/misc/TestProto.java | 150 +++++++++--------- .../test/server/TestServerApplication.java | 7 + .../src/main/resources/application.yml | 1 + paradogs-test/pom.xml | 2 +- pom.xml | 15 +- 30 files changed, 302 insertions(+), 134 deletions(-) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/CodecConfiguration.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/{Codec.java => ServerCodec.java} (80%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConfiguration.java create mode 100644 paradogs-connector/pom.xml create mode 100644 paradogs-connector/src/main/resources/application.yml diff --git a/paradogs-client/pom.xml b/paradogs-client/pom.xml index 3b31463..3a5c45b 100644 --- a/paradogs-client/pom.xml +++ b/paradogs-client/pom.xml @@ -5,7 +5,7 @@ paradogs com.paradogs - 0.0.1-SNAPSHOT + 0.0.1 4.0.0 diff --git a/paradogs-common/paradogs-common-client-starter/pom.xml b/paradogs-common/paradogs-common-client-starter/pom.xml index d2f5237..d28b00b 100644 --- a/paradogs-common/paradogs-common-client-starter/pom.xml +++ b/paradogs-common/paradogs-common-client-starter/pom.xml @@ -5,7 +5,7 @@ paradogs-common com.paradogs - 0.0.1-SNAPSHOT + 0.0.1 4.0.0 diff --git a/paradogs-common/paradogs-common-core/pom.xml b/paradogs-common/paradogs-common-core/pom.xml index 92bfeb6..b83d90a 100644 --- a/paradogs-common/paradogs-common-core/pom.xml +++ b/paradogs-common/paradogs-common-core/pom.xml @@ -5,7 +5,7 @@ paradogs-common com.paradogs - 0.0.1-SNAPSHOT + 0.0.1 4.0.0 diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/CodecConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/CodecConfiguration.java new file mode 100644 index 0000000..f349f6f --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/CodecConfiguration.java @@ -0,0 +1,30 @@ +package com.paradogs.common.core.netty.codec; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; + +/** + * @author: yumi + * @date: 2023/8/3 11:18 + * @Description: TODO + */ +@Configuration +public class CodecConfiguration { + + @Bean + @Scope("prototype") + @ConditionalOnProperty(name = "paradogs.server.connector", havingValue = "false", matchIfMissing = true) + public ServerCodec serverCodec() { + return new ServerCodec(); + } + + @Bean + @Scope("prototype") + @ConditionalOnProperty(name = "paradogs.server.connector", havingValue = "true") + public ConnectorCodec connectorCodec() { + return new ConnectorCodec(); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java new file mode 100644 index 0000000..5cd55dd --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java @@ -0,0 +1,53 @@ +package com.paradogs.common.core.netty.codec; + +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.message.MsgHeader; +import com.paradogs.common.core.utils.MsgUtils; +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.ByteToMessageCodec; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author: yumi + * @date: 2023/8/3 9:49 + * @Description: 网关编解码器 + */ +@Slf4j +@Component +@Scope("prototype") +@ConditionalOnProperty(name = "paradogs.server.connector", havingValue = "true") +public class ConnectorCodec extends ByteToMessageCodec { + + @Override + protected void encode(ChannelHandlerContext ctx, BaseMsg msg, ByteBuf out) throws Exception { + + msg.getMsgHeader().serialization(out); + + msg.serialization(out); + } + + @Override + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { + + // 读取请求头 + MsgHeader msgHeader = new MsgHeader(); + msgHeader.deserialization(in); + + // 读取消息体,加载实际的消息类型 + BaseMsg baseMsg = MsgUtils.getMsgClass(msgHeader.getCmd()).newInstance(); + baseMsg.deserialization(in); + baseMsg.setMsgHeader(msgHeader); + + out.add(baseMsg); + + + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/Codec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java similarity index 80% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/Codec.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java index a48053d..8727370 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/Codec.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java @@ -8,6 +8,8 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; import io.netty.util.AttributeKey; import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -22,7 +24,8 @@ import java.util.List; @Slf4j @Component @Scope("prototype") -public class Codec extends ByteToMessageCodec { +@ConditionalOnProperty(name = "paradogs.server.connector", havingValue = "false", matchIfMissing = true) +public class ServerCodec extends ByteToMessageCodec { @Override protected void encode(ChannelHandlerContext ctx, BaseMsg msg, ByteBuf out) throws Exception { @@ -49,5 +52,4 @@ public class Codec extends ByteToMessageCodec { } - } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java index bc94389..e222f4f 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java @@ -1,6 +1,5 @@ package com.paradogs.common.core.netty.misc; -import com.paradogs.common.core.netty.codec.Codec; import com.paradogs.common.core.netty.pipelines.MsgHandler; import com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper; import com.paradogs.common.core.netty.protocol.ProtocolProperties; @@ -9,6 +8,7 @@ import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.socket.nio.NioSocketChannel; +import io.netty.handler.codec.ByteToMessageCodec; import io.netty.handler.codec.LengthFieldBasedFrameDecoder; import io.netty.handler.codec.LengthFieldPrepender; import lombok.extern.slf4j.Slf4j; @@ -54,7 +54,7 @@ public class ChannelInitializer extends io.netty.channel.ChannelInitializer { - @Autowired - private QueueProperties queueProperties; - /** * 消息处理 * @param msg diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConfiguration.java new file mode 100644 index 0000000..609cb5f --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConfiguration.java @@ -0,0 +1,41 @@ +package com.paradogs.common.core.netty.queue; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; + +/** + * @author: yumi + * @date: 2023/8/3 11:21 + * @Description: TODO + */ +@Configuration +public class QueueConfiguration { + + @Bean + @Scope("prototype") + public DBTaskConsumerThread dbTaskConsumerThread() { + return new DBTaskConsumerThread(); + } + + @Bean + @Scope("prototype") + public MainMsgConsumerThread mainMsgConsumerThread() { + return new MainMsgConsumerThread(); + } + + @Bean + public QueueProperties queueProperties() { + return new QueueProperties(); + } + + @Bean + public QueueManager queueManager(QueueProperties queueProperties) { + QueueManager queueManager = new QueueManager(); + queueManager.setQueueProperties(queueProperties); + // 初始化消息处理队列 + queueManager.init(); + return queueManager; + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java index 455dad6..81e1897 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java @@ -11,6 +11,7 @@ import java.lang.reflect.InvocationTargetException; import java.time.LocalDateTime; import java.util.UUID; import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; /** * @author: yumi @@ -54,6 +55,7 @@ public abstract class QueueConsumerThread extends Thread { public QueueConsumerThread() { this.startTime = LocalDateTime.now(); this.handleCount = 0L; + this.queue = new LinkedBlockingQueue<>(); } /** @@ -70,7 +72,7 @@ public abstract class QueueConsumerThread extends Thread { @Override public void run() { - log.info("[{}] queueConsumerThread start success", getKey()); + log.debug("[{}] queueConsumerThread start success", getKey()); while (true) { @@ -109,4 +111,8 @@ public abstract class QueueConsumerThread extends Thread { return this.key; } + public Boolean product(T data) { + return this.queue.add(data); + } + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java index 2b7c29c..bb1d8ce 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java @@ -2,8 +2,10 @@ package com.paradogs.common.core.netty.queue; import com.paradogs.common.core.message.BaseMsg; import com.paradogs.common.core.utils.SpringUtils; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.*; @@ -19,9 +21,13 @@ import java.util.concurrent.LinkedBlockingQueue; @Component public class QueueManager { + @Setter @Autowired private QueueProperties queueProperties; + @Value("${paradogs.server.type:server}") + private String serverType; + /** * 队列集合 * 待优化:有一些业务不需要保证顺序性,可以创建一个队列由多个消费者消费,不需要一对一,提高效率 @@ -36,28 +42,22 @@ public class QueueManager { // 初始化队列 queueMap = new HashMap<>(); - queueMap.put(QueueType.MAIN, new ArrayList<>(queueProperties.getMainSize())); - queueMap.put(QueueType.DB, new ArrayList<>(queueProperties.getDbSize())); - for (int i = 0; i < queueProperties.getMainSize(); i++) { - queueMap.get(QueueType.MAIN).add(new LinkedBlockingQueue<>()); - } - for (int i = 0; i < queueProperties.getDbSize(); i++) { - queueMap.get(QueueType.DB).add(new LinkedBlockingQueue<>()); - } + initQueue(QueueType.MAIN, queueProperties.getMainSize()); - // 启动队列处理线程,1 对 1 - for (Map.Entry>> entry : queueMap.entrySet()) { + initQueue(QueueType.DB, queueProperties.getDbSize()); - for (BlockingQueue queue : entry.getValue()) { - // 原型模式 getBean - QueueConsumerThread queueConsumerThread = SpringUtils.getBean(entry.getKey().queueConsumerThreadClass); - queueConsumerThread.setQueue(queue); - queueConsumerThread.start(); - } + } + public void initQueue(QueueType type, int size) { + if (size == 0) {return;} + queueMap.put(type, new ArrayList<>(size)); + for (int i = 0; i < size; i++) { + // 原型模式 getBean + QueueConsumerThread queueConsumerThread = SpringUtils.getBean(type.queueConsumerThreadClass); + queueMap.get(type).add(queueConsumerThread.getQueue()); + queueConsumerThread.start(); } - } public enum QueueType { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java index dbcbaa0..5b73e01 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java @@ -3,10 +3,13 @@ package com.paradogs.common.core.netty.queue; import com.paradogs.common.core.annoations.PdgMsg; import com.paradogs.common.core.annoations.PdgMsgMapping; import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.netty.codec.ServerCodec; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @@ -25,7 +28,7 @@ import java.util.TreeMap; @Slf4j @Component @ConfigurationProperties("paradogs.queue") -public class QueueProperties implements BeanPostProcessor { +public class QueueProperties { /** * 消息逻辑处理队列(待优化:暂时为 1,heartbeat 重复执行问题未解决) diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index f02fea8..7f35883 100644 --- a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -3,16 +3,14 @@ com.paradogs.common.core.utils.EventUtils com.paradogs.common.core.utils.MsgUtils com.paradogs.common.core.events.listener.PdgEventListener -com.paradogs.common.core.netty.codec.Codec +com.paradogs.common.core.netty.codec.CodecConfiguration + +com.paradogs.common.core.netty.queue.QueueConfiguration + com.paradogs.common.core.netty.misc.ChannelInitializer com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper com.paradogs.common.core.netty.pipelines.MsgHandler -com.paradogs.common.core.netty.queue.DBTaskConsumerThread -com.paradogs.common.core.netty.queue.MainMsgConsumerThread -com.paradogs.common.core.netty.queue.QueueManager -com.paradogs.common.core.netty.queue.QueueProperties - com.paradogs.common.core.netty.protocol.ProtocolProperties com.paradogs.common.core.exceptions.base.GlobalExceptionDispatch diff --git a/paradogs-common/paradogs-common-redis/pom.xml b/paradogs-common/paradogs-common-redis/pom.xml index 3ea1a68..909bafa 100644 --- a/paradogs-common/paradogs-common-redis/pom.xml +++ b/paradogs-common/paradogs-common-redis/pom.xml @@ -5,7 +5,7 @@ paradogs-common com.paradogs - 0.0.1-SNAPSHOT + 0.0.1 4.0.0 diff --git a/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/FastJson2JsonRedisSerializer.java b/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/FastJson2JsonRedisSerializer.java index 3bfc5f1..2c350ac 100644 --- a/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/FastJson2JsonRedisSerializer.java +++ b/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/FastJson2JsonRedisSerializer.java @@ -3,8 +3,8 @@ package com.paradogs.common.redis.config; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONReader; import com.alibaba.fastjson2.JSONWriter; -import com.sun.xml.internal.ws.encoding.soap.SerializationException; import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.SerializationException; import java.nio.charset.Charset; @@ -27,7 +27,7 @@ public class FastJson2JsonRedisSerializer implements RedisSerializer } @Override - public byte[] serialize(T t) throws com.sun.xml.internal.ws.encoding.soap.SerializationException + public byte[] serialize(T t) throws SerializationException { if (t == null) { diff --git a/paradogs-common/paradogs-common-server-starter/pom.xml b/paradogs-common/paradogs-common-server-starter/pom.xml index 4fc39ef..cc9f3e8 100644 --- a/paradogs-common/paradogs-common-server-starter/pom.xml +++ b/paradogs-common/paradogs-common-server-starter/pom.xml @@ -5,7 +5,7 @@ paradogs-common com.paradogs - 0.0.1-SNAPSHOT + 0.0.1 4.0.0 diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java index 1f69bea..7f3873c 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java @@ -27,11 +27,6 @@ public class ServerLauncher implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { - /** - * 初始化消息处理队列 - */ - queueManager.init(); - /** * 启动服务器 */ diff --git a/paradogs-common/pom.xml b/paradogs-common/pom.xml index 45a5766..d84f050 100644 --- a/paradogs-common/pom.xml +++ b/paradogs-common/pom.xml @@ -5,7 +5,7 @@ paradogs com.paradogs - 0.0.1-SNAPSHOT + 0.0.1 4.0.0 paradogs-common diff --git a/paradogs-connector/pom.xml b/paradogs-connector/pom.xml new file mode 100644 index 0000000..10439f9 --- /dev/null +++ b/paradogs-connector/pom.xml @@ -0,0 +1,20 @@ + + + + paradogs + com.paradogs + 0.0.1-SNAPSHOT + + 4.0.0 + + paradogs-connector + 0.0.1 + + + 8 + 8 + + + \ No newline at end of file diff --git a/paradogs-connector/src/main/resources/application.yml b/paradogs-connector/src/main/resources/application.yml new file mode 100644 index 0000000..158323b --- /dev/null +++ b/paradogs-connector/src/main/resources/application.yml @@ -0,0 +1,6 @@ +paradogs: + server: + port: 8001 + connector: true + queue: + main-size: 1 \ No newline at end of file diff --git a/paradogs-master/pom.xml b/paradogs-master/pom.xml index f9acdd0..1707fc5 100644 --- a/paradogs-master/pom.xml +++ b/paradogs-master/pom.xml @@ -5,7 +5,7 @@ paradogs com.paradogs - 0.0.1-SNAPSHOT + 0.0.1 4.0.0 @@ -30,7 +30,7 @@ com.paradogs paradogs-common-core - 0.0.1-SNAPSHOT + 0.0.1 diff --git a/paradogs-test/paradogs-test-client/pom.xml b/paradogs-test/paradogs-test-client/pom.xml index cc23c38..ab7d209 100644 --- a/paradogs-test/paradogs-test-client/pom.xml +++ b/paradogs-test/paradogs-test-client/pom.xml @@ -5,7 +5,7 @@ paradogs-test com.paradogs - 0.0.1-SNAPSHOT + 0.0.1 4.0.0 diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java index d7637fd..8cba767 100644 --- a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java @@ -6,6 +6,7 @@ import com.paradogs.common.core.utils.SpringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; /** * @author: yumi diff --git a/paradogs-test/paradogs-test-server/pom.xml b/paradogs-test/paradogs-test-server/pom.xml index 002a258..77128fe 100644 --- a/paradogs-test/paradogs-test-server/pom.xml +++ b/paradogs-test/paradogs-test-server/pom.xml @@ -5,7 +5,7 @@ paradogs-test com.paradogs - 0.0.1-SNAPSHOT + 0.0.1 4.0.0 diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/misc/TestProto.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/misc/TestProto.java index e074df1..6271906 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/misc/TestProto.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/misc/TestProto.java @@ -1,75 +1,75 @@ -package com.paradogs.test.misc; - -import com.baidu.bjf.remoting.protobuf.Codec; -import com.baidu.bjf.remoting.protobuf.FieldType; -import com.baidu.bjf.remoting.protobuf.ProtobufProxy; -import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; -import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; -import com.google.protobuf.InvalidProtocolBufferException; -import com.paradogs.common.core.message.IMsgSerializable; -import com.paradogs.common.core.message.MsgHeader; -import com.paradogs.common.core.utils.BeanUtils; -import io.netty.buffer.ByteBuf; -import lombok.Data; - -import java.io.IOException; - -/** - * @author: yumi - * @date: 2023/8/1 13:39 - * @Description: TODO - */ -@Data -@ProtobufClass -public class TestProto implements IMsgSerializable { - - - /** - * 消息唯一 ID,用于请求 - 响应 - */ - @Protobuf(fieldType = FieldType.STRING, order = 1, required = false) - private String id; - - /** - * 消息类型,替代路由地址(java 使用类型对应,nodejs 可以使用字符串对应方法) - * 待优化,路由转 cmd api - */ - @Protobuf(fieldType = FieldType.INT32, order = 2, required = false) - private int cmd; -// private String route; - - /** - * 玩家 ID - */ - @Protobuf(fieldType = FieldType.INT64, order = 3, required = false) - private Long playerId; - - /** - * 消息生成的时间戳 - */ - @Protobuf(fieldType = FieldType.INT64, order = 4, required = false) - private Long timestamp; - - - - /** - * 序列化(编码) - * @param out - */ - @Override - public void serialization(ByteBuf out) { - - - } - - /** - * 反序列化(解码) - * @param in - * @throws InvalidProtocolBufferException - */ - @Override - public void deserialization(ByteBuf in) { - - - } -} +//package com.paradogs.test.misc; +// +//import com.baidu.bjf.remoting.protobuf.Codec; +//import com.baidu.bjf.remoting.protobuf.FieldType; +//import com.baidu.bjf.remoting.protobuf.ProtobufProxy; +//import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; +//import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +//import com.google.protobuf.InvalidProtocolBufferException; +//import com.paradogs.common.core.message.IMsgSerializable; +//import com.paradogs.common.core.message.MsgHeader; +//import com.paradogs.common.core.utils.BeanUtils; +//import io.netty.buffer.ByteBuf; +//import lombok.Data; +// +//import java.io.IOException; +// +///** +// * @author: yumi +// * @date: 2023/8/1 13:39 +// * @Description: TODO +// */ +//@Data +//@ProtobufClass +//public class TestProto implements IMsgSerializable { +// +// +// /** +// * 消息唯一 ID,用于请求 - 响应 +// */ +// @Protobuf(fieldType = FieldType.STRING, order = 1, required = false) +// private String id; +// +// /** +// * 消息类型,替代路由地址(java 使用类型对应,nodejs 可以使用字符串对应方法) +// * 待优化,路由转 cmd api +// */ +// @Protobuf(fieldType = FieldType.INT32, order = 2, required = false) +// private int cmd; +//// private String route; +// +// /** +// * 玩家 ID +// */ +// @Protobuf(fieldType = FieldType.INT64, order = 3, required = false) +// private Long playerId; +// +// /** +// * 消息生成的时间戳 +// */ +// @Protobuf(fieldType = FieldType.INT64, order = 4, required = false) +// private Long timestamp; +// +// +// +// /** +// * 序列化(编码) +// * @param out +// */ +// @Override +// public void serialization(ByteBuf out) { +// +// +// } +// +// /** +// * 反序列化(解码) +// * @param in +// * @throws InvalidProtocolBufferException +// */ +// @Override +// public void deserialization(ByteBuf in) { +// +// +// } +//} diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java index 14ed94e..1dc5ad1 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java @@ -1,5 +1,10 @@ package com.paradogs.test.server; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.netty.codec.ConnectorCodec; +import com.paradogs.common.core.netty.codec.ServerCodec; +import com.paradogs.common.core.utils.SpringUtils; +import io.netty.handler.codec.ByteToMessageCodec; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -12,5 +17,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class TestServerApplication { public static void main(String[] args) { SpringApplication.run(TestServerApplication.class, args); + + ByteToMessageCodec bean = SpringUtils.getBean(ConnectorCodec.class); } } diff --git a/paradogs-test/paradogs-test-server/src/main/resources/application.yml b/paradogs-test/paradogs-test-server/src/main/resources/application.yml index c7ab6f0..d6cd62e 100644 --- a/paradogs-test/paradogs-test-server/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-server/src/main/resources/application.yml @@ -1,5 +1,6 @@ paradogs: server: port: 8001 + connector: false queue: main-size: 1 \ No newline at end of file diff --git a/paradogs-test/pom.xml b/paradogs-test/pom.xml index d0d829a..acc9d6e 100644 --- a/paradogs-test/pom.xml +++ b/paradogs-test/pom.xml @@ -5,7 +5,7 @@ paradogs com.paradogs - 0.0.1-SNAPSHOT + 0.0.1 4.0.0 diff --git a/pom.xml b/pom.xml index 226b529..37876f7 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,7 @@ paradogs-client paradogs-master paradogs-test + paradogs-connector @@ -20,7 +21,7 @@ com.paradogs paradogs - 0.0.1-SNAPSHOT + 0.0.1 paradogs Demo project for Spring Boot @@ -92,19 +93,19 @@ com.paradogs paradogs-common - 0.0.1-SNAPSHOT + 0.0.1 com.paradogs paradogs-login - 0.0.1-SNAPSHOT + 0.0.1 com.paradogs paradogs-game - 0.0.1-SNAPSHOT + 0.0.1 @@ -122,19 +123,19 @@ com.paradogs paradogs-common-core - 0.0.1-SNAPSHOT + 0.0.1 com.paradogs paradogs-common-server-starter - 0.0.1-SNAPSHOT + 0.0.1 com.paradogs paradogs-common-client-starter - 0.0.1-SNAPSHOT + 0.0.1 -- Gitee From fcd8832ffbf1b01853dc67b64eacb341d1b5eb0e Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Mon, 7 Aug 2023 17:08:08 +0800 Subject: [PATCH 05/32] =?UTF-8?q?=E9=83=A8=E5=88=86=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- paradogs-client/pom.xml | 30 ---- .../paradogs/client/ClientApplication.java | 23 --- .../client/client/ApplicationRunner.java | 24 --- .../client/ClientChannelInitializer.java | 138 ------------------ .../client/ClientHeartDuplexHandler.java | 27 ---- .../paradogs/client/client/GameClient.java | 47 ------ .../client/handler/GCAttackMsgHandler.java | 22 --- .../client/handler/GCBuyGoodsMsgHandler.java | 20 --- .../client/handler/GCLoginMsgHandler.java | 25 ---- .../GCReceiveWarOrderPrizeMsgHandler.java | 22 --- .../GCRechargeWarOrderVipMsgHandler.java | 22 --- .../src/main/resources/application.yml | 6 - .../com/paradogs/common/client/Client.java | 70 ++++++--- .../client/ClientChannelInitializer.java | 34 +++++ .../common/client/ClientLauncher.java | 24 ++- .../common/client/ClientProperties.java | 13 ++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../common/core/annoations/PdgLoop.java | 16 ++ .../common/core/annoations/PdgMsg.java | 4 +- .../common/core/annoations/PdgMsgMapping.java | 6 +- .../common/core/events/AnonEvent.java | 23 +++ .../common/core/events/BaseEvent.java | 10 +- .../events/listener/PdgEventListener.java | 34 +++++ .../base/GlobalExceptionDispatch.java | 7 +- .../core/message/BaseMsg_CmdVersion.java | 67 +++++++++ .../common/core/message/ByteBodyMsg.java | 28 ++++ .../common/core/message/CGTestMsg.java | 1 - .../common/core/message/CommonController.java | 22 +++ .../common/core/message/MainMsgHandler.java | 20 --- .../common/core/message/MsgHeader.java | 20 ++- .../core/message/MsgTargetResolver.java | 65 +++++++++ .../core/message/RouteMsgTargetResolver.java | 47 ++++++ .../core/netty/codec/ConnectorCodec.java | 15 +- .../common/core/netty/codec/ServerCodec.java | 17 ++- .../core/netty/events/MainLoopEvent.java | 15 ++ .../common/core/netty/events/ServerEvent.java | 25 ++++ .../BaseChannelInitializer.java} | 31 ++-- .../core/netty/pipelines/MsgHandler.java | 9 ++ .../netty/pipelines/MsgHeaderWrapper.java | 8 +- .../netty/queue/DBTaskConsumerThread.java | 3 +- .../netty/queue/MainMsgConsumerThread.java | 27 ++-- .../core/netty/queue/QueueConfiguration.java | 2 - .../core/netty/queue/QueueConsumerThread.java | 15 +- .../common/core/netty/queue/QueueManager.java | 18 ++- .../paradogs/common/core/utils/MsgUtils.java | 105 +++++++------ .../common/core/utils/SpringUtils.java | 31 +++- .../common/core/utils/StringUtils.java | 3 +- ...ot.autoconfigure.AutoConfiguration.imports | 4 +- .../com/paradogs/common/server/Server.java | 69 ++++++--- .../server/ServerChannelInitializer.java | 41 ++++++ .../common/server/ServerLauncher.java | 13 +- .../common/server/ServerProperties.java | 8 +- ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../test/client/TestClientApplication.java | 21 +-- .../paradogs/test/client/demo/ClientMisc.java | 22 +++ .../com/paradogs/test/misc/TestProto.java | 75 ---------- .../test/server/TestServerApplication.java | 7 - .../server/controller/TestController.java | 8 +- .../exceptions/GobalExceptionHandler.java | 2 +- .../paradogs/test/server/misc/LoopTest.java | 34 +++++ .../src/main/resources/application.yml | 2 + 61 files changed, 850 insertions(+), 699 deletions(-) delete mode 100644 paradogs-client/pom.xml delete mode 100644 paradogs-client/src/main/java/com/paradogs/client/ClientApplication.java delete mode 100644 paradogs-client/src/main/java/com/paradogs/client/client/ApplicationRunner.java delete mode 100644 paradogs-client/src/main/java/com/paradogs/client/client/ClientChannelInitializer.java delete mode 100644 paradogs-client/src/main/java/com/paradogs/client/client/ClientHeartDuplexHandler.java delete mode 100644 paradogs-client/src/main/java/com/paradogs/client/client/GameClient.java delete mode 100644 paradogs-client/src/main/java/com/paradogs/client/handler/GCAttackMsgHandler.java delete mode 100644 paradogs-client/src/main/java/com/paradogs/client/handler/GCBuyGoodsMsgHandler.java delete mode 100644 paradogs-client/src/main/java/com/paradogs/client/handler/GCLoginMsgHandler.java delete mode 100644 paradogs-client/src/main/java/com/paradogs/client/handler/GCReceiveWarOrderPrizeMsgHandler.java delete mode 100644 paradogs-client/src/main/java/com/paradogs/client/handler/GCRechargeWarOrderVipMsgHandler.java delete mode 100644 paradogs-client/src/main/resources/application.yml create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientChannelInitializer.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgLoop.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/AnonEvent.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg_CmdVersion.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/ByteBodyMsg.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CommonController.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MainMsgHandler.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgTargetResolver.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/RouteMsgTargetResolver.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/{misc/ChannelInitializer.java => initializer/BaseChannelInitializer.java} (80%) create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerChannelInitializer.java create mode 100644 paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ClientMisc.java delete mode 100644 paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/misc/TestProto.java create mode 100644 paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/misc/LoopTest.java diff --git a/paradogs-client/pom.xml b/paradogs-client/pom.xml deleted file mode 100644 index 3a5c45b..0000000 --- a/paradogs-client/pom.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - paradogs - com.paradogs - 0.0.1 - - 4.0.0 - - paradogs-client - - - 8 - 8 - - - - - com.paradogs - paradogs-common - - - com.paradogs - paradogs-login - - - - \ No newline at end of file diff --git a/paradogs-client/src/main/java/com/paradogs/client/ClientApplication.java b/paradogs-client/src/main/java/com/paradogs/client/ClientApplication.java deleted file mode 100644 index 61aebfa..0000000 --- a/paradogs-client/src/main/java/com/paradogs/client/ClientApplication.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.paradogs.client; - -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.scheduling.annotation.EnableAsync; - -/** - * @author: yumi - * @date: 2023/2/25 13:41 - * @Description: TODO - */ -@SpringBootApplication( - scanBasePackageClasses = {ClientApplication.class}, - scanBasePackages = {"com.mini.common"} -) -@MapperScan("com.mini.common") -@EnableAsync -public class ClientApplication { - public static void main(String[] args) { - SpringApplication.run(ClientApplication.class, args); - } -} diff --git a/paradogs-client/src/main/java/com/paradogs/client/client/ApplicationRunner.java b/paradogs-client/src/main/java/com/paradogs/client/client/ApplicationRunner.java deleted file mode 100644 index e621011..0000000 --- a/paradogs-client/src/main/java/com/paradogs/client/client/ApplicationRunner.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.paradogs.client.client; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/2/25 13:45 - * @Description: TODO - */ -@Component -@Slf4j -public class ApplicationRunner implements org.springframework.boot.ApplicationRunner { - - @Autowired - private GameClient gameClient; - - @Override - public void run(ApplicationArguments args) throws Exception { - gameClient.start(); - } -} diff --git a/paradogs-client/src/main/java/com/paradogs/client/client/ClientChannelInitializer.java b/paradogs-client/src/main/java/com/paradogs/client/client/ClientChannelInitializer.java deleted file mode 100644 index bdc9b12..0000000 --- a/paradogs-client/src/main/java/com/paradogs/client/client/ClientChannelInitializer.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.paradogs.client.client; - -import com.paradogs.common.handler.BaseMessageHandler; -import com.paradogs.common.netty.Codec; -import com.paradogs.game.message.CGAttackMsg; -import com.paradogs.game.message.CGBuyGoodsMsg; -import com.paradogs.game.message.CGReceiveWarOrderPrizeMsg; -import com.paradogs.game.message.CGRechargeWarOrderVipMsg; -import com.paradogs.login.message.CGLoginMsg; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInboundHandlerAdapter; -import io.netty.channel.ChannelInitializer; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.LengthFieldBasedFrameDecoder; -import io.netty.handler.codec.LengthFieldPrepender; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.Scanner; -import java.util.concurrent.CountDownLatch; - -/** - * @author: yumi - * @date: 2023-02-27 11:37 - * @Description: TODO - */ -@Slf4j -@Component -public class ClientChannelInitializer extends ChannelInitializer { - - public static CountDownLatch loginLatch = new CountDownLatch(1); - - public static Boolean loginState = false; - - @Override - protected void initChannel(NioSocketChannel channel) throws Exception { - - channel.pipeline().addLast(new LengthFieldBasedFrameDecoder(65534, 0, 2, 0, 2)); - channel.pipeline().addLast(new LengthFieldPrepender(2)); - channel.pipeline().addLast(new Codec()); - channel.pipeline().addLast(new BaseMessageHandler()); - -// channel.pipeline().addLast(new IdleStateHandler(0,3,0)); -// channel.pipeline().addLast(new ClientHeartDuplexHandler()); - - channel.pipeline().addLast(new ChannelInboundHandlerAdapter() { - Scanner sc = new Scanner(System.in); - @Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - - System.out.println("激活了"); - - new Thread(() -> { - - while (true) { - System.out.println("account:"); - String account = sc.nextLine(); -// String account = "ym"; -// String pwd = "123456"; - - System.out.println("pwd:"); - String pwd = sc.nextLine(); - - CGLoginMsg cgLoginMsg = new CGLoginMsg(); - cgLoginMsg.setAccount(account); - cgLoginMsg.setPwd(pwd); - - // 发送登录请求 - ctx.channel().writeAndFlush(cgLoginMsg); - - try { - loginLatch.await(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - if (loginState) { - System.out.println("[登录成功]"); - break; - } - - loginLatch = new CountDownLatch(1); - System.out.println("[登录失败]"); - - } - - while (true) { - - try { - - System.out.println("========================"); - System.out.println("输入指令"); - System.out.println("1、购买商品"); - System.out.println("2、领取战令奖励"); - System.out.println("3、攻击"); - System.out.println("4、充值战令 vip"); - - String input = sc.nextLine().trim(); - - if (input.equals("1")) { - System.out.println("========== [输入商品 ID] =========="); -// dataRepository.getGoodsMap().values().forEach(System.out::println); - - try { - CGBuyGoodsMsg cgBuyGoodsMsg = new CGBuyGoodsMsg(Long.valueOf(sc.nextLine())); - System.out.println(cgBuyGoodsMsg); - ctx.channel().writeAndFlush(cgBuyGoodsMsg); - } catch (Exception e) { - System.out.println("[购买失败]"); - } - } else if (input.equals("2")) { - System.out.println("========== [输入奖励 ID] =========="); - ctx.channel().writeAndFlush(new CGReceiveWarOrderPrizeMsg(Long.valueOf(sc.nextLine()))); - - } else if (input.equals("3")) { - // 攻击 - ctx.channel().writeAndFlush(new CGAttackMsg()); - - } else if (input.equals("4")) { - ctx.channel().writeAndFlush(new CGRechargeWarOrderVipMsg()); - } - - } catch (Exception e) { - e.printStackTrace(); - } - - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - } - - }).start(); - } - }); - } -} diff --git a/paradogs-client/src/main/java/com/paradogs/client/client/ClientHeartDuplexHandler.java b/paradogs-client/src/main/java/com/paradogs/client/client/ClientHeartDuplexHandler.java deleted file mode 100644 index cfd48f9..0000000 --- a/paradogs-client/src/main/java/com/paradogs/client/client/ClientHeartDuplexHandler.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.paradogs.client.client; - -import com.paradogs.common.message.CGHeartMsg; -import io.netty.channel.ChannelDuplexHandler; -import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.timeout.IdleState; -import io.netty.handler.timeout.IdleStateEvent; -import lombok.extern.slf4j.Slf4j; - -/** - * @author: yumi - * @date: 2023-02-28 12:59 - * @Description: TODO - */ -@Slf4j -public class ClientHeartDuplexHandler extends ChannelDuplexHandler { - - @Override - public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { - IdleStateEvent event = (IdleStateEvent) evt; - if(event.state()== IdleState.WRITER_IDLE){ - log.info("已经3s没有写数据了,发送心跳包..."); - ctx.writeAndFlush(new CGHeartMsg()); - } - } - -} diff --git a/paradogs-client/src/main/java/com/paradogs/client/client/GameClient.java b/paradogs-client/src/main/java/com/paradogs/client/client/GameClient.java deleted file mode 100644 index 0f81ecc..0000000 --- a/paradogs-client/src/main/java/com/paradogs/client/client/GameClient.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.paradogs.client.client; - -import io.netty.bootstrap.Bootstrap; -import io.netty.channel.Channel; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.nio.NioSocketChannel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/2/25 13:42 - * @Description: TODO - */ -@Slf4j -@Component -public class GameClient { - - @Autowired - private ClientChannelInitializer clientChannelInitializer; - - @Async - public void start() { - - NioEventLoopGroup worker = new NioEventLoopGroup(); - try { - Bootstrap client = new Bootstrap() - .group(worker) - .channel(NioSocketChannel.class) - .handler(clientChannelInitializer); - - Channel channel = client.connect("localhost", 80).sync().channel(); - log.info("client start"); - - channel.closeFuture().sync(); - - } catch (InterruptedException e) { - log.error("server error: [{}]", e.getMessage()); - } finally { - worker.shutdownGracefully(); - } - - } - -} diff --git a/paradogs-client/src/main/java/com/paradogs/client/handler/GCAttackMsgHandler.java b/paradogs-client/src/main/java/com/paradogs/client/handler/GCAttackMsgHandler.java deleted file mode 100644 index b69c7cc..0000000 --- a/paradogs-client/src/main/java/com/paradogs/client/handler/GCAttackMsgHandler.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.paradogs.client.handler; - -import com.paradogs.common.handler.BaseHandler; -import com.paradogs.game.message.GCAttackMsg; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-03-24 17:00 - * @Description: TODO - */ -@Slf4j -@Component -public class GCAttackMsgHandler implements BaseHandler { - - @Override - public void handler(Channel channel, GCAttackMsg msg) { - System.out.println(msg.getResult()); - } -} diff --git a/paradogs-client/src/main/java/com/paradogs/client/handler/GCBuyGoodsMsgHandler.java b/paradogs-client/src/main/java/com/paradogs/client/handler/GCBuyGoodsMsgHandler.java deleted file mode 100644 index e3f81b3..0000000 --- a/paradogs-client/src/main/java/com/paradogs/client/handler/GCBuyGoodsMsgHandler.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.paradogs.client.handler; - -import com.paradogs.common.handler.BaseHandler; -import com.paradogs.game.message.GCBuyGoodsMsg; -import io.netty.channel.Channel; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-03-13 15:54 - * @Description: TODO - */ -@Component -public class GCBuyGoodsMsgHandler implements BaseHandler { - - @Override - public void handler(Channel channel, GCBuyGoodsMsg msg) { - System.out.println(msg.getResponseMsg()); - } -} diff --git a/paradogs-client/src/main/java/com/paradogs/client/handler/GCLoginMsgHandler.java b/paradogs-client/src/main/java/com/paradogs/client/handler/GCLoginMsgHandler.java deleted file mode 100644 index 56b9921..0000000 --- a/paradogs-client/src/main/java/com/paradogs/client/handler/GCLoginMsgHandler.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.paradogs.client.handler; - -import com.paradogs.client.client.ClientChannelInitializer; -import com.paradogs.common.handler.BaseHandler; -import com.paradogs.login.message.GCLoginMsg; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/2/27 21:01 - * @Description: TODO - */ -@Slf4j -@Component -public class GCLoginMsgHandler implements BaseHandler { - - @Override - public void handler(Channel channel, GCLoginMsg msg) { - log.info("receive GCLoginMsg [{}]", msg); - ClientChannelInitializer.loginState = msg.getReason(); - ClientChannelInitializer.loginLatch.countDown(); - } -} diff --git a/paradogs-client/src/main/java/com/paradogs/client/handler/GCReceiveWarOrderPrizeMsgHandler.java b/paradogs-client/src/main/java/com/paradogs/client/handler/GCReceiveWarOrderPrizeMsgHandler.java deleted file mode 100644 index 99bef60..0000000 --- a/paradogs-client/src/main/java/com/paradogs/client/handler/GCReceiveWarOrderPrizeMsgHandler.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.paradogs.client.handler; - -import com.paradogs.common.handler.BaseHandler; -import com.paradogs.game.message.GCReceiveWarOrderPrizeMsg; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-03-24 15:16 - * @Description: TODO - */ -@Slf4j -@Component -public class GCReceiveWarOrderPrizeMsgHandler implements BaseHandler { - - @Override - public void handler(Channel channel, GCReceiveWarOrderPrizeMsg msg) { - System.out.println(msg.getResult()); - } -} diff --git a/paradogs-client/src/main/java/com/paradogs/client/handler/GCRechargeWarOrderVipMsgHandler.java b/paradogs-client/src/main/java/com/paradogs/client/handler/GCRechargeWarOrderVipMsgHandler.java deleted file mode 100644 index 51f6b61..0000000 --- a/paradogs-client/src/main/java/com/paradogs/client/handler/GCRechargeWarOrderVipMsgHandler.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.paradogs.client.handler; - -import com.paradogs.common.handler.BaseHandler; -import com.paradogs.game.message.GCRechargeWarOrderVipMsg; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/3/26 13:56 - * @Description: TODO - */ -@Slf4j -@Component -public class GCRechargeWarOrderVipMsgHandler implements BaseHandler { - - @Override - public void handler(Channel channel, GCRechargeWarOrderVipMsg msg) { - System.out.println(msg.getResult()); - } -} diff --git a/paradogs-client/src/main/resources/application.yml b/paradogs-client/src/main/resources/application.yml deleted file mode 100644 index 6072bf7..0000000 --- a/paradogs-client/src/main/resources/application.yml +++ /dev/null @@ -1,6 +0,0 @@ -spring: - datasource: - url: jdbc:mysql://47.102.133.168:3306/netty?useUnicode=true&characterEncoding=utf-8&useSSL=false - driver-class-name: com.mysql.jdbc.Driver - username: root - password: root \ No newline at end of file diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java index fce2180..7629ceb 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java @@ -3,67 +3,93 @@ package com.paradogs.common.client; import com.paradogs.common.client.events.ClientStartEvent; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.SpringUtils; +import com.sun.deploy.config.ClientConfig; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelInitializer; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; +import org.springframework.context.annotation.Scope; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; +import java.util.List; + /** * @author: yumi * @date: 2023/7/31 22:36 * @Description: TODO */ @Slf4j -@Component public class Client { - /** - * 待优化:可换成集合,因为有可能连接多个 server - */ - @Autowired - private ClientProperties clientConfig; + private Bootstrap client; - @Autowired - private ChannelInitializer channelInitializer; + @Getter + private Channel channel; - private Bootstrap client; + private NioEventLoopGroup worker; + + private ClientProperties properties; + + public Client(ClientProperties clientProperties) { + this.properties = clientProperties; + } /** * 启动 netty 服务器 */ - @Async public void start() { - NioEventLoopGroup worker = new NioEventLoopGroup(); - try { long startTime = System.currentTimeMillis(); + this.worker = new NioEventLoopGroup(); + this.client = new Bootstrap() .group(worker) .channel(NioSocketChannel.class) - .handler(channelInitializer); + .handler(SpringUtils.getBean(ChannelInitializer.class)); - Channel channel = client.connect(clientConfig.getHost(), clientConfig.getPort()).sync().channel(); + this.channel = client.connect(properties.getHost(), properties.getPort()).sync().channel(); - log.info("{}:{} connect success", clientConfig.getHost(), clientConfig.getPort()); + log.info("{}:{} connect success", properties.getHost(), properties.getPort()); EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); - channel.closeFuture().sync(); + channel.closeFuture().addListener(future -> { + log.info("[{}] server stop", this.properties.getName()); + }); + + } catch (Exception e) { + log.error("server error:[{}]", e.getMessage(), e); + this.closeSync(); + } + + } - } catch (InterruptedException e) { - log.error("server error:[{}]", e.getMessage()); - } finally { - // 关闭服务器资源 - worker.shutdownGracefully(); - log.info("[{}] 服务器停止", this.getClass().getSimpleName()); + /** + * 同步关闭连接 + * ***ps: 关闭后进度未结束是因为消息处理队列还开着未关闭 + * @return + */ + public boolean closeSync() { + try { + if (this.channel.isOpen()) { + channel.close().sync(); + } + if (!worker.isShutdown()) { + worker.shutdownGracefully(); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; } } diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientChannelInitializer.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientChannelInitializer.java new file mode 100644 index 0000000..3996f41 --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientChannelInitializer.java @@ -0,0 +1,34 @@ +package com.paradogs.common.client; + +import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; +import com.paradogs.common.core.netty.pipelines.MsgHandler; +import com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper; +import com.paradogs.common.core.netty.protocol.ProtocolProperties; +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelPipeline; +import io.netty.channel.socket.nio.NioSocketChannel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/7 15:31 + * @Description: TODO + */ +@Slf4j +@Component +@ChannelHandler.Sharable +public class ClientChannelInitializer extends BaseChannelInitializer { + + @Override + protected void initPipeline2(ChannelPipeline pipeline) { +// pipeline.addLast() + } + + @Override + protected void initAfter(NioSocketChannel channel) { + } + +} \ No newline at end of file diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java index 2416a61..36a7cde 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java @@ -1,5 +1,6 @@ package com.paradogs.common.client; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; @@ -8,23 +9,38 @@ import org.springframework.context.annotation.Scope; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; + /** * @author: yumi * @date: 2023/7/31 23:29 * @Description: TODO */ @Slf4j +@Getter @Component -@Scope("prototype") -@EnableAsync public class ClientLauncher implements ApplicationRunner { @Autowired - private Client client; + private ClientProperties clientProperties; + + private List clients = new ArrayList<>(); @Override public void run(ApplicationArguments args) throws Exception { - client.start(); + clients.add( new Client(clientProperties)); + for (Client client : clients) { + client.start(); + } + + } + + public void closeAll() { + for (Client client : clients) { + client.closeSync(); + } + } } diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java index df5e323..2bbaa8d 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java @@ -1,5 +1,6 @@ package com.paradogs.common.client; +import com.paradogs.common.core.utils.StringUtils; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @@ -24,4 +25,16 @@ public class ClientProperties { */ private int port; + /** + * 连接名 + */ + private String name; + + public String getName() { + if (StringUtils.isBlank(this.name)) { + this.name = "Client"; + } + return name; + } + } diff --git a/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 2e5a934..8bb288a 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,5 +1,6 @@ com.paradogs.common.client.Client com.paradogs.common.client.ClientProperties com.paradogs.common.client.ClientLauncher +com.paradogs.common.client.ClientChannelInitializer diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgLoop.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgLoop.java new file mode 100644 index 0000000..a6cb865 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgLoop.java @@ -0,0 +1,16 @@ +package com.paradogs.common.core.annoations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/8/4 9:54 + * @Description: TODO + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface PdgLoop { +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java index 76092e3..5755da5 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java @@ -10,12 +10,12 @@ import java.lang.annotation.Target; * @date: 2023/7/27 9:47 * @Description: TODO */ -@Target({ElementType.TYPE}) +@Target({ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) //@ProtobufClass 坑,@ProtobufClass 加在自定义注解上时,使用自定义注解不会生效该注解 // 可以加上父类 BaseMsg 上或者实际类上 public @interface PdgMsg { - int value(); +// int value(); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsgMapping.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsgMapping.java index 74391ff..268ddd4 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsgMapping.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsgMapping.java @@ -13,14 +13,14 @@ import java.lang.annotation.Target; * @Description: TODO * 根据消息 class 映射找到对应的处理方法 */ -@Target({ElementType.METHOD}) +@Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface PdgMsgMapping { /** - * 要处理的类型 + * 路由路径 * @return */ - Class value(); + String value(); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/AnonEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/AnonEvent.java new file mode 100644 index 0000000..018111b --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/AnonEvent.java @@ -0,0 +1,23 @@ +package com.paradogs.common.core.events; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.util.UUID; + +/** + * @author: yumi + * @date: 2023/8/7 15:35 + * @Description: 匿名事件,不记录事件发布者 + */ +@Data +public class AnonEvent extends BaseEvent { + + /** + * ApplicationEvent 的 Object 参数用于记录发布事件的对象(发布者) + */ + public AnonEvent() { + super(new Object()); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/BaseEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/BaseEvent.java index 05ebedf..4fbe28f 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/BaseEvent.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/BaseEvent.java @@ -12,6 +12,10 @@ import java.util.UUID; * @author: yumi * @date: 2023/7/31 22:00 * @Description: TODO + * 事件分为三种: + * 1、内部传输(父子类接口实现) + * 2、远程传输(SpringEvent 实现) + * 3、待优化:网络传输(未实现) */ @Getter @Setter @@ -24,13 +28,13 @@ public class BaseEvent extends ApplicationEvent { private String id; /** - * 创建时间 + * 创建时间,ApplicationEvent 自带 */ - private LocalDateTime createTime; +// private LocalDateTime createTime; public BaseEvent(Object source) { super(source); this.id = UUID.randomUUID().toString(); - this.createTime = LocalDateTime.now(); } + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/listener/PdgEventListener.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/listener/PdgEventListener.java index 46353db..15d0b73 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/listener/PdgEventListener.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/listener/PdgEventListener.java @@ -1,13 +1,20 @@ package com.paradogs.common.core.events.listener; +import com.paradogs.common.core.annoations.PdgLoop; +import com.paradogs.common.core.netty.events.MainLoopEvent; +import com.paradogs.common.core.utils.SpringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; import com.paradogs.common.core.events.SyncMsgEvent; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.LinkedHashMap; import java.util.Map; import java.util.concurrent.Callable; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author: yumi @@ -45,4 +52,31 @@ public class PdgEventListener { } } + @EventListener(MainLoopEvent.class) + public void onMainLoopEvent() { + for (Method method : SpringUtils.getMethodsWithAnnotation(PdgLoop.class)) { + /** + * 待优化:方法参数注入,其他地方也有,可以提取成一个方法 + */ + try { + if (method.getParameterCount() == 0) { + method.invoke( + SpringUtils.getBean(method.getDeclaringClass()) + ); + } else { + method.invoke( + SpringUtils.getBean(method.getDeclaringClass()), + Stream.of(method.getParameterTypes()).map(aClass -> new Object()).collect(Collectors.toList()) + ); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java index a1f3c2b..d77d8f6 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java @@ -50,8 +50,11 @@ public class GlobalExceptionDispatch { * @param throwable */ public void forward(Throwable throwable) { + + if (throwable == null) {return;} + // 这里的异常时 InvocationTargetException 反射异常,转换成真正的异常 - Method method = exceptionHandlerMap.get(throwable.getCause().getClass()); + Method method = exceptionHandlerMap.get(throwable.getCause() != null ? throwable.getCause().getClass() : throwable.getClass()); if (method == null && (method = exceptionHandlerMap.get(Exception.class)) == null) { throwable.getCause().printStackTrace(); return; @@ -60,7 +63,7 @@ public class GlobalExceptionDispatch { method.invoke( SpringUtils.getBean(method.getDeclaringClass()), Stream.of(method.getParameterTypes()) - .map(type -> BaseMsg.class.isAssignableFrom(type) ? throwable : null) + .map(type -> Exception.class.isAssignableFrom(type) ? throwable : null) .toArray() ); } catch (Exception e) { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg_CmdVersion.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg_CmdVersion.java new file mode 100644 index 0000000..fbad69f --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg_CmdVersion.java @@ -0,0 +1,67 @@ +package com.paradogs.common.core.message; + +import com.baidu.bjf.remoting.protobuf.Codec; +import com.baidu.bjf.remoting.protobuf.FieldType; +import com.baidu.bjf.remoting.protobuf.ProtobufProxy; +import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +import com.paradogs.common.core.utils.BeanUtils; +import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.ProtoUtils; +import io.netty.buffer.ByteBuf; +import lombok.Data; +import lombok.experimental.Accessors; +import lombok.extern.slf4j.Slf4j; + +import java.io.IOException; + +/** + * @author: yumi + * @date: 2023/2/15 21:12 + * @Description: 基础消息类,通过约定类名实现反射自动调用, + * this 在子类使用时会指向子类对象,从而实现子类不需要实现接口就能自动转换 + */ +//@Slf4j 不能加,jprotobuf 会自动解析所有属性 +@Data +@ProtobufClass +@Deprecated +public class BaseMsg_CmdVersion implements IMsgSerializable { + + + @Protobuf(fieldType = FieldType.OBJECT, order = 1) + private MsgHeader msgHeader; + + + /** + * 序列化(编码 + * ps: BaseMsg 的 JProtobuf 序列化时,this 指向 BaseMsg(实际运行会指向子类),无法通过编译,需要额外处理 (ProtoUtils), + * 不指定 Codec<> 的泛型虽然可以通过编译但是无法正确的编解码 + * @param out + */ + @Override + public void serialization(ByteBuf out) { + + byte[] bytes = ProtoUtils.encode(this); + // 写入消息体 + out.writeBytes(bytes); + + } + + /** + * 反序列化(解码) + * @param in + */ + @Override + public void deserialization(ByteBuf in) throws IOException { + + // 读取消息体 byte 数组 + byte[] bytes = new byte[in.readableBytes()]; + in.readBytes(bytes); + BaseMsg_CmdVersion msg = ProtoUtils.decode(bytes, this.getClass()); + + // 将属性设置到类上 + BeanUtils.copyProperties(msg, this); + + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/ByteBodyMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/ByteBodyMsg.java new file mode 100644 index 0000000..6b6fbbb --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/ByteBodyMsg.java @@ -0,0 +1,28 @@ +package com.paradogs.common.core.message; + +import com.paradogs.common.core.utils.BeanUtils; +import com.paradogs.common.core.utils.ProtoUtils; +import io.netty.buffer.ByteBuf; + +import java.io.IOException; + +/** + * @author: yumi + * @date: 2023/8/7 9:52 + * @Description: TODO + */ +public class ByteBodyMsg extends BaseMsg { + + private byte[] dataBytes; + + @Override + public void serialization(ByteBuf out) { + out.writeBytes(this.dataBytes); + } + + @Override + public void deserialization(ByteBuf in) throws IOException { + this.dataBytes = new byte[in.readableBytes()]; + in.readBytes(this.dataBytes); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java index 234ddec..59a0def 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java @@ -9,7 +9,6 @@ import lombok.*; * @Description: TODO */ -@PdgMsg(1) @Data @AllArgsConstructor @NoArgsConstructor diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CommonController.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CommonController.java new file mode 100644 index 0000000..91cbdea --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CommonController.java @@ -0,0 +1,22 @@ +package com.paradogs.common.core.message; + +import com.paradogs.common.core.annoations.PdgController; +import com.paradogs.common.core.annoations.PdgMsgMapping; +import lombok.extern.slf4j.Slf4j; + +/** + * @author: yumi + * @date: 2023/8/7 16:04 + * @Description: TODO + */ +@Slf4j +@PdgController +@PdgMsgMapping("_paradogs") +public class CommonController { + + @PdgMsgMapping("dist") + public void dist() { + log.info("dist test success ..."); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MainMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MainMsgHandler.java deleted file mode 100644 index 42b49af..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MainMsgHandler.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.paradogs.common.core.message; - - -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; -import org.springframework.beans.factory.annotation.Autowired; - -/** - * @author: yumi - * @date: 2023/7/27 13:43 - * @Description: 将接收的消息保存到消息队列 - */ -public class MainMsgHandler extends SimpleChannelInboundHandler { - - - @Override - protected void channelRead0(ChannelHandlerContext ctx, BaseMsg msg) throws Exception { - - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java index 51e89a6..b25044d 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java @@ -9,10 +9,13 @@ import com.google.protobuf.InvalidProtocolBufferException; import com.paradogs.common.core.exceptions.SerializationException; import com.paradogs.common.core.utils.BeanUtils; import com.paradogs.common.core.utils.ProtoUtils; +import com.paradogs.common.core.utils.SpringUtils; import io.netty.buffer.ByteBuf; import lombok.Data; import java.io.IOException; +import java.time.LocalDateTime; +import java.util.Date; /** @@ -38,9 +41,14 @@ public class MsgHeader implements IMsgSerializable { * 消息类型,替代路由地址(java 使用类型对应,nodejs 可以使用字符串对应方法) * 待优化,路由转 cmd api */ - @Protobuf(fieldType = FieldType.INT32, order = 2, required = false) - private int cmd; -// private String route; +// @Protobuf(fieldType = FieldType.INT32, order = 2, required = false) +// private int cmd; + + /** + * 消息路由,可通过字典转换为 cmd + */ + @Protobuf(fieldType = FieldType.STRING, order = 2, required = false) + private String route; /** * 玩家 ID @@ -54,6 +62,11 @@ public class MsgHeader implements IMsgSerializable { @Protobuf(fieldType = FieldType.INT64, order = 4, required = false) private Long timestamp; + public MsgHeader() { + // + this.timestamp = new Date().getTime(); + } + /** * 序列化(编码) * ps: netty 的 codec 最终会捕获异常转换成 EncoderException @@ -78,4 +91,5 @@ public class MsgHeader implements IMsgSerializable { MsgHeader msgHeader = codec.decode(bytes); BeanUtils.copyProperties(msgHeader, this); } + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgTargetResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgTargetResolver.java new file mode 100644 index 0000000..d0eea97 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgTargetResolver.java @@ -0,0 +1,65 @@ +package com.paradogs.common.core.message; + +import com.paradogs.common.core.annoations.PdgMsgMapping; +import com.paradogs.common.core.utils.SpringUtils; +import lombok.Getter; + +import javax.annotation.PostConstruct; +import java.lang.reflect.Method; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.TreeMap; + +/** + * @author: yumi + * @date: 2023/8/4 14:34 + * @Description: TODO + */ +public abstract class MsgTargetResolver { + + @Getter + private Map mappingMap = new TreeMap<>(); + + /** + * 加载映射和消息 cmd,Bean 注册完成后执行 + */ + @PostConstruct + public abstract void initMsgMapping(); + + /** + * 根据路由获取消息映射信息 + * @param route + * @return + */ + public MsgMapping getMsgMapping(T route) { + return mappingMap.get(route); + } + +// public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { +// +// Class beanClass = bean.getClass(); +// Method[] methods = beanClass.getDeclaredMethods(); +// for (Method method : methods) { +// if (!method.isAnnotationPresent(PdgMsgMapping.class)) { +// continue; +// } +// +// PdgMsgMapping pdgMsgMapping = method.getAnnotation(PdgMsgMapping.class); +// PdgMsg pdgMsg = pdgMsgMapping.value().getDeclaredAnnotation(PdgMsg.class); +// +// if (pdgMsg == null) { +// log.error("@PdgMsgMapping class [{}] no has @PdgMsg", pdgMsgMapping.value()); +// throw new RuntimeException("@PdgMsgMapping class [{" + pdgMsgMapping.value() + "}] no has @PdgMsg"); +// } +// if (msgMappingByCmdMap.get(pdgMsg.value()) != null) { +// log.error("cmd [{}] already exists", pdgMsgMapping.value()); +// throw new RuntimeException("cmd [" + pdgMsgMapping.value() + "] already exists"); +// } +// msgMappingByCmdMap.put(pdgMsg.value(), new MsgMapping(pdgMsgMapping.value(), method)); +// } +// +// return bean; +// } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/RouteMsgTargetResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/RouteMsgTargetResolver.java new file mode 100644 index 0000000..b28a343 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/RouteMsgTargetResolver.java @@ -0,0 +1,47 @@ +package com.paradogs.common.core.message; + +import com.paradogs.common.core.annoations.PdgMsg; +import com.paradogs.common.core.annoations.PdgMsgMapping; +import com.paradogs.common.core.utils.SpringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; +import java.util.List; +import java.util.Map; +import java.util.stream.Stream; + +/** + * @author: yumi + * @date: 2023/8/7 9:24 + * @Description: TODO + */ +@Slf4j +@Component +public class RouteMsgTargetResolver extends MsgTargetResolver { + + @Override + public void initMsgMapping() { + + Map mappingMap = this.getMappingMap(); + + List methods = SpringUtils.getMethodsWithAnnotation(PdgMsgMapping.class); + for (Method method : methods) { + // 计算路由 + PdgMsgMapping parentRouteMapping = method.getDeclaringClass().getAnnotation(PdgMsgMapping.class); + String route = (parentRouteMapping != null ? parentRouteMapping.value() : "") + (method.getAnnotation(PdgMsgMapping.class).value().startsWith("/") ? "" : ".") + method.getAnnotation(PdgMsgMapping.class).value(); + if (mappingMap.containsKey(route)) { + throw new RuntimeException("Duplicate route found: [" + route + "]"); + } + // 保存 Msg 类型和要执行的方法 + Class targetMsgClass = null; + for (Parameter parameter : method.getParameters()) { + if (parameter.getAnnotation(PdgMsg.class) != null) { + targetMsgClass = (Class) parameter.getType(); + } + } + mappingMap.put(route, new MsgMapping(targetMsgClass, method)); + } + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java index 5cd55dd..88510ab 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java @@ -1,8 +1,8 @@ package com.paradogs.common.core.netty.codec; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.message.MsgHeader; +import com.paradogs.common.core.message.*; import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.SpringUtils; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; @@ -40,8 +40,15 @@ public class ConnectorCodec extends ByteToMessageCodec { MsgHeader msgHeader = new MsgHeader(); msgHeader.deserialization(in); - // 读取消息体,加载实际的消息类型 - BaseMsg baseMsg = MsgUtils.getMsgClass(msgHeader.getCmd()).newInstance(); + // 获取消息实际类型 + MsgMapping msgMapping = SpringUtils.getBean(MsgTargetResolver.class).getMsgMapping(msgHeader.getRoute()); + if (msgMapping == null) { + log.error("route not found: [{}]", msgHeader.getRoute()); + return; + } + + BaseMsg baseMsg = msgMapping.getMsgClass() != null ? msgMapping.getMsgClass().newInstance() : new ByteBodyMsg(); + baseMsg.deserialization(in); baseMsg.setMsgHeader(msgHeader); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java index 8727370..5b3c2bb 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java @@ -1,8 +1,8 @@ package com.paradogs.common.core.netty.codec; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.message.MsgHeader; +import com.paradogs.common.core.message.*; import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.SpringUtils; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; @@ -42,8 +42,17 @@ public class ServerCodec extends ByteToMessageCodec { MsgHeader msgHeader = new MsgHeader(); msgHeader.deserialization(in); - // 读取消息体,加载实际的消息类型 - BaseMsg baseMsg = MsgUtils.getMsgClass(msgHeader.getCmd()).newInstance(); + // 获取消息实际类型 + MsgMapping msgMapping = SpringUtils.getBean(MsgTargetResolver.class).getMsgMapping(msgHeader.getRoute()); + if (msgMapping == null) { + // 这里 log 的次数可能会比实际消息数量少 + log.error("route not found: [{}], readableBytes: [{}]", msgHeader.getRoute(), in.readableBytes()); + in.clear(); + return; + } + + BaseMsg baseMsg = msgMapping.getMsgClass() != null ? msgMapping.getMsgClass().newInstance() : new ByteBodyMsg(); + baseMsg.deserialization(in); baseMsg.setMsgHeader(msgHeader); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java new file mode 100644 index 0000000..cafac37 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java @@ -0,0 +1,15 @@ +package com.paradogs.common.core.netty.events; + +import org.springframework.context.ApplicationEvent; + +/** + * @author: yumi + * @date: 2023/8/4 9:46 + * @Description: TODO + */ +public class MainLoopEvent extends ApplicationEvent { + + public MainLoopEvent() { + super(new Object()); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java new file mode 100644 index 0000000..b9331b5 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java @@ -0,0 +1,25 @@ +package com.paradogs.common.core.netty.events; + +import com.paradogs.common.core.events.BaseEvent; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.ApplicationEvent; + +import java.util.function.Consumer; + +/** + * @author: yumi + * @date: 2023/8/7 14:58 + * @Description: TODO + */ +@Slf4j +public class ServerEvent { + + public static class START extends BaseEvent { + + public START(Object source) { + super(source); + } + } + + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java similarity index 80% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java index e222f4f..055fa59 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/misc/ChannelInitializer.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java @@ -1,12 +1,10 @@ -package com.paradogs.common.core.netty.misc; +package com.paradogs.common.core.netty.initializer; import com.paradogs.common.core.netty.pipelines.MsgHandler; import com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper; import com.paradogs.common.core.netty.protocol.ProtocolProperties; import com.paradogs.common.core.utils.SpringUtils; -import io.netty.channel.Channel; -import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.*; import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.handler.codec.ByteToMessageCodec; import io.netty.handler.codec.LengthFieldBasedFrameDecoder; @@ -21,9 +19,7 @@ import org.springframework.stereotype.Component; * @Description: TODO */ @Slf4j -@Component -@ChannelHandler.Sharable -public class ChannelInitializer extends io.netty.channel.ChannelInitializer { +public abstract class BaseChannelInitializer extends ChannelInitializer { @Autowired private MsgHandler msgHandler; @@ -34,9 +30,6 @@ public class ChannelInitializer extends io.netty.channel.ChannelInitializer { protected void channelRead0(ChannelHandlerContext ctx, BaseMsg msg) throws Exception { queueManager.pushMainMsg(msg); } + + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + Channel channel = ctx.channel(); + BaseMsg baseMsg = new BaseMsg(); + ctx.writeAndFlush(baseMsg); + log.info("send >> {}", baseMsg); + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHeaderWrapper.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHeaderWrapper.java index f1b40ff..b6270a6 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHeaderWrapper.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHeaderWrapper.java @@ -18,13 +18,7 @@ public class MsgHeaderWrapper extends ChannelDuplexHandler { @Override public void write(ChannelHandlerContext ctx, Object data, ChannelPromise promise) throws Exception { - BaseMsg msg = (BaseMsg) data; - - MsgHeader header = new MsgHeader(); - header.setPlayerId(100L); - header.setCmd(1); - msg.setMsgHeader(header); // 执行下一个 - super.write(ctx, msg, promise); + super.write(ctx, data, promise); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/DBTaskConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/DBTaskConsumerThread.java index 91cb27a..a989495 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/DBTaskConsumerThread.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/DBTaskConsumerThread.java @@ -32,7 +32,8 @@ public class DBTaskConsumerThread extends QueueConsumerThread { } @Override - public void heartbeat() { + public void loop() { } + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java index f6df6f3..c9bc8cd 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java @@ -1,19 +1,19 @@ package com.paradogs.common.core.netty.queue; import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.netty.codec.ServerCodec; +import com.paradogs.common.core.message.MsgMapping; +import com.paradogs.common.core.message.MsgTargetResolver; +import com.paradogs.common.core.netty.events.MainLoopEvent; +import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.MsgUtils; import com.paradogs.common.core.utils.SpringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.concurrent.BlockingQueue; import java.util.stream.Stream; /** @@ -26,6 +26,9 @@ import java.util.stream.Stream; @Scope("prototype") public class MainMsgConsumerThread extends QueueConsumerThread { + @Autowired + private MsgTargetResolver msgTargetResolver; + /** * 消息处理 * @param msg @@ -35,12 +38,9 @@ public class MainMsgConsumerThread extends QueueConsumerThread { @Override public void handle(BaseMsg msg) throws InvocationTargetException, IllegalAccessException { - if (!MsgUtils.containsKey(msg.getMsgHeader().getCmd())) { - log.error("cmd [{}] not found", msg.getMsgHeader().getCmd()); - return; - } + MsgMapping msgMapping = msgTargetResolver.getMsgMapping(msg.getMsgHeader().getRoute()); - Method method = MsgUtils.getMsgMethod(msg.getMsgHeader().getCmd()); + Method method = msgMapping.getMethod(); Object pdgController = SpringUtils.getBean(method.getDeclaringClass()); if (pdgController == null) { @@ -53,16 +53,17 @@ public class MainMsgConsumerThread extends QueueConsumerThread { method.invoke( pdgController, Stream.of(method.getParameterTypes()) - .map(type -> BaseMsg.class.isAssignableFrom(type) ? msg : null) + .map(type -> msg.getClass().isAssignableFrom(type) ? msg : null) .toArray() ); } - @Override - public void heartbeat() { + private MainLoopEvent mainLoopEvent = new MainLoopEvent(); + @Override + public void loop() { + EventUtils.publishEvent(mainLoopEvent); } - } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConfiguration.java index 609cb5f..39335a7 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConfiguration.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConfiguration.java @@ -33,8 +33,6 @@ public class QueueConfiguration { public QueueManager queueManager(QueueProperties queueProperties) { QueueManager queueManager = new QueueManager(); queueManager.setQueueProperties(queueProperties); - // 初始化消息处理队列 - queueManager.init(); return queueManager; } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java index 81e1897..9f14dbd 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java @@ -1,6 +1,9 @@ package com.paradogs.common.core.netty.queue; import com.paradogs.common.core.exceptions.base.GlobalExceptionDispatch; +import com.paradogs.common.core.netty.events.MainLoopEvent; +import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.SpringUtils; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -64,19 +67,19 @@ public abstract class QueueConsumerThread extends Thread { public abstract void handle(T msg) throws InvocationTargetException, IllegalAccessException; /** - * 空闲时间校验 - * 待优化:可以用发起事件 + * 循环检测 */ - public abstract void heartbeat(); + public abstract void loop(); @Override - public void run() { + public final void run() { - log.debug("[{}] queueConsumerThread start success", getKey()); + log.info("[{}] queueConsumerThread start success", getKey()); while (true) { - heartbeat(); + // 循环检测事件 + loop(); T msg = queue.poll(); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java index bb1d8ce..faec5e9 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java @@ -6,11 +6,13 @@ import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; import java.util.*; import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; /** * @author: yumi @@ -19,15 +21,12 @@ import java.util.concurrent.LinkedBlockingQueue; */ @Slf4j @Component -public class QueueManager { +public class QueueManager implements ApplicationListener { @Setter @Autowired private QueueProperties queueProperties; - @Value("${paradogs.server.type:server}") - private String serverType; - /** * 队列集合 * 待优化:有一些业务不需要保证顺序性,可以创建一个队列由多个消费者消费,不需要一对一,提高效率 @@ -60,6 +59,15 @@ public class QueueManager { } } + /** + * Spring 加载好后初始化 + * @param event + */ + @Override + public void onApplicationEvent(ContextRefreshedEvent event) { + this.init(); + } + public enum QueueType { /** diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java index 88c9569..c869fe0 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java @@ -4,9 +4,14 @@ import com.paradogs.common.core.annoations.PdgMsg; import com.paradogs.common.core.annoations.PdgMsgMapping; import com.paradogs.common.core.message.BaseMsg; import com.paradogs.common.core.message.MsgMapping; +import com.paradogs.common.core.message.MsgTargetResolver; +import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; +import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @@ -22,57 +27,63 @@ import java.util.TreeMap; */ @Slf4j @Component -public class MsgUtils implements BeanPostProcessor { +public class MsgUtils { - /** - * 消息 cmd - 消息类型 - */ - private static Map msgMappingMap = new TreeMap<>(); +// /** +// * 消息 cmd - 消息类型 +// */ +// private static Map msgMappingByCmdMap = new TreeMap<>(); +// +// private static Map msgMappingByRouteMap = new TreeMap<>(); +// @Value("${paradogs.server.cmd:false}") +// private Boolean cmd; - /** - * 加载映射和消息 cmd,Bean 注册完成后执行 - * @param bean - * @param beanName - * @return - * @throws BeansException - */ - @Override - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - Class beanClass = bean.getClass(); - Method[] methods = beanClass.getDeclaredMethods(); - for (Method method : methods) { - if (!method.isAnnotationPresent(PdgMsgMapping.class)) { - continue; - } - PdgMsgMapping pdgMsgMapping = method.getAnnotation(PdgMsgMapping.class); - PdgMsg pdgMsg = pdgMsgMapping.value().getDeclaredAnnotation(PdgMsg.class); - if (pdgMsg == null) { - log.error("@PdgMsgMapping class [{}] no has @PdgMsg", pdgMsgMapping.value()); - throw new RuntimeException("@PdgMsgMapping class [{" + pdgMsgMapping.value() + "}] no has @PdgMsg"); - } - if (msgMappingMap.get(pdgMsg.value()) != null) { - log.error("cmd [{}] already exists", pdgMsgMapping.value()); - throw new RuntimeException("cmd [" + pdgMsgMapping.value() + "] already exists"); - } - msgMappingMap.put(pdgMsg.value(), new MsgMapping(pdgMsgMapping.value(), method)); - } - - return bean; - } - - public static boolean containsKey(int cmd) { - return msgMappingMap.containsKey(cmd); - } - - public static Class getMsgClass(int cmd) { - return Optional.ofNullable(msgMappingMap.get(cmd)).map(MsgMapping::getMsgClass).orElse(null); - } - - public static Method getMsgMethod(int cmd) { - return Optional.ofNullable(msgMappingMap.get(cmd)).map(MsgMapping::getMethod).orElse(null); - } +// /** +// * 加载映射和消息 cmd,Bean 注册完成后执行 +// * @param bean +// * @param beanName +// * @return +// * @throws BeansException +// */ +// @Override +// public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { +// Class beanClass = bean.getClass(); +// Method[] methods = beanClass.getDeclaredMethods(); +// for (Method method : methods) { +// if (!method.isAnnotationPresent(PdgMsgMapping.class)) { +// continue; +// } +// +// PdgMsgMapping pdgMsgMapping = method.getAnnotation(PdgMsgMapping.class); +// PdgMsg pdgMsg = pdgMsgMapping.value().getDeclaredAnnotation(PdgMsg.class); +// +// if (pdgMsg == null) { +// log.error("@PdgMsgMapping class [{}] no has @PdgMsg", pdgMsgMapping.value()); +// throw new RuntimeException("@PdgMsgMapping class [{" + pdgMsgMapping.value() + "}] no has @PdgMsg"); +// } +// if (msgMappingByCmdMap.get(pdgMsg.value()) != null) { +// log.error("cmd [{}] already exists", pdgMsgMapping.value()); +// throw new RuntimeException("cmd [" + pdgMsgMapping.value() + "] already exists"); +// } +// msgMappingByCmdMap.put(pdgMsg.value(), new MsgMapping(pdgMsgMapping.value(), method)); +// } +// +// return bean; +// } +// +// public static boolean containsKey(int cmd) { +// return msgMappingMap.containsKey(cmd); +// } +// +// public static Class getMsgClass(int cmd) { +// return Optional.ofNullable(msgMappingMap.get(cmd)).map(MsgMapping::getMsgClass).orElse(null); +// } +// +// public static Method getMsgMethod(int cmd) { +// return Optional.ofNullable(msgMappingMap.get(cmd)).map(MsgMapping::getMethod).orElse(null); +// } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java index 7cbf045..56e4ff9 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java @@ -1,16 +1,21 @@ package com.paradogs.common.core.utils; +import com.paradogs.common.core.annoations.PdgLoop; import org.springframework.aop.framework.AopContext; import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.cache.annotation.Cacheable; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.stereotype.Component; import java.lang.annotation.Annotation; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; import java.util.Map; /** @@ -59,15 +64,37 @@ public final class SpringUtils implements BeanFactoryPostProcessor return result; } + public static Map getBeans(Class clz) throws BeansException + { + return beanFactory.getBeansOfType(clz); + } + public static Map getBeansWithAnnotation(Class clz) { return beanFactory.getBeansWithAnnotation(clz); } - public static Map getBeans(Class clz) throws BeansException + /** + * 待优化:缓存 + */ + public static List getMethodsWithAnnotation(Class clz) { + List loopMethod = new ArrayList<>(); + for (Object bean : SpringUtils.getAllBeans().values()) { + for (Method method : bean.getClass().getDeclaredMethods()) { + if (method.isAnnotationPresent(clz)) { + loopMethod.add(method); + } + } + } + return loopMethod; + } + + public static Map getAllBeans() throws BeansException { - return beanFactory.getBeansOfType(clz); + return beanFactory.getBeansOfType(Object.class); } + + /** * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true * diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java index 393af0a..aff4e75 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java @@ -1,13 +1,12 @@ package com.paradogs.common.core.utils; -import static org.apache.logging.log4j.util.Strings.isBlank; /** * @author: yumi * @date: 2023/2/17 0:25 * @Description: TODO */ -public class StringUtils extends org.springframework.util.StringUtils { +public class StringUtils extends org.apache.commons.lang.StringUtils { public static String firstChar2UpperCase(String str) { if (isBlank(str)) {return "";} diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 7f35883..60ac8a4 100644 --- a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -3,11 +3,13 @@ com.paradogs.common.core.utils.EventUtils com.paradogs.common.core.utils.MsgUtils com.paradogs.common.core.events.listener.PdgEventListener +com.paradogs.common.core.message.RouteMsgTargetResolver +com.paradogs.common.core.message.CommonController + com.paradogs.common.core.netty.codec.CodecConfiguration com.paradogs.common.core.netty.queue.QueueConfiguration -com.paradogs.common.core.netty.misc.ChannelInitializer com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper com.paradogs.common.core.netty.pipelines.MsgHandler diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java index 70332d4..58f7eb3 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java @@ -1,5 +1,6 @@ package com.paradogs.common.server; +import com.paradogs.common.core.message.BaseMsg; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.SpringUtils; import com.paradogs.common.server.events.ServerStartEvent; @@ -9,58 +10,86 @@ import io.netty.channel.ChannelInitializer; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; import lombok.Data; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; + /** * @author: yumi * @date: 2023-02-24 14:34 * @Description: TODO */ @Slf4j -@Data -@Component public class Server { @Autowired - private ServerProperties serverConfig; - - @Autowired - private ChannelInitializer channelInitializer; + private ServerProperties properties; private ServerBootstrap server; + private NioEventLoopGroup boss; + private NioEventLoopGroup worker; + + @Getter + private Channel channel; + + public Server(ServerProperties serverProperties) { + this.properties = serverProperties; + } + /** * 启动 netty 服务器 */ - @Async public void start() { - NioEventLoopGroup boss = new NioEventLoopGroup(); - NioEventLoopGroup worker = new NioEventLoopGroup(); + boss = new NioEventLoopGroup(); + worker = new NioEventLoopGroup(); try { long startTime = System.currentTimeMillis(); this.server = new ServerBootstrap() .group(boss, worker) .channel(NioServerSocketChannel.class) - .childHandler(channelInitializer); + .childHandler(SpringUtils.getBean(ChannelInitializer.class)); - Channel channel = this.server.bind(serverConfig.getPort()).sync().channel(); - log.info("[{} localhost:{}] start success", serverConfig.getName(), serverConfig.getPort()); + this.channel = this.server.bind(properties.getPort()).sync().channel(); + log.info("[{} localhost:{}] start success", properties.getName(), properties.getPort()); EventUtils.publishEvent(new ServerStartEvent(System.currentTimeMillis() - startTime)); - channel.closeFuture().sync(); - + channel.closeFuture().addListener(future -> { + log.info("[{}] server stop", this.properties.getName()); + }); + } catch (InterruptedException e) { - log.error("server error:[{}]", e.getMessage()); - } finally { - // 关闭服务器资源 - boss.shutdownGracefully(); - worker.shutdownGracefully(); - log.info("[{}] 服务器停止", this.getClass().getSimpleName()); + log.error("server error:[{}]", e.getMessage(), e); + this.closeSync(); + } + + } + + /** + * 同步关闭连接 + * ***ps: 关闭后进度未结束是因为消息处理队列还开着未关闭 + * @return + */ + public boolean closeSync() { + try { + if (this.channel.isOpen()) { + channel.close().sync(); + } + if (!worker.isShutdown()) { + worker.shutdownGracefully(); + } + + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; } } diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerChannelInitializer.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerChannelInitializer.java new file mode 100644 index 0000000..7568f00 --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerChannelInitializer.java @@ -0,0 +1,41 @@ +package com.paradogs.common.server; + +import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; +import com.paradogs.common.core.netty.pipelines.MsgHandler; +import com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper; +import com.paradogs.common.core.netty.protocol.ProtocolProperties; +import com.paradogs.common.core.utils.SpringUtils; +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelPipeline; +import io.netty.channel.socket.nio.NioSocketChannel; +import io.netty.handler.codec.ByteToMessageCodec; +import io.netty.handler.codec.LengthFieldBasedFrameDecoder; +import io.netty.handler.codec.LengthFieldPrepender; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/2/18 13:14 + * @Description: TODO + */ +@Slf4j +@Component +@ChannelHandler.Sharable +public class ServerChannelInitializer extends BaseChannelInitializer { + + @Override + protected void initPipeline2(ChannelPipeline pipeline) { +// pipeline.addLast() + } + + @Override + protected void initAfter(NioSocketChannel channel) { + log.info("[{}:{}] open a new connection", channel.remoteAddress().getAddress(), channel.remoteAddress().getPort()); + } + +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java index 7f3873c..66bce2a 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java @@ -1,5 +1,7 @@ package com.paradogs.common.server; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.message.CGTestMsg; import com.paradogs.common.core.netty.queue.QueueManager; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -15,21 +17,20 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component -@EnableAsync public class ServerLauncher implements ApplicationRunner { - @Autowired - private QueueManager queueManager; + private Server server; @Autowired - private Server paradogsServer; + private ServerProperties serverProperties; @Override public void run(ApplicationArguments args) throws Exception { - /** * 启动服务器 */ - paradogsServer.start(); + this.server = new Server(serverProperties); + this.server.start(); + } } diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java index 24c6656..c2bf4d3 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java @@ -3,6 +3,7 @@ package com.paradogs.common.server; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @@ -22,12 +23,15 @@ public class ServerProperties { /** * 端口 */ + @Value("${paradogs.server.port:80}") private int port; /** * 服务类型,相同服务类型相同 + * @value 用于未配置时报错 */ - private String key; + @Value("${paradogs.server.type}") + private String type; /** * 服务名称 @@ -38,7 +42,7 @@ public class ServerProperties { if (StringUtils.isNotBlank(this.name)) { return this.name; } - return this.name = key + "-" + UUID.randomUUID().toString().replace("-", ""); + return this.name = type + "-" + UUID.randomUUID().toString().replace("-", ""); } } diff --git a/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index bbffe78..2fa360c 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,5 +1,6 @@ com.paradogs.common.server.Server com.paradogs.common.server.ServerProperties com.paradogs.common.server.ServerLauncher +com.paradogs.common.server.ServerChannelInitializer diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java index 8cba767..c924e47 100644 --- a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java @@ -1,12 +1,12 @@ package com.paradogs.test.client; +import com.paradogs.common.client.ClientLauncher; import com.paradogs.common.core.message.CGTestMsg; -import com.paradogs.common.core.netty.misc.ChannelInitializer; +import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; import com.paradogs.common.core.utils.SpringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; /** * @author: yumi @@ -18,19 +18,18 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; public class TestClientApplication { public static void main(String[] args) { SpringApplication.run(TestClientApplication.class, args); - System.out.println("client test"); - while (SpringUtils.getBean(ChannelInitializer.class).channeltest == null); - - int i = 1; + int i = 0; long start = System.currentTimeMillis(); int startI = i; - while (true) { + while (i < 10) { try { - CGTestMsg cgTestMsg = new CGTestMsg("hel yumi >> " + i++); - SpringUtils.getBean(ChannelInitializer.class).channeltest.writeAndFlush(cgTestMsg); + CGTestMsg cgTestMsg = new CGTestMsg("hel yumi >> " + ++i); + log.info("send: {}", cgTestMsg); + ClientLauncher clientLauncher = SpringUtils.getBean(ClientLauncher.class); + clientLauncher.getClients().get(0).getChannel().writeAndFlush(cgTestMsg); // System.out.println("send " + cgTestMsg); - Thread.sleep(1); + Thread.sleep(100); if (System.currentTimeMillis() - start > 1000) { log.info("每秒发送消息 {} 个,共发送 {} 个", i - startI, i); startI = i; @@ -41,6 +40,8 @@ public class TestClientApplication { } } + ClientLauncher clientLauncher = SpringUtils.getBean(ClientLauncher.class); + clientLauncher.closeAll(); } } diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ClientMisc.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ClientMisc.java new file mode 100644 index 0000000..4b5520b --- /dev/null +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ClientMisc.java @@ -0,0 +1,22 @@ +package com.paradogs.test.client.demo; + +import com.paradogs.common.client.events.ClientStartEvent; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/7 11:45 + * @Description: TODO + */ +@Slf4j +@Component +public class ClientMisc { + + @EventListener(ClientStartEvent.class) + public void clientStart() { + + } + +} diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/misc/TestProto.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/misc/TestProto.java deleted file mode 100644 index 6271906..0000000 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/misc/TestProto.java +++ /dev/null @@ -1,75 +0,0 @@ -//package com.paradogs.test.misc; -// -//import com.baidu.bjf.remoting.protobuf.Codec; -//import com.baidu.bjf.remoting.protobuf.FieldType; -//import com.baidu.bjf.remoting.protobuf.ProtobufProxy; -//import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; -//import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; -//import com.google.protobuf.InvalidProtocolBufferException; -//import com.paradogs.common.core.message.IMsgSerializable; -//import com.paradogs.common.core.message.MsgHeader; -//import com.paradogs.common.core.utils.BeanUtils; -//import io.netty.buffer.ByteBuf; -//import lombok.Data; -// -//import java.io.IOException; -// -///** -// * @author: yumi -// * @date: 2023/8/1 13:39 -// * @Description: TODO -// */ -//@Data -//@ProtobufClass -//public class TestProto implements IMsgSerializable { -// -// -// /** -// * 消息唯一 ID,用于请求 - 响应 -// */ -// @Protobuf(fieldType = FieldType.STRING, order = 1, required = false) -// private String id; -// -// /** -// * 消息类型,替代路由地址(java 使用类型对应,nodejs 可以使用字符串对应方法) -// * 待优化,路由转 cmd api -// */ -// @Protobuf(fieldType = FieldType.INT32, order = 2, required = false) -// private int cmd; -//// private String route; -// -// /** -// * 玩家 ID -// */ -// @Protobuf(fieldType = FieldType.INT64, order = 3, required = false) -// private Long playerId; -// -// /** -// * 消息生成的时间戳 -// */ -// @Protobuf(fieldType = FieldType.INT64, order = 4, required = false) -// private Long timestamp; -// -// -// -// /** -// * 序列化(编码) -// * @param out -// */ -// @Override -// public void serialization(ByteBuf out) { -// -// -// } -// -// /** -// * 反序列化(解码) -// * @param in -// * @throws InvalidProtocolBufferException -// */ -// @Override -// public void deserialization(ByteBuf in) { -// -// -// } -//} diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java index 1dc5ad1..14ed94e 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java @@ -1,10 +1,5 @@ package com.paradogs.test.server; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.netty.codec.ConnectorCodec; -import com.paradogs.common.core.netty.codec.ServerCodec; -import com.paradogs.common.core.utils.SpringUtils; -import io.netty.handler.codec.ByteToMessageCodec; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -17,7 +12,5 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class TestServerApplication { public static void main(String[] args) { SpringApplication.run(TestServerApplication.class, args); - - ByteToMessageCodec bean = SpringUtils.getBean(ConnectorCodec.class); } } diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java index 5849e50..b175e8f 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java @@ -1,5 +1,6 @@ package com.paradogs.test.server.controller; +import com.paradogs.common.core.annoations.PdgMsg; import com.paradogs.common.core.annoations.PdgMsgMapping; import com.paradogs.common.core.message.CGTestMsg; import lombok.extern.slf4j.Slf4j; @@ -12,11 +13,12 @@ import org.springframework.stereotype.Controller; */ @Slf4j @Controller +@PdgMsgMapping("test") public class TestController { - @PdgMsgMapping(CGTestMsg.class) - public void test1(CGTestMsg msg) { - log.info(msg.toString()); + @PdgMsgMapping("test1") + public void test1(@PdgMsg CGTestMsg msg) { + log.info("receive >> {}", msg); // throw new SerializationException(); } diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java index 11b8107..bb57783 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java @@ -16,7 +16,7 @@ public class GobalExceptionHandler { @PdgExceptionHandler(Exception.class) public void handleException(Exception e) { - log.info("yumi !!"); + log.info("{}", e); } // @PdgExceptionHandler(SerializationException.class) diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/misc/LoopTest.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/misc/LoopTest.java new file mode 100644 index 0000000..dc6f068 --- /dev/null +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/misc/LoopTest.java @@ -0,0 +1,34 @@ +//package com.paradogs.test.server.misc; +// +//import com.paradogs.common.core.annoations.PdgLoop; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.stereotype.Component; +// +///** +// * @author: yumi +// * @date: 2023/8/4 10:26 +// * @Description: TODO +// */ +//@Slf4j +//@Component +//public class LoopTest { +// +// @PdgLoop +// public void loopTest1() throws InterruptedException { +// log.info("loop >> 1 begin"); +// Thread.sleep(1000); +// } +// +// @PdgLoop +// public void loopTest2() throws InterruptedException { +// log.info("loop >> 2 begin"); +// Thread.sleep(2000); +// } +// +// @PdgLoop +// public void loopTest3() throws InterruptedException { +// log.info("loop >> 3 begin"); +// Thread.sleep(3000); +// } +// +//} diff --git a/paradogs-test/paradogs-test-server/src/main/resources/application.yml b/paradogs-test/paradogs-test-server/src/main/resources/application.yml index d6cd62e..7de2e8d 100644 --- a/paradogs-test/paradogs-test-server/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-server/src/main/resources/application.yml @@ -1,6 +1,8 @@ paradogs: server: port: 8001 + type: test + name: test-1 connector: false queue: main-size: 1 \ No newline at end of file -- Gitee From 3090c0a0578e238a6009da5a1026b7b67faede6a Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Tue, 8 Aug 2023 11:21:12 +0800 Subject: [PATCH 06/32] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=BD=91=E5=85=B3?= =?UTF-8?q?=E8=BD=AC=E5=8F=91=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/paradogs/common/client/Client.java | 8 +- .../client/ClientChannelInitializer.java | 5 - .../common/client/ClientLauncher.java | 29 ++++-- .../common/client/ClientProperties.java | 47 ++++++---- .../pom.xml | 18 ++-- .../common/connector/ConnectorMsgHandler.java | 48 ++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 2 + .../src/resources/config/application.yml | 3 + .../base/GlobalExceptionDispatch.java | 8 +- .../common/core/message/ByteBodyMsg.java | 2 + .../common/core/message/MsgHeader.java | 9 ++ .../common/core/netty/codec/ServerCodec.java | 18 ++-- .../initializer/BaseChannelInitializer.java | 5 +- .../core/netty/pipelines/BaseMsgHandler.java | 81 ++++++++++++++++ .../core/netty/pipelines/MsgHandler.java | 38 -------- .../netty/pipelines/ServerMsgHandler.java | 18 ++++ .../netty/queue/MainMsgConsumerThread.java | 2 +- .../core/netty/queue/QueueConsumerThread.java | 3 - .../common/core/netty/queue/QueueManager.java | 6 ++ .../core/netty/queue/QueueProperties.java | 5 + .../paradogs/common/core/utils/MsgUtils.java | 8 ++ ...ot.autoconfigure.AutoConfiguration.imports | 2 +- .../com/paradogs/common/server/Server.java | 2 +- .../server/ServerChannelInitializer.java | 11 --- paradogs-common/pom.xml | 1 + .../src/main/resources/application.yml | 6 -- .../game/handler/base/GameMessageHandler.java | 2 - .../com/paradogs/gate/client/ClientCfg.java | 21 ----- .../paradogs/gate/client/ClientManager.java | 49 ---------- .../client/GateClientChannelInitializer.java | 51 ---------- .../paradogs/gate/config/ClientConfig.java | 21 ----- .../gate/handler/GateMessageHandler.java | 83 ----------------- .../com/paradogs/gate/misc/GateCodec.java | 42 --------- .../com/paradogs/gate/misc/GateMessage.java | 42 --------- .../paradogs/gate/misc/GateRepository.java | 92 ------------------- .../com/paradogs/gate/misc/ServiceServer.java | 67 -------------- .../gate/server/GateChannelDuplexHandler.java | 24 ----- .../com/paradogs/gate/server/GateServer.java | 58 ------------ .../server/GateServerChannelInitializer.java | 50 ---------- .../paradogs/gate/server/ServerRunner.java | 42 --------- .../src/main/resources/application.yml | 30 ------ paradogs-gate/target/classes/application.yml | 30 ------ .../test/client/TestClientApplication.java | 10 +- .../src/main/resources/application.yml | 7 +- .../paradogs-test-connector}/pom.xml | 14 ++- .../connector/TestConnectorApplication.java | 15 +-- .../src/main/resources/application.yml | 11 +++ paradogs-test/pom.xml | 1 + pom.xml | 8 +- 49 files changed, 314 insertions(+), 841 deletions(-) rename {paradogs-gate => paradogs-common/paradogs-common-connector-starter}/pom.xml (58%) create mode 100644 paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java create mode 100644 paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 paradogs-common/paradogs-common-connector-starter/src/resources/config/application.yml create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/BaseMsgHandler.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHandler.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java delete mode 100644 paradogs-connector/src/main/resources/application.yml delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/client/ClientCfg.java delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/client/ClientManager.java delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/client/GateClientChannelInitializer.java delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/config/ClientConfig.java delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/handler/GateMessageHandler.java delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/misc/GateCodec.java delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/misc/GateMessage.java delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/misc/GateRepository.java delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/misc/ServiceServer.java delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/server/GateChannelDuplexHandler.java delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/server/GateServer.java delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/server/GateServerChannelInitializer.java delete mode 100644 paradogs-gate/src/main/java/com/paradogs/gate/server/ServerRunner.java delete mode 100644 paradogs-gate/src/main/resources/application.yml delete mode 100644 paradogs-gate/target/classes/application.yml rename {paradogs-connector => paradogs-test/paradogs-test-connector}/pom.xml (61%) rename paradogs-gate/src/main/java/com/paradogs/gate/GateApplication.java => paradogs-test/paradogs-test-connector/src/main/java/com/paradogs/test/connector/TestConnectorApplication.java (38%) create mode 100644 paradogs-test/paradogs-test-connector/src/main/resources/application.yml diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java index 7629ceb..d81cde8 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java @@ -36,10 +36,10 @@ public class Client { private NioEventLoopGroup worker; - private ClientProperties properties; + private ClientProperties.ClientConfig properties; - public Client(ClientProperties clientProperties) { - this.properties = clientProperties; + public Client(ClientProperties.ClientConfig clientConfig) { + this.properties = clientConfig; } /** @@ -54,7 +54,7 @@ public class Client { this.client = new Bootstrap() .group(worker) .channel(NioSocketChannel.class) - .handler(SpringUtils.getBean(ChannelInitializer.class)); + .handler(SpringUtils.getBean(ClientChannelInitializer.class)); this.channel = client.connect(properties.getHost(), properties.getPort()).sync().channel(); diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientChannelInitializer.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientChannelInitializer.java index 3996f41..529a81a 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientChannelInitializer.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientChannelInitializer.java @@ -1,15 +1,10 @@ package com.paradogs.common.client; import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; -import com.paradogs.common.core.netty.pipelines.MsgHandler; -import com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper; -import com.paradogs.common.core.netty.protocol.ProtocolProperties; import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.nio.NioSocketChannel; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java index 36a7cde..0b7e800 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java @@ -10,7 +10,9 @@ import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author: yumi @@ -25,22 +27,33 @@ public class ClientLauncher implements ApplicationRunner { @Autowired private ClientProperties clientProperties; - private List clients = new ArrayList<>(); + private Map> clientMap = new HashMap<>(); @Override - public void run(ApplicationArguments args) throws Exception { - clients.add( new Client(clientProperties)); - for (Client client : clients) { - client.start(); + public void run(ApplicationArguments args) { + for (ClientProperties.ClientConfig clientConfig : clientProperties.getClients()) { + if (clientMap.get(clientConfig.getServer()) == null) { + clientMap.put(clientConfig.getServer(), new HashMap<>()); + } + clientMap.get(clientConfig.getServer()).put(clientConfig.getName(), new Client(clientConfig)); } + for (Map clientTypeList : clientMap.values()) { + for (Client client : clientTypeList.values()) { + client.start(); + } + } + + + } public void closeAll() { - for (Client client : clients) { - client.closeSync(); + for (Map clientTypeList : clientMap.values()) { + for (Client client : clientTypeList.values()) { + client.closeSync(); + } } - } } diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java index 2bbaa8d..c689fd2 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java @@ -5,6 +5,8 @@ import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; +import java.util.List; + /** * @author: yumi * @date: 2023/7/31 22:39 @@ -12,29 +14,40 @@ import org.springframework.stereotype.Component; */ @Data @Component -@ConfigurationProperties("paradogs.client") +@ConfigurationProperties("paradogs") public class ClientProperties { - /** - * 主机 ip - */ - private String host; + private List clients; + + @Data + @Component + public static class ClientConfig { + /** + * 主机 ip + */ + private String host; + + /** + * 端口号 + */ + private int port; - /** - * 端口号 - */ - private int port; + /** + * 服务标识类型 + */ + private String server; - /** - * 连接名 - */ - private String name; + /** + * 服务名称 + */ + private String name; - public String getName() { - if (StringUtils.isBlank(this.name)) { - this.name = "Client"; + public String getName() { + if (StringUtils.isBlank(this.name)) { + this.name = "Client"; + } + return name; } - return name; } } diff --git a/paradogs-gate/pom.xml b/paradogs-common/paradogs-common-connector-starter/pom.xml similarity index 58% rename from paradogs-gate/pom.xml rename to paradogs-common/paradogs-common-connector-starter/pom.xml index f83a53e..c035757 100644 --- a/paradogs-gate/pom.xml +++ b/paradogs-common/paradogs-common-connector-starter/pom.xml @@ -3,26 +3,28 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - paradogs + paradogs-common com.paradogs - 0.0.1-SNAPSHOT + 0.0.1 4.0.0 - paradogs-gate + paradogs-common-connector-starter - + + 8 + 8 + + com.paradogs - paradogs-common + paradogs-common-server-starter - com.paradogs - paradogs-game + paradogs-common-client-starter - \ No newline at end of file diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java new file mode 100644 index 0000000..b391027 --- /dev/null +++ b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java @@ -0,0 +1,48 @@ +package com.paradogs.common.connector; + +import com.paradogs.common.client.Client; +import com.paradogs.common.client.ClientLauncher; +import com.paradogs.common.core.message.ByteBodyMsg; +import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; +import com.paradogs.common.core.netty.queue.QueueManager; +import io.netty.channel.ChannelHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; +import java.util.Random; + +/** + * @author: yumi + * @date: 2023/8/8 8:56 + * @Description: TODO + */ +@Slf4j +@Component +@ChannelHandler.Sharable +public class ConnectorMsgHandler extends BaseMsgHandler { + + @Autowired + private ClientLauncher clientLauncher; + + private Random random = new Random(); + + @Override + protected void processWithoutQueue(ByteBodyMsg msg) throws Exception { + // 转发消息到指定服务 + String route = msg.getMsgHeader().getServerWithRoute(); + Map clientMap = clientLauncher.getClientMap().get(route); + + Client client = clientMap.values() + .stream() + .skip(random.nextInt(clientMap.size())) + .findFirst() + .orElse(null); + + client.getChannel().writeAndFlush(msg); + log.info("reward test success >>> {}", msg); + + } +} diff --git a/paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..8d743b0 --- /dev/null +++ b/paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +com.paradogs.common.connector.ConnectorMsgHandler + diff --git a/paradogs-common/paradogs-common-connector-starter/src/resources/config/application.yml b/paradogs-common/paradogs-common-connector-starter/src/resources/config/application.yml new file mode 100644 index 0000000..475adb4 --- /dev/null +++ b/paradogs-common/paradogs-common-connector-starter/src/resources/config/application.yml @@ -0,0 +1,3 @@ +paradogs: + queue: + enable: false \ No newline at end of file diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java index d77d8f6..9687e68 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java @@ -53,17 +53,19 @@ public class GlobalExceptionDispatch { if (throwable == null) {return;} + Throwable realThrowable = throwable.getCause() != null ? throwable.getCause() : throwable; + // 这里的异常时 InvocationTargetException 反射异常,转换成真正的异常 - Method method = exceptionHandlerMap.get(throwable.getCause() != null ? throwable.getCause().getClass() : throwable.getClass()); + Method method = exceptionHandlerMap.get(realThrowable.getClass()); if (method == null && (method = exceptionHandlerMap.get(Exception.class)) == null) { - throwable.getCause().printStackTrace(); + realThrowable.printStackTrace(); return; } try { method.invoke( SpringUtils.getBean(method.getDeclaringClass()), Stream.of(method.getParameterTypes()) - .map(type -> Exception.class.isAssignableFrom(type) ? throwable : null) + .map(type -> Exception.class.isAssignableFrom(type) ? realThrowable : null) .toArray() ); } catch (Exception e) { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/ByteBodyMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/ByteBodyMsg.java index 6b6fbbb..d8cb46f 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/ByteBodyMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/ByteBodyMsg.java @@ -3,6 +3,7 @@ package com.paradogs.common.core.message; import com.paradogs.common.core.utils.BeanUtils; import com.paradogs.common.core.utils.ProtoUtils; import io.netty.buffer.ByteBuf; +import lombok.Data; import java.io.IOException; @@ -11,6 +12,7 @@ import java.io.IOException; * @date: 2023/8/7 9:52 * @Description: TODO */ +@Data public class ByteBodyMsg extends BaseMsg { private byte[] dataBytes; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java index b25044d..ccd144c 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java @@ -64,6 +64,7 @@ public class MsgHeader implements IMsgSerializable { public MsgHeader() { // + this.playerId = 1L; this.timestamp = new Date().getTime(); } @@ -92,4 +93,12 @@ public class MsgHeader implements IMsgSerializable { BeanUtils.copyProperties(msgHeader, this); } + public String getServerWithRoute() { + return this.route.substring(0, this.route.indexOf("-")); + } + + public String getRouteMethod() { + return this.route.substring(this.route.indexOf("-") + 1); + } + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java index 5b3c2bb..a063cbd 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java @@ -43,15 +43,17 @@ public class ServerCodec extends ByteToMessageCodec { msgHeader.deserialization(in); // 获取消息实际类型 - MsgMapping msgMapping = SpringUtils.getBean(MsgTargetResolver.class).getMsgMapping(msgHeader.getRoute()); - if (msgMapping == null) { - // 这里 log 的次数可能会比实际消息数量少 - log.error("route not found: [{}], readableBytes: [{}]", msgHeader.getRoute(), in.readableBytes()); - in.clear(); - return; - } + MsgMapping msgMapping = SpringUtils.getBean(MsgTargetResolver.class).getMsgMapping(msgHeader.getRouteMethod()); +// if (msgMapping == null) { +// // 这里 log 的次数可能会比实际消息数量少 +// log.error("route not found: [{}], readableBytes: [{}]", msgHeader.getRoute(), in.readableBytes()); +// in.clear(); +// return; +// } - BaseMsg baseMsg = msgMapping.getMsgClass() != null ? msgMapping.getMsgClass().newInstance() : new ByteBodyMsg(); + BaseMsg baseMsg = msgMapping != null && msgMapping.getMsgClass() != null + ? msgMapping.getMsgClass().newInstance() + : new ByteBodyMsg(); baseMsg.deserialization(in); baseMsg.setMsgHeader(msgHeader); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java index 055fa59..fe53840 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java @@ -1,6 +1,6 @@ package com.paradogs.common.core.netty.initializer; -import com.paradogs.common.core.netty.pipelines.MsgHandler; +import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; import com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper; import com.paradogs.common.core.netty.protocol.ProtocolProperties; import com.paradogs.common.core.utils.SpringUtils; @@ -11,7 +11,6 @@ import io.netty.handler.codec.LengthFieldBasedFrameDecoder; import io.netty.handler.codec.LengthFieldPrepender; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; /** * @author: yumi @@ -22,7 +21,7 @@ import org.springframework.stereotype.Component; public abstract class BaseChannelInitializer extends ChannelInitializer { @Autowired - private MsgHandler msgHandler; + private BaseMsgHandler msgHandler; @Autowired private MsgHeaderWrapper msgHeaderWrapper; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/BaseMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/BaseMsgHandler.java new file mode 100644 index 0000000..da2f5f7 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/BaseMsgHandler.java @@ -0,0 +1,81 @@ +package com.paradogs.common.core.netty.pipelines; + +import com.paradogs.common.core.exceptions.base.GlobalExceptionDispatch; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.netty.queue.MainMsgConsumerThread; +import com.paradogs.common.core.netty.queue.QueueManager; +import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.SpringUtils; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +/** + * @author: yumi + * @date: 2023/7/27 9:32 + * @Description: 消息加入到 MAIN 处理队列 + */ +@Slf4j +public abstract class BaseMsgHandler extends SimpleChannelInboundHandler { + + /** + * 队列管理器 + */ + @Getter + private QueueManager queueManager; + + @Getter + private MainMsgConsumerThread handler; + + @Getter + private GlobalExceptionDispatch globalExceptionDispatch; + + /** + * 开启队列时的消息处理 + */ + protected void processWithQueue(T msg) throws InterruptedException { + queueManager.pushMainMsg(msg); + } + + /** + * 未开启队列时的消息处理 + */ + protected void processWithoutQueue(T msg) throws Exception { + handler.handle(msg); + } + + + protected final void channelRead0(ChannelHandlerContext ctx, T msg) { + + try { + if (queueManager == null) { + this.queueManager = SpringUtils.getBean(QueueManager.class); + } + + // 开启消息队列时,消息放入队列等待处理,否则直接处理 + if (queueManager.getQueueProperties().isEnable()) { + processWithQueue(msg); + } else { + if (handler == null) { + handler = SpringUtils.getBean(MainMsgConsumerThread.class); + } + if (globalExceptionDispatch == null) { + globalExceptionDispatch = SpringUtils.getBean(GlobalExceptionDispatch.class); + } + processWithoutQueue(msg); + } + + } catch (Exception e) { + // 转发到全局异常处理 + globalExceptionDispatch.forward(e); + } + } + + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { +// BaseMsg baseMsg = new BaseMsg(); +// log.info("send >> {}", baseMsg); +// MsgUtils.send(ctx.channel(), "_paradogs.dist", baseMsg); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHandler.java deleted file mode 100644 index 9f83889..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHandler.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.paradogs.common.core.netty.pipelines; - -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.netty.queue.QueueManager; -import io.netty.channel.Channel; -import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/7/27 9:32 - * @Description: 消息加入到 MAIN 处理队列 - */ -@Slf4j -@Component -@ChannelHandler.Sharable -public class MsgHandler extends SimpleChannelInboundHandler { - - @Autowired - private QueueManager queueManager; - - @Override - protected void channelRead0(ChannelHandlerContext ctx, BaseMsg msg) throws Exception { - queueManager.pushMainMsg(msg); - } - - @Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - Channel channel = ctx.channel(); - BaseMsg baseMsg = new BaseMsg(); - ctx.writeAndFlush(baseMsg); - log.info("send >> {}", baseMsg); - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java new file mode 100644 index 0000000..3d9ced1 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java @@ -0,0 +1,18 @@ +package com.paradogs.common.core.netty.pipelines; + +import com.paradogs.common.core.message.BaseMsg; +import io.netty.channel.ChannelHandler; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/8 8:58 + * @Description: TODO + */ +@Component +@ConditionalOnMissingBean(BaseMsgHandler.class) +@ChannelHandler.Sharable +public class ServerMsgHandler extends BaseMsgHandler { + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java index c9bc8cd..772c306 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java @@ -38,7 +38,7 @@ public class MainMsgConsumerThread extends QueueConsumerThread { @Override public void handle(BaseMsg msg) throws InvocationTargetException, IllegalAccessException { - MsgMapping msgMapping = msgTargetResolver.getMsgMapping(msg.getMsgHeader().getRoute()); + MsgMapping msgMapping = msgTargetResolver.getMsgMapping(msg.getMsgHeader().getRouteMethod()); Method method = msgMapping.getMethod(); Object pdgController = SpringUtils.getBean(method.getDeclaringClass()); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java index 9f14dbd..39ed398 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java @@ -1,9 +1,6 @@ package com.paradogs.common.core.netty.queue; import com.paradogs.common.core.exceptions.base.GlobalExceptionDispatch; -import com.paradogs.common.core.netty.events.MainLoopEvent; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.SpringUtils; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java index faec5e9..a012fa0 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java @@ -2,6 +2,7 @@ package com.paradogs.common.core.netty.queue; import com.paradogs.common.core.message.BaseMsg; import com.paradogs.common.core.utils.SpringUtils; +import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -23,6 +24,7 @@ import java.util.concurrent.BlockingQueue; @Component public class QueueManager implements ApplicationListener { + @Getter @Setter @Autowired private QueueProperties queueProperties; @@ -65,6 +67,10 @@ public class QueueManager implements ApplicationListener */ @Override public void onApplicationEvent(ContextRefreshedEvent event) { + if (!queueProperties.isEnable()) { + log.info("msg queue handler is disable"); + return; + } this.init(); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java index 5b73e01..03bbd4b 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java @@ -40,4 +40,9 @@ public class QueueProperties { */ private int dbSize = 3; + /** + * 是否开启消息队列处理消息,不开启则 MsgHandler 直接处理 + */ + private boolean enable = true; + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java index c869fe0..155b1d0 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java @@ -3,6 +3,7 @@ package com.paradogs.common.core.utils; import com.paradogs.common.core.annoations.PdgMsg; import com.paradogs.common.core.annoations.PdgMsgMapping; import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.message.MsgHeader; import com.paradogs.common.core.message.MsgMapping; import com.paradogs.common.core.message.MsgTargetResolver; import io.netty.channel.Channel; @@ -29,6 +30,13 @@ import java.util.TreeMap; @Component public class MsgUtils { + public static void send(Channel channel, String route, BaseMsg msg) { + MsgHeader header = new MsgHeader(); + header.setRoute(route); + msg.setMsgHeader(header); + channel.writeAndFlush(msg); + } + // /** // * 消息 cmd - 消息类型 // */ diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 60ac8a4..f84cfee 100644 --- a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -11,7 +11,7 @@ com.paradogs.common.core.netty.codec.CodecConfiguration com.paradogs.common.core.netty.queue.QueueConfiguration com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper -com.paradogs.common.core.netty.pipelines.MsgHandler +com.paradogs.common.core.netty.pipelines.ServerMsgHandler com.paradogs.common.core.netty.protocol.ProtocolProperties diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java index 58f7eb3..f796e2f 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java @@ -55,7 +55,7 @@ public class Server { this.server = new ServerBootstrap() .group(boss, worker) .channel(NioServerSocketChannel.class) - .childHandler(SpringUtils.getBean(ChannelInitializer.class)); + .childHandler(SpringUtils.getBean(ServerChannelInitializer.class)); this.channel = this.server.bind(properties.getPort()).sync().channel(); log.info("[{} localhost:{}] start success", properties.getName(), properties.getPort()); diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerChannelInitializer.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerChannelInitializer.java index 7568f00..caba51a 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerChannelInitializer.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerChannelInitializer.java @@ -1,21 +1,10 @@ package com.paradogs.common.server; import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; -import com.paradogs.common.core.netty.pipelines.MsgHandler; -import com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper; -import com.paradogs.common.core.netty.protocol.ProtocolProperties; -import com.paradogs.common.core.utils.SpringUtils; -import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.ByteToMessageCodec; -import io.netty.handler.codec.LengthFieldBasedFrameDecoder; -import io.netty.handler.codec.LengthFieldPrepender; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; /** diff --git a/paradogs-common/pom.xml b/paradogs-common/pom.xml index d84f050..42a3ac8 100644 --- a/paradogs-common/pom.xml +++ b/paradogs-common/pom.xml @@ -15,6 +15,7 @@ paradogs-common-redis paradogs-common-server-starter paradogs-common-client-starter + paradogs-common-connector-starter diff --git a/paradogs-connector/src/main/resources/application.yml b/paradogs-connector/src/main/resources/application.yml deleted file mode 100644 index 158323b..0000000 --- a/paradogs-connector/src/main/resources/application.yml +++ /dev/null @@ -1,6 +0,0 @@ -paradogs: - server: - port: 8001 - connector: true - queue: - main-size: 1 \ No newline at end of file diff --git a/paradogs-game/src/main/java/com/paradogs/game/handler/base/GameMessageHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/base/GameMessageHandler.java index c481880..04ee969 100644 --- a/paradogs-game/src/main/java/com/paradogs/game/handler/base/GameMessageHandler.java +++ b/paradogs-game/src/main/java/com/paradogs/game/handler/base/GameMessageHandler.java @@ -1,10 +1,8 @@ package com.paradogs.game.handler.base; -import com.paradogs.common.message.BaseMessage; import com.paradogs.game.misc.GameRepository; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/client/ClientCfg.java b/paradogs-gate/src/main/java/com/paradogs/gate/client/ClientCfg.java deleted file mode 100644 index 7f08999..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/client/ClientCfg.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.paradogs.gate.client; - -import lombok.Data; - -/** - * @author: yumi - * @date: 2023/2/25 10:01 - * @Description: TODO - */ -@Data -public class ClientCfg { - - private String service; - - private String name; - - private String host; - - private Integer port; - -} diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/client/ClientManager.java b/paradogs-gate/src/main/java/com/paradogs/gate/client/ClientManager.java deleted file mode 100644 index 02d5642..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/client/ClientManager.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.paradogs.gate.client; - -import com.paradogs.gate.misc.ServiceServer; -import io.netty.bootstrap.Bootstrap; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.nio.NioSocketChannel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.EnableAsync; -import org.springframework.stereotype.Component; - -import java.util.UUID; - -/** - * @author: yumi - * @date: 2023/2/25 10:05 - * @Description: TODO - */ -@Slf4j -@Component -@EnableAsync -public class ClientManager { - - /** - * 网关连接其他服务 - * @param clientCfg - */ - @Async - public void start(ClientCfg clientCfg) { - - NioEventLoopGroup worker = new NioEventLoopGroup(); - Bootstrap client = new Bootstrap() - .group(worker) - .channel(NioSocketChannel.class) - .handler(new GateClientChannelInitializer(clientCfg.getService())); - - ServiceServer serviceServer = new ServiceServer() - .setUId(UUID.randomUUID().toString()) - .setType(ServiceServer.ChannelType.SERVICE) - .setName(clientCfg.getName()) - .setServer(client) - .setClientCfg(clientCfg) - .setWorker(new NioEventLoopGroup()); - - // 连接 - serviceServer.connect(); - - } -} diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/client/GateClientChannelInitializer.java b/paradogs-gate/src/main/java/com/paradogs/gate/client/GateClientChannelInitializer.java deleted file mode 100644 index 3898662..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/client/GateClientChannelInitializer.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.paradogs.gate.client; - -import com.paradogs.gate.handler.GateMessageHandler; -import com.paradogs.gate.misc.GateCodec; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInitializer; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.LengthFieldBasedFrameDecoder; -import io.netty.handler.codec.LengthFieldPrepender; -import lombok.extern.slf4j.Slf4j; - -/** - * @author: yumi - * @date: 2023/2/27 21:20 - * @Description: TODO - */ -@Slf4j -public class GateClientChannelInitializer extends ChannelInitializer { - - private String service; - - public GateClientChannelInitializer(String service) { - this.service = service; - } - - @Override - protected void initChannel(NioSocketChannel channel) throws Exception { - channel.pipeline().addLast(new LengthFieldBasedFrameDecoder(65534, 0, 2, 0, 2)); - channel.pipeline().addLast(new LengthFieldPrepender(2)); - channel.pipeline().addLast(new GateCodec()); - - channel.pipeline().addLast(new GateMessageHandler()); - -// channel.pipeline().addLast(new IdleStateHandler(0,3,0)); -// channel.pipeline().addLast(new GateChannelDuplexHandler()); - -// GameChannel gameChannel = new GameChannel() -// .setUId(UUID.randomUUID().toString()) -// .setType(GameChannel.ChannelType.SERVICE) -// .setChannel(channel); -// GateRepository.channels.add(gameChannel); -// GateRepository.registerServer(this.service, gameChannel); -// log.info("[{}] 建立连接", name); - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - log.error("{}", cause.getMessage()); - log.error("=============================================="); - } -} diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/config/ClientConfig.java b/paradogs-gate/src/main/java/com/paradogs/gate/config/ClientConfig.java deleted file mode 100644 index 7def352..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/config/ClientConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.paradogs.gate.config; - -import com.paradogs.gate.client.ClientCfg; -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * @author: yumi - * @date: 2023/2/25 10:00 - * @Description: TODO - */ -@Component -@ConfigurationProperties(prefix = "netty") -@Data -public class ClientConfig { - - private List clients; -} diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/handler/GateMessageHandler.java b/paradogs-gate/src/main/java/com/paradogs/gate/handler/GateMessageHandler.java deleted file mode 100644 index ccddb0e..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/handler/GateMessageHandler.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.paradogs.gate.handler; - -import com.paradogs.gate.misc.GateMessage; -import com.paradogs.gate.misc.GateRepository; -import com.paradogs.gate.misc.ServiceServer; -import com.paradogs.common.message.CGHeartMsg; -import com.paradogs.common.message.GCHeartMsg; -import com.paradogs.common.message.MsgHeader; -import com.paradogs.common.proto.ProtoMsg; -import com.paradogs.game.message.CGLoginSuccessMsg; -import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/2/25 13:36 - * @Description: TODO - */ -@Slf4j -@ChannelHandler.Sharable -@Component -public class GateMessageHandler extends SimpleChannelInboundHandler { - - @Override - protected void channelRead0(ChannelHandlerContext ctx, GateMessage msg) throws Exception { - MsgHeader header = msg.getMsgHeader(); - log.info("收到 msg [{}]", header); - - if (header.getMsgType().equals(CGHeartMsg.class.getName()) || header.getMsgType().equals(GCHeartMsg.class.getName())) { - log.info("receive heart"); - ctx.channel().writeAndFlush(new GCHeartMsg()); - return; - } - - String simpleName = header.getMsgType().substring(header.getMsgType().lastIndexOf(".") + 1); - if (simpleName.startsWith("CG")) { - - System.out.println(header.getMsgType()); - // 登录成功记录玩家 ID - if (header.getMsgType().equals(CGLoginSuccessMsg.class.getName())) { - ProtoMsg.CGLoginSuccessMsg cgLoginSuccessMsg = ProtoMsg.CGLoginSuccessMsg.parseFrom(msg.getMsgBody()); - GateRepository.getPlayerChannel(header.getChannelId()).setPlayerId(cgLoginSuccessMsg.getPlayerId()); - } - - // 网关设置消息参数 - ServiceServer playerChannel = GateRepository.getPlayerChannel(ctx.channel()); - header.setChannelId(playerChannel.getUId()); - header.setPlayerId(playerChannel.getPlayerId() - ); - - // 转发 - ServiceServer serverServiceServer = GateRepository.getChannel(ctx.channel(), msg.getMsgHeader().getServiceName()); - log.info("使用的服务名称 [{}]", serverServiceServer.getName()); - serverServiceServer.getChannel().writeAndFlush(msg); - ServiceServer serviceServer = GateRepository.getPlayerChannel(ctx.channel()); - log.info("转发 CGmsg [{}] [{}] [{}]", serviceServer.getUId(), serviceServer.getType(), msg.getMsgHeader()); - - } else if (simpleName.startsWith("GC")) { - - // 回复 - ServiceServer serviceServer = GateRepository.getPlayerChannel(msg.getMsgHeader().getChannelId()); - serviceServer.getChannel().writeAndFlush(msg); - log.info("回复 GCmsg [{}] [{}] [{}]", serviceServer.getUId(), serviceServer.getType(), msg.getMsgHeader()); - - } - - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { -// super.exceptionCaught(ctx, cause); - log.error("发生异常 [{}]", cause.getMessage()); -// log.info("Removed {}", ctx.isRemoved()); -// log.info("Active {}", ctx.channel().isActive()); -// log.info("Open {}", ctx.channel().isOpen()); -// log.info("Registered {}", ctx.channel().isRegistered()); - log.info("发起重连..."); - GateRepository.getPlayerChannel(ctx.channel()).connect(); - } -} diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateCodec.java b/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateCodec.java deleted file mode 100644 index 8158395..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateCodec.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.paradogs.gate.misc; - -import com.paradogs.common.message.BaseMessage; -import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.ByteToMessageCodec; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * @author: yumi - * @date: 2023/2/27 20:51 - * @Description: TODO - */ -@Slf4j -@Component -public class GateCodec extends ByteToMessageCodec { - - @Override - protected void encode(ChannelHandlerContext ctx, BaseMessage msg, ByteBuf out) throws Exception { - - msg.getMsgHeader().serialization(out); - - msg.serialization(out); - } - - @Override - protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { - - // 读取请求头 - GateMessage gateMessage = new GateMessage(); - gateMessage.deserialization(in); - - out.add(gateMessage); - - - } - - -} diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateMessage.java b/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateMessage.java deleted file mode 100644 index 4982e68..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateMessage.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.paradogs.gate.misc; - -import com.google.protobuf.InvalidProtocolBufferException; -import com.paradogs.common.message.BaseMessage; -import com.paradogs.common.message.MsgHeader; -import io.netty.buffer.ByteBuf; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023/2/27 20:49 - * @Description: TODO - */ -@Data -public class GateMessage extends BaseMessage { - - private byte[] msgBody; - - - @Override - public void serialization(ByteBuf out) { - - out.writeBytes(msgBody); - - } - - /** - * 网关只解析请求头 - * @param in - */ - @Override - public void deserialization(ByteBuf in) throws InvalidProtocolBufferException { - - MsgHeader msgHeader = MsgHeader.builder().build(); - msgHeader.deserialization(in); - this.setMsgHeader(msgHeader); - - byte[] bytes = new byte[in.readableBytes()]; - in.readBytes(bytes); - this.setMsgBody(bytes); - } -} diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateRepository.java b/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateRepository.java deleted file mode 100644 index a4e35ac..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/misc/GateRepository.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.paradogs.gate.misc; - -import io.netty.channel.Channel; -import io.netty.channel.socket.nio.NioSocketChannel; -import lombok.extern.slf4j.Slf4j; - -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.stream.Collectors; - -/** - * @author: yumi - * @date: 2023/2/25 15:13 - * @Description: TODO - */ -@Slf4j -public class GateRepository { - - /** - * 玩家连接 - */ - public static Map channelMap = new LinkedHashMap<>(); - public static Map playerMap = new LinkedHashMap<>(); - public static List channels = new CopyOnWriteArrayList<>(); - - public static ServiceServer getPlayerChannel(String channelId) { - for (ServiceServer channel : channels) { - if (channel.getUId().equals(channelId)) { - return channel; - } - } - return null; - - } - - public static ServiceServer getPlayerChannel(Channel channel) { - for (ServiceServer ch : channels) { - if (ch.getChannel() == channel) { - return ch; - } - } - return null; - - } - - - /** - * 服务连接 - */ - public static Map> serverMap = new ConcurrentHashMap<>(); - - /** - * 注册服务 - * @param serverName - * @param server - */ - public static void registerServer(String serverName, ServiceServer server) { - if (serverMap.get(serverName) == null) { - serverMap.put(serverName, new CopyOnWriteArrayList<>()); - } - serverMap.get(serverName).add(server); - } - - /** - * 获取服务中的随机一个实例 - * @param serverName - * @return - */ - public static ServiceServer getRandomServer(String serverName) { - List channels = serverMap.get(serverName); - if (channels == null || channels.size() == 0) { - return null; - } - // 0 ~ size - 1 - return channels.get((int) (Math.random() * channels.size())); - } - - public static ServiceServer getChannel(Channel channel, String serviceName) { - ServiceServer playerChannel = getPlayerChannel(channel); - // 如果是第一次使用服务,为其随机分配一个服务器 - if (playerChannel.getServiceMap().get(serviceName) == null) { - log.info("首次分配服务"); - log.info("服务列表 [{}]", serverMap.get(serviceName).stream().map(ServiceServer::getName).collect(Collectors.toList())); - playerChannel.getServiceMap().put(serviceName, getRandomServer(serviceName)); - log.info("分配到服务 [{}]", playerChannel.getServiceMap().get(serviceName).getName()); - } - return playerChannel.getServiceMap().get(serviceName); - } -} diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/misc/ServiceServer.java b/paradogs-gate/src/main/java/com/paradogs/gate/misc/ServiceServer.java deleted file mode 100644 index a881db7..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/misc/ServiceServer.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.paradogs.gate.misc; - -import com.paradogs.gate.client.ClientCfg; -import io.netty.bootstrap.Bootstrap; -import io.netty.channel.Channel; -import io.netty.channel.nio.NioEventLoopGroup; -import lombok.Data; -import lombok.experimental.Accessors; -import lombok.extern.slf4j.Slf4j; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * @author: yumi - * @date: 2023/3/10 21:43 - * @Description: TODO - */ -@Data -@Accessors(chain = true) -@Slf4j -public class ServiceServer { - - private String uId; - private ChannelType type; - public enum ChannelType { - PLAYER, - SERVICE - } - private Channel channel; - private String name; - private Bootstrap server; - private ClientCfg clientCfg; - private NioEventLoopGroup worker; - private Long playerId; - - // [serviceName : server] 玩家所在的服务器 - private Map serviceMap = new ConcurrentHashMap<>(); - - public void connect() { - while (true) { - try { - this.channel = server.connect(clientCfg.getHost(), clientCfg.getPort()).sync().channel(); - GateRepository.channels.add(this); - GateRepository.registerServer(this.getClientCfg().getService(), this); - log.info("[{}] 连接成功", clientCfg.getName()); - break; - } catch (Exception e) { - log.error("[{}]\t[{}:{}]\t连接失败,发起重连... [{}]", name, clientCfg.getHost(), clientCfg.getPort(), e.getMessage()); - } - } - waitAndClose(); - log.info("[{}] 关闭", clientCfg.getName()); - } - - public void waitAndClose() { - try { - channel.closeFuture().sync(); - } catch (InterruptedException e) { - log.error("[{}] server error: [{}]", clientCfg.getName(), e.getMessage()); - } finally { - worker.shutdownGracefully(); - } - - } - -} diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/server/GateChannelDuplexHandler.java b/paradogs-gate/src/main/java/com/paradogs/gate/server/GateChannelDuplexHandler.java deleted file mode 100644 index 345e9bd..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/server/GateChannelDuplexHandler.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.paradogs.gate.server; - -import io.netty.channel.ChannelDuplexHandler; -import io.netty.channel.ChannelHandlerContext; -import lombok.extern.slf4j.Slf4j; - -/** - * @author: yumi - * @date: 2023/2/24 20:23 - * @Description: TODO - */ -@Slf4j -public class GateChannelDuplexHandler extends ChannelDuplexHandler { - - @Override - public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { -// IdleStateEvent event = (IdleStateEvent) evt; -// if(event.state()== IdleState.WRITER_IDLE){ -// log.info("已经3s没有写数据了,发送心跳包..."); -// ctx.writeAndFlush(new CGHeartMsg()); -// } - } - -} diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/server/GateServer.java b/paradogs-gate/src/main/java/com/paradogs/gate/server/GateServer.java deleted file mode 100644 index 0c4f247..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/server/GateServer.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.paradogs.gate.server; - -import io.netty.bootstrap.ServerBootstrap; -import io.netty.channel.Channel; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.nio.NioServerSocketChannel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-02-24 14:27 - * @Description: TODO - */ -@Slf4j -@Component -public class GateServer { - - @Value("${netty.server.port}") - private Integer port; - - @Autowired - private GateServerChannelInitializer gateServerChannelInitializer; - - private ServerBootstrap server; - - /** - * 启动 netty 服务器 - */ - @Async - public void start() { - - NioEventLoopGroup boss = new NioEventLoopGroup(); - NioEventLoopGroup worker = new NioEventLoopGroup(); - try { - this.server = new ServerBootstrap() - .group(boss, worker) - .channel(NioServerSocketChannel.class) - .childHandler(gateServerChannelInitializer); - - Channel channel = this.server.bind(port).sync().channel(); - log.info("gate start"); - - channel.closeFuture().sync(); - - } catch (InterruptedException e) { - log.error("server error: [{}]", e.getMessage()); - } finally { - boss.shutdownGracefully(); - worker.shutdownGracefully(); - } - - } - -} diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/server/GateServerChannelInitializer.java b/paradogs-gate/src/main/java/com/paradogs/gate/server/GateServerChannelInitializer.java deleted file mode 100644 index fc05691..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/server/GateServerChannelInitializer.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.paradogs.gate.server; - -import com.paradogs.gate.handler.GateMessageHandler; -import com.paradogs.gate.misc.ServiceServer; -import com.paradogs.gate.misc.GateCodec; -import com.paradogs.gate.misc.GateRepository; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInitializer; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.LengthFieldBasedFrameDecoder; -import io.netty.handler.codec.LengthFieldPrepender; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.UUID; - -/** - * @author: yumi - * @date: 2023-02-24 16:48 - * @Description: TODO - */ -@Slf4j -@Component -public class GateServerChannelInitializer extends ChannelInitializer { - - @Override - protected void initChannel(NioSocketChannel channel) throws Exception { - channel.pipeline().addLast(new LengthFieldBasedFrameDecoder(65534, 0, 2, 0, 2)); - channel.pipeline().addLast(new LengthFieldPrepender(2)); - channel.pipeline().addLast(new GateCodec()); - - channel.pipeline().addLast(new GateMessageHandler()); - - // 给该匿名玩家通道设置一个唯一 ID,登录成功后唯一 ID 变为玩家 ID - String uuid = UUID.randomUUID().toString(); - ServiceServer serviceServer = new ServiceServer() - .setUId(uuid) - .setType(ServiceServer.ChannelType.PLAYER) - .setChannel(channel); - GateRepository.channels.add(serviceServer); - log.info("有玩家建立连接 uuid: [{}]", uuid); -// log.info("[{}] 建立连接", name); - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - log.error("{}", cause.getMessage()); - cause.printStackTrace(); - } -} diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/server/ServerRunner.java b/paradogs-gate/src/main/java/com/paradogs/gate/server/ServerRunner.java deleted file mode 100644 index adbfbd7..0000000 --- a/paradogs-gate/src/main/java/com/paradogs/gate/server/ServerRunner.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.paradogs.gate.server; - -import com.paradogs.gate.client.ClientCfg; -import com.paradogs.gate.client.ClientManager; -import com.paradogs.gate.config.ClientConfig; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-02-24 14:29 - * @Description: TODO - */ -@Slf4j -@Component -public class ServerRunner implements ApplicationRunner { - - @Autowired - private GateServer gateServer; - - @Autowired - private ClientManager clientManager; - - @Autowired - private ClientConfig clientConfig; - - @Override - public void run(ApplicationArguments args) throws Exception { - - gateServer.start(); - - for (ClientCfg client : clientConfig.getClients()) { - clientManager.start(client); - } - - - - } -} diff --git a/paradogs-gate/src/main/resources/application.yml b/paradogs-gate/src/main/resources/application.yml deleted file mode 100644 index fd5dabd..0000000 --- a/paradogs-gate/src/main/resources/application.yml +++ /dev/null @@ -1,30 +0,0 @@ -netty: - server: - port: 80 - clients: - - service: login - name: 登录模块 - host: localhost - port: 8001 - - service: game - name: 游戏服1 - host: localhost - port: 8002 - - service: game - name: 游戏服2 - host: localhost - port: 8003 - -spring: - datasource: - url: jdbc:mysql://47.102.133.168:3306/netty?useUnicode=true&characterEncoding=utf-8&useSSL=false - driver-class-name: com.mysql.jdbc.Driver - username: root - password: root - -mybatis-plus: - configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - -excel: - folder-path: classpath:excel/ \ No newline at end of file diff --git a/paradogs-gate/target/classes/application.yml b/paradogs-gate/target/classes/application.yml deleted file mode 100644 index fd5dabd..0000000 --- a/paradogs-gate/target/classes/application.yml +++ /dev/null @@ -1,30 +0,0 @@ -netty: - server: - port: 80 - clients: - - service: login - name: 登录模块 - host: localhost - port: 8001 - - service: game - name: 游戏服1 - host: localhost - port: 8002 - - service: game - name: 游戏服2 - host: localhost - port: 8003 - -spring: - datasource: - url: jdbc:mysql://47.102.133.168:3306/netty?useUnicode=true&characterEncoding=utf-8&useSSL=false - driver-class-name: com.mysql.jdbc.Driver - username: root - password: root - -mybatis-plus: - configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - -excel: - folder-path: classpath:excel/ \ No newline at end of file diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java index c924e47..4df5f5f 100644 --- a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java @@ -1,13 +1,18 @@ package com.paradogs.test.client; +import com.paradogs.common.client.Client; import com.paradogs.common.client.ClientLauncher; import com.paradogs.common.core.message.CGTestMsg; +import com.paradogs.common.core.message.MsgHeader; import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; +import com.paradogs.common.core.utils.MsgUtils; import com.paradogs.common.core.utils.SpringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import java.util.Map; + /** * @author: yumi * @date: 2023/7/31 23:25 @@ -24,10 +29,13 @@ public class TestClientApplication { int startI = i; while (i < 10) { try { + CGTestMsg cgTestMsg = new CGTestMsg("hel yumi >> " + ++i); log.info("send: {}", cgTestMsg); ClientLauncher clientLauncher = SpringUtils.getBean(ClientLauncher.class); - clientLauncher.getClients().get(0).getChannel().writeAndFlush(cgTestMsg); + Map test1 = clientLauncher.getClientMap().get("game"); + Client test2 = test1.get("Client"); + MsgUtils.send(clientLauncher.getClientMap().get("game").get("Client").getChannel(), "game-test.test1", cgTestMsg); // System.out.println("send " + cgTestMsg); Thread.sleep(100); if (System.currentTimeMillis() - start > 1000) { diff --git a/paradogs-test/paradogs-test-client/src/main/resources/application.yml b/paradogs-test/paradogs-test-client/src/main/resources/application.yml index a9ebe61..8165a1d 100644 --- a/paradogs-test/paradogs-test-client/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-client/src/main/resources/application.yml @@ -1,4 +1,5 @@ paradogs: - client: - host: localhost - port: 8001 \ No newline at end of file + clients: + - host: localhost + port: 80 + server: game \ No newline at end of file diff --git a/paradogs-connector/pom.xml b/paradogs-test/paradogs-test-connector/pom.xml similarity index 61% rename from paradogs-connector/pom.xml rename to paradogs-test/paradogs-test-connector/pom.xml index 10439f9..9be34d5 100644 --- a/paradogs-connector/pom.xml +++ b/paradogs-test/paradogs-test-connector/pom.xml @@ -3,18 +3,24 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - paradogs + paradogs-test com.paradogs - 0.0.1-SNAPSHOT + 0.0.1 4.0.0 - paradogs-connector - 0.0.1 + paradogs-test-connector 8 8 + + + com.paradogs + paradogs-common-connector-starter + + + \ No newline at end of file diff --git a/paradogs-gate/src/main/java/com/paradogs/gate/GateApplication.java b/paradogs-test/paradogs-test-connector/src/main/java/com/paradogs/test/connector/TestConnectorApplication.java similarity index 38% rename from paradogs-gate/src/main/java/com/paradogs/gate/GateApplication.java rename to paradogs-test/paradogs-test-connector/src/main/java/com/paradogs/test/connector/TestConnectorApplication.java index 778dbfe..b74ba29 100644 --- a/paradogs-gate/src/main/java/com/paradogs/gate/GateApplication.java +++ b/paradogs-test/paradogs-test-connector/src/main/java/com/paradogs/test/connector/TestConnectorApplication.java @@ -1,21 +1,16 @@ -package com.paradogs.gate; +package com.paradogs.test.connector; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.scheduling.annotation.EnableAsync; /** * @author: yumi - * @date: 2023-02-24 14:20 + * @date: 2023/8/7 17:32 * @Description: TODO */ -@SpringBootApplication( - scanBasePackageClasses = {GateApplication.class}, - scanBasePackages = {"com.mini.common"} -) -@EnableAsync -public class GateApplication { +@SpringBootApplication +public class TestConnectorApplication { public static void main(String[] args) { - SpringApplication.run(GateApplication.class, args); + SpringApplication.run(TestConnectorApplication.class, args); } } diff --git a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml b/paradogs-test/paradogs-test-connector/src/main/resources/application.yml new file mode 100644 index 0000000..863c440 --- /dev/null +++ b/paradogs-test/paradogs-test-connector/src/main/resources/application.yml @@ -0,0 +1,11 @@ +paradogs: + server: + port: 80 + type: test + name: test-1 + connector: false + clients: + - host: localhost + port: 8001 + server: game + name: game-server-1 \ No newline at end of file diff --git a/paradogs-test/pom.xml b/paradogs-test/pom.xml index acc9d6e..8dcee64 100644 --- a/paradogs-test/pom.xml +++ b/paradogs-test/pom.xml @@ -14,6 +14,7 @@ paradogs-test-server paradogs-test-client + paradogs-test-connector diff --git a/pom.xml b/pom.xml index 37876f7..9f30b84 100644 --- a/pom.xml +++ b/pom.xml @@ -7,8 +7,6 @@ paradogs-game paradogs-common paradogs-login - paradogs-gate - paradogs-client paradogs-master paradogs-test paradogs-connector @@ -138,6 +136,12 @@ 0.0.1 + + com.paradogs + paradogs-common-connector-starter + 0.0.1 + + -- Gitee From 2ce833eb4bca32d5247a62fd61b7ec6455367f6b Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Mon, 14 Aug 2023 00:07:08 +0800 Subject: [PATCH 07/32] =?UTF-8?q?=E5=AE=8C=E6=88=90=20rpc=20=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB=E8=B0=83=E7=94=A8=E9=AA=8C=E8=AF=81=EF=BC=8C?= =?UTF-8?q?rpc=20=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8=E8=BF=98=E6=9C=AA?= =?UTF-8?q?=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/client/{ => clients}/Client.java | 17 +- .../ClientChannelInitializer.java | 6 +- .../client/{ => clients}/ClientLauncher.java | 18 +- .../{ => clients}/ClientProperties.java | 2 +- .../client/events/ClientStartEvent.java | 2 +- .../common/client/masters/Master.java | 87 + .../masters/MasterChannelInitializer.java | 41 + .../common/client/masters/MasterLauncher.java | 63 + .../client/masters/MasterProperties.java | 53 + ...ot.autoconfigure.AutoConfiguration.imports | 12 +- .../src/main/resources/config/application.yml | 0 .../common/connector/ConnectorMsgHandler.java | 8 +- paradogs-common/paradogs-common-core/pom.xml | 5 + .../common/core/annoations/PdgRPC.java | 27 + .../common/core/annoations/PdgRPCMapping.java | 22 + .../annoations/resolvers/PdgRpcResolver.java | 54 + .../core/annoations/scans/InterfaceScan.java | 54 + .../annoations/scans/RPCInterfaceScan.java | 57 + .../common/core/aspect/ControllerAspect.java | 49 + .../core/events/ChannelActiveEvent.java | 15 +- .../core/events/ChannelInactiveEvent.java | 16 +- .../common/core/events/ReceiveMsgEvent.java | 11 +- .../common/core/events/SyncMsgEvent.java | 2 +- .../core/events/{ => base}/AnonEvent.java | 14 +- .../core/events/{ => base}/BaseEvent.java | 8 +- .../core/listeners/MsgSyncListener.java | 15 + .../PdgEventListener.java | 32 +- .../common/core/message/GCClientInfoMsg.java | 14 +- .../common/core/message/GCTestMsg.java | 16 + .../common/core/message/MsgContextHolder.java | 51 + .../common/core/message/MsgHeader.java | 21 +- .../core/message/RouteMsgTargetResolver.java | 47 - .../core/message/route/CmdMsgResolver.java | 17 + .../core/message/{ => route}/MsgMapping.java | 3 +- .../core/message/route/RouteMsgResolver.java | 127 + .../{ => route/base}/MsgTargetResolver.java | 34 +- .../core/netty/codec/ConnectorCodec.java | 4 +- .../common/core/netty/codec/ServerCodec.java | 22 +- .../common/core/netty/events/ServerEvent.java | 5 +- .../initializer/BaseChannelInitializer.java | 1 + .../core/netty/pipelines/BaseMsgHandler.java | 53 +- .../netty/pipelines/ServerMsgHandler.java | 10 + .../netty/queue/MainMsgConsumerThread.java | 55 +- .../core/netty/queue/QueueProperties.java | 2 +- .../common/core/rpc/RPCProxyBean.java | 63 + .../core/rpc/RPCProxyBeanImportSelector.java | 77 + .../common/core/rpc/RPCProxyInterceptor.java | 97 + .../common/core/rpc/RpcResponseResolver.java | 101 + .../common/core/utils/EventUtils.java | 20 + .../paradogs/common/core/utils/MsgUtils.java | 46 +- .../common/core/utils/SpringUtils.java | 16 +- ...ot.autoconfigure.AutoConfiguration.imports | 9 +- .../paradogs-common-server-starter/pom.xml | 2 +- .../paradogs/common/server/ServerManager.java | 26 + .../common/server/ServerProperties.java | 5 + .../server/events/ServerStartEvent.java | 14 +- .../paradogs/common/server/master/Master.java | 102 + .../master/MasterChannelInitializer.java | 43 + .../common/server/master/MasterLauncher.java | 61 + .../server/master/MasterProperties.java | 49 + .../paradogs/common/server/rpc/InitRpc.java | 21 + .../common/server/rpc/TestProcess.java | 31 + ...ot.autoconfigure.AutoConfiguration.imports | 6 + .../src/main/resources/config/application.yml | 0 paradogs-game/pom.xml | 24 - .../com/paradogs/game/GameApplication.java | 18 - .../game/handler/CGAttackMsgHandler.java | 40 - .../game/handler/CGBuyGoodsMsgHandler.java | 52 - .../handler/CGLoginSuccessMsgHandler.java | 46 - .../CGReceiveWarOrderPrizeMsgHandler.java | 80 - .../CGRechargeWarOrderVipMsgHandler.java | 45 - .../game/handler/GCBuyGoodsMsgHandler.java | 21 - .../game/handler/base/GameMessageHandler.java | 37 - .../game/manager/BaseInfoManager.java | 82 - .../paradogs/game/manager/BaseManager.java | 15 - .../game/manager/WarOrderManager.java | 142 - .../game/manager/WoodShopManager.java | 68 - .../paradogs/game/mapper/PlayerMapper.java | 14 - .../paradogs/game/message/CGAttackMsg.java | 14 - .../paradogs/game/message/CGBuyGoodsMsg.java | 26 - .../message/CGRechargeWarOrderVipMsg.java | 13 - .../paradogs/game/message/GCAttackMsg.java | 14 - .../game/message/GCLoginSuccessMsg.java | 13 - .../message/GCReceiveWarOrderPrizeMsg.java | 14 - .../message/GCRechargeWarOrderVipMsg.java | 15 - .../paradogs/game/misc/GameRepository.java | 168 - .../misc/ObjectAndByteArrayTypeHandler.java | 79 - .../com/paradogs/game/misc/PubSubManager.java | 55 - .../game/misc/pubsub/CompleteTaskPub.java | 41 - .../game/misc/pubsub/KillChangePub.java | 39 - .../paradogs/game/misc/pubsub/LoginPub.java | 44 - .../paradogs/game/misc/pubsub/base/Pub.java | 16 - .../paradogs/game/misc/pubsub/base/Sub.java | 10 - .../com/paradogs/game/pojo/blob/BaseBlob.java | 24 - .../com/paradogs/game/pojo/blob/BaseInfo.java | 31 - .../com/paradogs/game/pojo/blob/WarOrder.java | 87 - .../game/pojo/db/ModifyPlayerMsg.java | 24 - .../com/paradogs/game/pojo/entity/Player.java | 111 - .../excel/ExcelDataTransformListener.java | 62 - .../paradogs/game/pojo/excel/ExcelGoods.java | 27 - .../game/pojo/excel/ExcelWarOrderPrize.java | 57 - .../game/pojo/excel/ExcelWarOrderTask.java | 84 - .../game/pojo/notify/CompleteTaskNotify.java | 17 - .../com/paradogs/game/proto/ProtoMsg.java | 4557 ----------------- .../server/GameMainChannelInitializer.java | 48 - .../com/paradogs/game/server/GameServer.java | 62 - .../paradogs/game/server/ServerRunner.java | 25 - .../server/thread/CGMainHandleThread.java | 45 - .../game/server/thread/DBHandlerThread.java | 66 - .../paradogs/game/service/PlayerService.java | 13 - .../game/service/WarOrderService.java | 9 - .../game/service/impl/PlayerServiceImpl.java | 16 - .../service/impl/WarOrderServiceImpl.java | 115 - paradogs-game/src/main/proto/Entity.proto | 37 - .../src/main/resources/application.yml | 19 - ...\344\273\244\347\263\273\347\273\237.xlsx" | Bin 10878 -> 0 bytes ...\346\235\220\345\225\206\345\272\227.xlsx" | Bin 9632 -> 0 bytes .../test/java/com/paradogs/game/GameTest.java | 70 - paradogs-game/target/classes/application.yml | 19 - ...\344\273\244\347\263\273\347\273\237.xlsx" | Bin 10878 -> 0 bytes ...\346\235\220\345\225\206\345\272\227.xlsx" | Bin 9632 -> 0 bytes paradogs-master/pom.xml | 17 +- .../paradogs/master/MasterApplication.java | 3 + .../master/controller/InitController.java | 25 + .../paradogs/master/events/EventHandler.java | 22 + .../src/main/resources/application.yml | 19 - .../src/main/resources/config/application.yml | 7 + .../java/com/paradogs/master/test/Test11.java | 20 - .../test/client/TestClientApplication.java | 57 +- .../test/server/TestServerApplication.java | 6 + .../server/controller/TestController.java | 4 +- .../src/main/resources/application.yml | 3 + pom.xml | 2 - 133 files changed, 1819 insertions(+), 7197 deletions(-) rename paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/{ => clients}/Client.java (82%) rename paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/{ => clients}/ClientChannelInitializer.java (76%) rename paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/{ => clients}/ClientLauncher.java (84%) rename paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/{ => clients}/ClientProperties.java (95%) create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/Master.java create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterChannelInitializer.java create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterLauncher.java create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterProperties.java create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/resources/config/application.yml create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPC.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPCMapping.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/resolvers/PdgRpcResolver.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/InterfaceScan.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/RPCInterfaceScan.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/aspect/ControllerAspect.java rename paradogs-game/src/main/java/com/paradogs/game/message/CGReceiveWarOrderPrizeMsg.java => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelActiveEvent.java (35%) rename paradogs-game/src/main/java/com/paradogs/game/message/GCBuyGoodsMsg.java => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java (35%) rename paradogs-game/src/main/java/com/paradogs/game/message/CGLoginSuccessMsg.java => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java (41%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/{ => base}/AnonEvent.java (64%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/{ => base}/BaseEvent.java (86%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/MsgSyncListener.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{events/listener => listeners}/PdgEventListener.java (64%) rename paradogs-game/src/main/java/com/paradogs/game/pojo/blob/PlayerCurrency.java => paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCClientInfoMsg.java (50%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCTestMsg.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgContextHolder.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/RouteMsgTargetResolver.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/CmdMsgResolver.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/{ => route}/MsgMapping.java (78%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/RouteMsgResolver.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/{ => route/base}/MsgTargetResolver.java (30%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBean.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBeanImportSelector.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyInterceptor.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RpcResponseResolver.java create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerManager.java create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/Master.java create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterChannelInitializer.java create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterProperties.java create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRpc.java create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/TestProcess.java create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/resources/config/application.yml delete mode 100644 paradogs-game/pom.xml delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/GameApplication.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/handler/CGAttackMsgHandler.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/handler/CGBuyGoodsMsgHandler.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/handler/CGLoginSuccessMsgHandler.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/handler/CGReceiveWarOrderPrizeMsgHandler.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/handler/CGRechargeWarOrderVipMsgHandler.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/handler/GCBuyGoodsMsgHandler.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/handler/base/GameMessageHandler.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/manager/BaseInfoManager.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/manager/BaseManager.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/manager/WarOrderManager.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/manager/WoodShopManager.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/mapper/PlayerMapper.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/message/CGAttackMsg.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/message/CGBuyGoodsMsg.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/message/CGRechargeWarOrderVipMsg.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/message/GCAttackMsg.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/message/GCLoginSuccessMsg.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/message/GCReceiveWarOrderPrizeMsg.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/message/GCRechargeWarOrderVipMsg.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/misc/GameRepository.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/misc/ObjectAndByteArrayTypeHandler.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/misc/PubSubManager.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/CompleteTaskPub.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/KillChangePub.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/LoginPub.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Pub.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Sub.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseBlob.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseInfo.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/pojo/blob/WarOrder.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/pojo/db/ModifyPlayerMsg.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/pojo/entity/Player.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelDataTransformListener.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelGoods.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderPrize.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderTask.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/pojo/notify/CompleteTaskNotify.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/proto/ProtoMsg.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/server/GameMainChannelInitializer.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/server/GameServer.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/server/ServerRunner.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/server/thread/CGMainHandleThread.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/server/thread/DBHandlerThread.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/service/PlayerService.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/service/WarOrderService.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/service/impl/PlayerServiceImpl.java delete mode 100644 paradogs-game/src/main/java/com/paradogs/game/service/impl/WarOrderServiceImpl.java delete mode 100644 paradogs-game/src/main/proto/Entity.proto delete mode 100644 paradogs-game/src/main/resources/application.yml delete mode 100644 "paradogs-game/src/main/resources/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" delete mode 100644 "paradogs-game/src/main/resources/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" delete mode 100644 paradogs-game/src/test/java/com/paradogs/game/GameTest.java delete mode 100644 paradogs-game/target/classes/application.yml delete mode 100644 "paradogs-game/target/classes/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" delete mode 100644 "paradogs-game/target/classes/excel/\346\234\250\346\235\220\345\225\206\345\272\227.xlsx" create mode 100644 paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java create mode 100644 paradogs-master/src/main/java/com/paradogs/master/events/EventHandler.java delete mode 100644 paradogs-master/src/main/resources/application.yml create mode 100644 paradogs-master/src/main/resources/config/application.yml delete mode 100644 paradogs-master/src/test/java/com/paradogs/master/test/Test11.java diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/Client.java similarity index 82% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java rename to paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/Client.java index d81cde8..33828fa 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/Client.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/Client.java @@ -1,25 +1,17 @@ -package com.paradogs.common.client; +package com.paradogs.common.client.clients; import com.paradogs.common.client.events.ClientStartEvent; +import com.paradogs.common.core.message.GCClientInfoMsg; import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.MsgUtils; import com.paradogs.common.core.utils.SpringUtils; -import com.sun.deploy.config.ClientConfig; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; -import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelHandlerContext; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; import lombok.Getter; -import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.context.annotation.Scope; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Component; - -import java.util.List; /** * @author: yumi @@ -59,6 +51,7 @@ public class Client { this.channel = client.connect(properties.getHost(), properties.getPort()).sync().channel(); + log.info("{}:{} connect success", properties.getHost(), properties.getPort()); EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientChannelInitializer.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientChannelInitializer.java similarity index 76% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientChannelInitializer.java rename to paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientChannelInitializer.java index 529a81a..92315d3 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientChannelInitializer.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientChannelInitializer.java @@ -1,10 +1,13 @@ -package com.paradogs.common.client; +package com.paradogs.common.client.clients; import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; +import com.paradogs.common.core.utils.MsgUtils; import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.nio.NioSocketChannel; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** @@ -17,6 +20,7 @@ import org.springframework.stereotype.Component; @ChannelHandler.Sharable public class ClientChannelInitializer extends BaseChannelInitializer { + @Override protected void initPipeline2(ChannelPipeline pipeline) { // pipeline.addLast() diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientLauncher.java similarity index 84% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java rename to paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientLauncher.java index 0b7e800..3f80a4b 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientLauncher.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientLauncher.java @@ -1,17 +1,13 @@ -package com.paradogs.common.client; +package com.paradogs.common.client.clients; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; -import org.springframework.context.annotation.Scope; -import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Component; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -27,10 +23,20 @@ public class ClientLauncher implements ApplicationRunner { @Autowired private ClientProperties clientProperties; + /** + * server[name[client]] + */ private Map> clientMap = new HashMap<>(); + @Override public void run(ApplicationArguments args) { + + if (clientProperties == null || clientProperties.getClients() == null) { + return; +// throw new RuntimeException("no found clientProperties: null"); + } + for (ClientProperties.ClientConfig clientConfig : clientProperties.getClients()) { if (clientMap.get(clientConfig.getServer()) == null) { clientMap.put(clientConfig.getServer(), new HashMap<>()); @@ -44,8 +50,6 @@ public class ClientLauncher implements ApplicationRunner { } } - - } public void closeAll() { diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientProperties.java similarity index 95% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java rename to paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientProperties.java index c689fd2..9c14cf2 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/ClientProperties.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientProperties.java @@ -1,4 +1,4 @@ -package com.paradogs.common.client; +package com.paradogs.common.client.clients; import com.paradogs.common.core.utils.StringUtils; import lombok.Data; diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/events/ClientStartEvent.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/events/ClientStartEvent.java index caf686f..efe4532 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/events/ClientStartEvent.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/events/ClientStartEvent.java @@ -1,6 +1,6 @@ package com.paradogs.common.client.events; -import com.paradogs.common.core.events.BaseEvent; +import com.paradogs.common.core.events.base.BaseEvent; /** * @author: yumi diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/Master.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/Master.java new file mode 100644 index 0000000..b283cf5 --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/Master.java @@ -0,0 +1,87 @@ +package com.paradogs.common.client.masters; + +import com.paradogs.common.client.clients.ClientChannelInitializer; +import com.paradogs.common.client.events.ClientStartEvent; +import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.SpringUtils; +import io.netty.bootstrap.Bootstrap; +import io.netty.channel.Channel; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.nio.NioSocketChannel; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +/** + * @author: yumi + * @date: 2023/7/31 22:36 + * @Description: TODO + */ +@Slf4j +public class Master { + + private Bootstrap master; + + @Getter + private Channel channel; + + private NioEventLoopGroup worker; + + private MasterProperties.MasterConfig properties; + + public Master(MasterProperties.MasterConfig masterConfig) { + this.properties = masterConfig; + } + + /** + * 启动 netty 服务器 + */ + public void start() { + + try { + long startTime = System.currentTimeMillis(); + this.worker = new NioEventLoopGroup(); + + this.master = new Bootstrap() + .group(worker) + .channel(NioSocketChannel.class) + .handler(SpringUtils.getBean(ClientChannelInitializer.class)); + + + this.channel = master.connect(properties.getHost(), properties.getPort()).sync().channel(); + + log.info("{}:{} connect success", properties.getHost(), properties.getPort()); + EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); + + channel.closeFuture().addListener(future -> { + log.info("[{}] server stop", this.properties.getName()); + }); + + } catch (Exception e) { + log.error("server error:[{}]", e.getMessage(), e); + this.closeSync(); + } + + } + + /** + * 同步关闭连接 + * ***ps: 关闭后进度未结束是因为消息处理队列还开着未关闭 + * @return + */ + public boolean closeSync() { + try { + if (this.channel != null && this.channel.isOpen()) { + channel.close().sync(); + } + if (worker != null && !worker.isShutdown()) { + worker.shutdownGracefully(); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + + } + +} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterChannelInitializer.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterChannelInitializer.java new file mode 100644 index 0000000..9f12ba6 --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterChannelInitializer.java @@ -0,0 +1,41 @@ +package com.paradogs.common.client.masters; + +import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelPipeline; +import io.netty.channel.socket.nio.NioSocketChannel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/7 15:31 + * @Description: TODO + */ +@Slf4j +@Component +@ChannelHandler.Sharable +public class MasterChannelInitializer extends BaseChannelInitializer { + + @Value("${paradogs.server.type}") + private String serverType; + + @Value("${paradogs.server.name}") + private String serverName; + + @Override + protected void initPipeline2(ChannelPipeline pipeline) { + } + + @Override + protected void initAfter(NioSocketChannel channel) { + } + + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + super.channelActive(ctx); + } + +} \ No newline at end of file diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterLauncher.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterLauncher.java new file mode 100644 index 0000000..cc66c3b --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterLauncher.java @@ -0,0 +1,63 @@ +package com.paradogs.common.client.masters; + +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author: yumi + * @date: 2023/7/31 23:29 + * @Description: TODO + */ +@Slf4j +@Getter +@Component +public class MasterLauncher implements ApplicationRunner { + + @Autowired + private MasterProperties masterProperties; + + /** + * server[name[master]] + */ + private Map> masterMap = new HashMap<>(); + + + @Override + public void run(ApplicationArguments args) { + + if (masterProperties == null || masterProperties.getMasters() == null) { + return; +// throw new RuntimeException("no found masterProperties: null"); + } + + for (MasterProperties.MasterConfig masterConfig : masterProperties.getMasters()) { + if (masterMap.get(masterConfig.getServer()) == null) { + masterMap.put(masterConfig.getServer(), new HashMap<>()); + } + masterMap.get(masterConfig.getServer()).put(masterConfig.getName(), new Master(masterConfig)); + } + + for (Map masterTypeList : masterMap.values()) { + for (Master master : masterTypeList.values()) { + master.start(); + } + } + + } + + public void closeAll() { + for (Map masterTypeList : masterMap.values()) { + for (Master master : masterTypeList.values()) { + master.closeSync(); + } + } + } + +} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterProperties.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterProperties.java new file mode 100644 index 0000000..fdbe003 --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterProperties.java @@ -0,0 +1,53 @@ +package com.paradogs.common.client.masters; + +import com.paradogs.common.core.utils.StringUtils; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author: yumi + * @date: 2023/7/31 22:39 + * @Description: TODO + */ +@Data +@Component +@ConfigurationProperties("paradogs") +public class MasterProperties { + + private List masters; + + @Data + @Component + public static class MasterConfig { + /** + * 主机 ip + */ + private String host; + + /** + * 端口号 + */ + private int port; + + /** + * 服务标识类型 + */ + private String server; + + /** + * 服务名称 + */ + private String name; + + public String getName() { + if (StringUtils.isBlank(this.name)) { + this.name = "Master"; + } + return name; + } + } + +} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 8bb288a..81c1fd5 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,6 +1,10 @@ -com.paradogs.common.client.Client -com.paradogs.common.client.ClientProperties -com.paradogs.common.client.ClientLauncher -com.paradogs.common.client.ClientChannelInitializer +com.paradogs.common.client.clients.Client +com.paradogs.common.client.clients.ClientProperties +com.paradogs.common.client.clients.ClientLauncher +com.paradogs.common.client.clients.ClientChannelInitializer + +com.paradogs.common.client.masters.Master +com.paradogs.common.client.masters.MasterProperties +com.paradogs.common.client.masters.MasterLauncher diff --git a/paradogs-common/paradogs-common-client-starter/src/main/resources/config/application.yml b/paradogs-common/paradogs-common-client-starter/src/main/resources/config/application.yml new file mode 100644 index 0000000..e69de29 diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java index b391027..a995e6d 100644 --- a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java +++ b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java @@ -1,16 +1,14 @@ package com.paradogs.common.connector; -import com.paradogs.common.client.Client; -import com.paradogs.common.client.ClientLauncher; +import com.paradogs.common.client.clients.Client; +import com.paradogs.common.client.clients.ClientLauncher; import com.paradogs.common.core.message.ByteBodyMsg; import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; -import com.paradogs.common.core.netty.queue.QueueManager; import io.netty.channel.ChannelHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.List; import java.util.Map; import java.util.Random; @@ -42,7 +40,7 @@ public class ConnectorMsgHandler extends BaseMsgHandler { .orElse(null); client.getChannel().writeAndFlush(msg); - log.info("reward test success >>> {}", msg); +// log.info("reward test success >>> {}", msg); } } diff --git a/paradogs-common/paradogs-common-core/pom.xml b/paradogs-common/paradogs-common-core/pom.xml index b83d90a..c52be02 100644 --- a/paradogs-common/paradogs-common-core/pom.xml +++ b/paradogs-common/paradogs-common-core/pom.xml @@ -43,6 +43,11 @@ easyexcel + + org.springframework.boot + spring-boot-starter-aop + + diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPC.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPC.java new file mode 100644 index 0000000..5ce23f9 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPC.java @@ -0,0 +1,27 @@ +package com.paradogs.common.core.annoations; + +import com.paradogs.common.core.rpc.RPCProxyBeanImportSelector; +import org.springframework.context.annotation.Import; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/8/13 12:19 + * @Description: TODO + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Import(RPCProxyBeanImportSelector.class) +public @interface PdgRPC { + + /** + * 服务名 + * @return + */ + String value(); + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPCMapping.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPCMapping.java new file mode 100644 index 0000000..9918759 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPCMapping.java @@ -0,0 +1,22 @@ +package com.paradogs.common.core.annoations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/8/11 10:53 + * @Description: TODO + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface PdgRPCMapping { + + /** + * 路由路径 + * @return + */ + String value(); +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/resolvers/PdgRpcResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/resolvers/PdgRpcResolver.java new file mode 100644 index 0000000..72f18a9 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/resolvers/PdgRpcResolver.java @@ -0,0 +1,54 @@ +package com.paradogs.common.core.annoations.resolvers; + +import com.paradogs.common.core.annoations.PdgRPC; +import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.support.ResourcePatternResolver; +import org.springframework.core.type.MethodMetadata; +import org.springframework.core.type.classreading.MetadataReader; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.util.Map; +import java.util.Set; + +/** + * @author: yumi + * @date: 2023/8/12 9:57 + * @Description: TODO + */ +@Component +public class PdgRpcResolver extends ClassPathScanningCandidateComponentProvider { + + @PostConstruct + public void resolveResources() throws IOException { + + long start= System.currentTimeMillis(); + String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + + "com" + '/' + "**/*.class"; + Resource[] resources = new PathMatchingResourcePatternResolver().getResources(packageSearchPath); + for (Resource resource : resources) { + MetadataReader metadataReader = getMetadataReaderFactory().getMetadataReader(resource); + // 获取有指定注解全限定类型的方法集合 + Set annotatedMethods = metadataReader.getAnnotationMetadata().getAnnotatedMethods(PdgRPC.class.getName()); + + for (MethodMetadata method : annotatedMethods) { + // 获取指定注解的参数值 map: 参数名 - 参数值 + Map annotationAttributes = method.getAnnotationAttributes(PdgRPC.class.getName()); + String value = annotationAttributes.get("value").toString(); + + } + + } + System.out.println("耗时:" + (System.currentTimeMillis() - start)); + System.out.println(1); + + } + + public static String getPackage (Class startupClass) { + return startupClass.getPackage().getName(); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/InterfaceScan.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/InterfaceScan.java new file mode 100644 index 0000000..bdeeebe --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/InterfaceScan.java @@ -0,0 +1,54 @@ +package com.paradogs.common.core.annoations.scans; + +import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; +import org.springframework.beans.factory.config.BeanDefinitionHolder; +import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.context.annotation.ClassPathBeanDefinitionScanner; +import org.springframework.core.type.classreading.MetadataReader; + +import java.io.IOException; +import java.util.Set; + +/** + * @author: yumi + * @date: 2023/8/13 9:22 + * @Description: TODO + */ +public class InterfaceScan extends ClassPathBeanDefinitionScanner { + + public InterfaceScan(BeanDefinitionRegistry registry) { + super(registry); + } + + /** + * 扫描出满足条件的类或接口 + * @param basePackages + * @return + */ + @Override + public Set doScan(String... basePackages) { + return super.doScan(basePackages); + } + + /** + * 是否为可添加 bean,返回接口类型 + * 可以用 TypeFilter 加,但 TypeFilter 只能指定类,未知的动态类无法处理 + * @param metadataReader + * @return + * @throws IOException + */ + @Override + protected boolean isCandidateComponent(MetadataReader metadataReader) throws IOException { + return metadataReader.getClassMetadata().isInterface(); + } + + /** + * @param beanDefinition 一个 bean + * @return + */ + @Override + protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) { + return beanDefinition.getClass().isInterface(); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/RPCInterfaceScan.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/RPCInterfaceScan.java new file mode 100644 index 0000000..bf71d70 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/RPCInterfaceScan.java @@ -0,0 +1,57 @@ +package com.paradogs.common.core.annoations.scans; + +import com.paradogs.common.core.annoations.PdgRPC; +import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; +import org.springframework.beans.factory.config.BeanDefinitionHolder; +import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.context.annotation.ClassPathBeanDefinitionScanner; +import org.springframework.core.type.classreading.MetadataReader; + +import java.io.IOException; +import java.util.Set; + +/** + * @author: yumi + * @date: 2023/8/13 23:24 + * @Description: TODO + */ +public class RPCInterfaceScan extends ClassPathBeanDefinitionScanner { + + public RPCInterfaceScan(BeanDefinitionRegistry registry) { + super(registry); + } + + /** + * 扫描出满足条件的类或接口 + * @param basePackages + * @return + */ + @Override + public Set doScan(String... basePackages) { + return super.doScan(basePackages); + } + + /** + * 是否为可添加 bean,返回接口类型 + * 可以用 TypeFilter 加,但 TypeFilter 只能指定类,未知的动态类无法处理 + * @param metadataReader + * @return + * @throws IOException + */ + @Override + protected boolean isCandidateComponent(MetadataReader metadataReader) throws IOException { + return metadataReader.getClassMetadata().isInterface() + && metadataReader.getAnnotationMetadata().hasAnnotation(PdgRPC.class.getName()); + } + + /** + * @param beanDefinition 一个 bean + * @return + */ + @Override + protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) { + return beanDefinition.getMetadata().isInterface() + && beanDefinition.getMetadata().hasAnnotation(PdgRPC.class.getName()); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/aspect/ControllerAspect.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/aspect/ControllerAspect.java new file mode 100644 index 0000000..8f66077 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/aspect/ControllerAspect.java @@ -0,0 +1,49 @@ +//package com.paradogs.common.core.aspect; +// +// +//import com.paradogs.common.core.message.BaseMsg; +//import lombok.extern.slf4j.Slf4j; +//import org.aspectj.lang.ProceedingJoinPoint; +//import org.aspectj.lang.annotation.Around; +//import org.aspectj.lang.annotation.Aspect; +//import org.aspectj.lang.reflect.MethodSignature; +// +//import java.lang.reflect.Method; +//import java.nio.channels.Channel; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map; +// +///** +// * @author: yumi +// * @date: 2023/8/8 13:43 +// * @Description: TODO +// */ +//@Slf4j +//@Aspect +//public class ControllerAspect { +// +// private Map msgChannelMappingMap = new HashMap<>(); +// +// @Around("@annotation(com.paradogs.common.core.annoations.PdgMsgMapping)") +// public void handlePdgMsgMapping(ProceedingJoinPoint joinPoint) throws Throwable { +// Object result = joinPoint.proceed(); +// // 可能不是 void 方法,而是返回了 null 值,要判断 void 要用 method.getReturnType().equals(void.class) +// if (result == null) { +// return; +// } +// BaseMsg msg = null; +// try { +// msg = (BaseMsg) result; +// } catch (Exception e) { +// log.warn("result not cast to BaseMsg: " + result.getClass().getName()); +// return; +// } +// +// msg.getMsgHeader().getCtx().writeAndFlush(result); +// Method method = ((MethodSignature) joinPoint.getSignature()).getMethod(); +//// method. +// +// } +// +//} diff --git a/paradogs-game/src/main/java/com/paradogs/game/message/CGReceiveWarOrderPrizeMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelActiveEvent.java similarity index 35% rename from paradogs-game/src/main/java/com/paradogs/game/message/CGReceiveWarOrderPrizeMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelActiveEvent.java index 11310ef..90bbd47 100644 --- a/paradogs-game/src/main/java/com/paradogs/game/message/CGReceiveWarOrderPrizeMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelActiveEvent.java @@ -1,20 +1,21 @@ -package com.paradogs.game.message; +package com.paradogs.common.core.events; -import com.paradogs.common.message.CGMessage; +import com.paradogs.common.core.events.base.AnonEvent; +import io.netty.channel.ChannelHandlerContext; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * @author: yumi - * @date: 2023-03-24 14:35 - * @Description: 领取战令奖励 + * @date: 2023/8/10 14:54 + * @Description: 连接建立 */ @Data -@NoArgsConstructor @AllArgsConstructor -public class CGReceiveWarOrderPrizeMsg extends CGMessage { +@NoArgsConstructor +public class ChannelActiveEvent extends AnonEvent { - private Long prizeId; + private ChannelHandlerContext ctx; } diff --git a/paradogs-game/src/main/java/com/paradogs/game/message/GCBuyGoodsMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java similarity index 35% rename from paradogs-game/src/main/java/com/paradogs/game/message/GCBuyGoodsMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java index a7b0177..8c0b1b8 100644 --- a/paradogs-game/src/main/java/com/paradogs/game/message/GCBuyGoodsMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java @@ -1,21 +1,21 @@ -package com.paradogs.game.message; +package com.paradogs.common.core.events; -import com.paradogs.common.message.GCMessage; +import com.paradogs.common.core.events.base.AnonEvent; +import io.netty.channel.ChannelHandlerContext; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; /** * @author: yumi - * @date: 2023/2/19 11:38 - * @Description: TODO + * @date: 2023/8/10 14:57 + * @Description: 连接断开 */ @Data @AllArgsConstructor @NoArgsConstructor -@Accessors(chain = true) -public class GCBuyGoodsMsg extends GCMessage { +public class ChannelInactiveEvent extends AnonEvent { + + private ChannelHandlerContext ctx; - private String responseMsg; } diff --git a/paradogs-game/src/main/java/com/paradogs/game/message/CGLoginSuccessMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java similarity index 41% rename from paradogs-game/src/main/java/com/paradogs/game/message/CGLoginSuccessMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java index ea64106..064dfb6 100644 --- a/paradogs-game/src/main/java/com/paradogs/game/message/CGLoginSuccessMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java @@ -1,20 +1,21 @@ -package com.paradogs.game.message; +package com.paradogs.common.core.events; -import com.paradogs.common.message.CGMessage; +import com.paradogs.common.core.events.base.AnonEvent; +import com.paradogs.common.core.message.BaseMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * @author: yumi - * @date: 2023-03-03 15:59 + * @date: 2023/8/11 9:57 * @Description: TODO */ @Data @AllArgsConstructor @NoArgsConstructor -public class CGLoginSuccessMsg extends CGMessage { +public class ReceiveMsgEvent extends AnonEvent { - private Long playerId; + private T msg; } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java index 4d3b0ba..4826d5f 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java @@ -1,9 +1,9 @@ package com.paradogs.common.core.events; +import com.paradogs.common.core.events.base.BaseEvent; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import org.springframework.context.ApplicationEvent; import org.springframework.stereotype.Component; /** diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/AnonEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/AnonEvent.java similarity index 64% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/AnonEvent.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/AnonEvent.java index 018111b..8c4d652 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/AnonEvent.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/AnonEvent.java @@ -1,23 +1,19 @@ -package com.paradogs.common.core.events; - -import lombok.Data; -import lombok.Getter; -import lombok.Setter; - -import java.util.UUID; +package com.paradogs.common.core.events.base; /** * @author: yumi * @date: 2023/8/7 15:35 * @Description: 匿名事件,不记录事件发布者 */ -@Data public class AnonEvent extends BaseEvent { /** * ApplicationEvent 的 Object 参数用于记录发布事件的对象(发布者) */ public AnonEvent() { - super(new Object()); + super(new AnonObject()); } + + public static class AnonObject {} + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/BaseEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java similarity index 86% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/BaseEvent.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java index 4fbe28f..7200e0e 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/BaseEvent.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.events; +package com.paradogs.common.core.events.base; import lombok.Getter; import lombok.Setter; @@ -27,9 +27,9 @@ public class BaseEvent extends ApplicationEvent { */ private String id; - /** - * 创建时间,ApplicationEvent 自带 - */ +// /** +// * 创建时间,ApplicationEvent 自带 +// */ // private LocalDateTime createTime; public BaseEvent(Object source) { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/MsgSyncListener.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/MsgSyncListener.java new file mode 100644 index 0000000..59157a0 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/MsgSyncListener.java @@ -0,0 +1,15 @@ +package com.paradogs.common.core.listeners; + +/** + * @author: yumi + * @date: 2023/8/11 9:56 + * @Description: 消息同步监听器,主要用于请求 - 响应模式的消息处理 + */ +public class MsgSyncListener { + +// @EventListener(ReceiveMsgEvent.class) +// public void onReceiveMsgEvent(ReceiveMsgEvent event) { +// EventUtils.getMsgKey(event.getMsg().getMsgHeader().getRoute(), ) +// } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/listener/PdgEventListener.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java similarity index 64% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/listener/PdgEventListener.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java index 15d0b73..98c097b 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/listener/PdgEventListener.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java @@ -1,6 +1,7 @@ -package com.paradogs.common.core.events.listener; +package com.paradogs.common.core.listeners; import com.paradogs.common.core.annoations.PdgLoop; +import com.paradogs.common.core.message.MsgContextHolder; import com.paradogs.common.core.netty.events.MainLoopEvent; import com.paradogs.common.core.utils.SpringUtils; import lombok.extern.slf4j.Slf4j; @@ -25,35 +26,8 @@ import java.util.stream.Stream; @Component public class PdgEventListener { - /** - * 等待同步的请求消息 - */ - private Map waitSyncReqMsg = new LinkedHashMap<>(); - - /** - * 请求 - 响应类型的消息,进行请求消息的同步,将响应值给请求消息并执行回调 - * @param event - */ - @EventListener(SyncMsgEvent.class) - public void onSyncMsgEvent(SyncMsgEvent event) { - try { - Callable callable = waitSyncReqMsg.get(event.getRequestMsgId()); - if (callable == null) { - log.warn("MsgId [{}] 未找到,无法执行回调", event.getRequestMsgId()); - return; - } - // 执行回调 - callable.call(); - } catch (Exception e) { - throw new RuntimeException(e); - } finally { - // 移除等待同步记录 - waitSyncReqMsg.remove(event.getRequestMsgId()); - } - } - @EventListener(MainLoopEvent.class) - public void onMainLoopEvent() { + public void onMainLoopEvent(MainLoopEvent event) { for (Method method : SpringUtils.getMethodsWithAnnotation(PdgLoop.class)) { /** * 待优化:方法参数注入,其他地方也有,可以提取成一个方法 diff --git a/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/PlayerCurrency.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCClientInfoMsg.java similarity index 50% rename from paradogs-game/src/main/java/com/paradogs/game/pojo/blob/PlayerCurrency.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCClientInfoMsg.java index 902e050..b54aa9c 100644 --- a/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/PlayerCurrency.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCClientInfoMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.game.pojo.blob; +package com.paradogs.common.core.message; import lombok.AllArgsConstructor; import lombok.Data; @@ -6,22 +6,22 @@ import lombok.NoArgsConstructor; /** * @author: yumi - * @date: 2023-02-28 11:45 + * @date: 2023/8/10 15:33 * @Description: TODO */ @Data @AllArgsConstructor @NoArgsConstructor -public class PlayerCurrency extends BaseBlob { +public class GCClientInfoMsg extends GCMsg { /** - * 金币 + * 服务类型 */ - private Long gold; + private String serverType; /** - * 木材 + * 服务名称 */ - private Long wood; + private String serverName; } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCTestMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCTestMsg.java new file mode 100644 index 0000000..2197775 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCTestMsg.java @@ -0,0 +1,16 @@ +package com.paradogs.common.core.message; + +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * @author: yumi + * @date: 2023/8/8 13:40 + * @Description: TODO + */ +@Data +@AllArgsConstructor +public class GCTestMsg extends GCMsg { + + private String data; +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgContextHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgContextHolder.java new file mode 100644 index 0000000..1761845 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgContextHolder.java @@ -0,0 +1,51 @@ +package com.paradogs.common.core.message; + +import io.netty.channel.ChannelHandlerContext; +import lombok.*; + +/** + * @author: yumi + * @date: 2023/8/13 13:56 + * @Description: 消息上下文 + */ +@Data +public class MsgContextHolder { + + @Setter + @Getter + private static ChannelHandlerContext ctx; + + @Setter + @Getter + private static Long playerId; + + + public static void setContext(ChannelHandlerContext ctx, Long playerId) { + MsgContextHolder.ctx = ctx; + MsgContextHolder.playerId = playerId; + } + + public static void setContext(Snapshot snapshot) { + MsgContextHolder.ctx = snapshot.ctx; + MsgContextHolder.playerId = snapshot.playId; + } + + /** + * 返回当前上下文快照 + */ + public static MsgContextHolder.Snapshot getSnapshot() { + return new MsgContextHolder.Snapshot(MsgContextHolder.ctx, playerId); + } + + /** + * 快照,与 MsgContextHolder 属性相同 + */ + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class Snapshot { + private ChannelHandlerContext ctx; + private Long playId; + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java index ccd144c..4ac4e5a 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java @@ -11,11 +11,13 @@ import com.paradogs.common.core.utils.BeanUtils; import com.paradogs.common.core.utils.ProtoUtils; import com.paradogs.common.core.utils.SpringUtils; import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; import lombok.Data; import java.io.IOException; import java.time.LocalDateTime; import java.util.Date; +import java.util.UUID; /** @@ -35,7 +37,7 @@ public class MsgHeader implements IMsgSerializable { * 消息唯一 ID,用于请求 - 响应 */ @Protobuf(fieldType = FieldType.STRING, order = 1, required = false) - private String id; + private String id = UUID.randomUUID().toString(); /** * 消息类型,替代路由地址(java 使用类型对应,nodejs 可以使用字符串对应方法) @@ -52,6 +54,8 @@ public class MsgHeader implements IMsgSerializable { /** * 玩家 ID +// * 本框架设计用户必须登录后才能调用相关接口,如果用户未登录,则无法请求任何接口(原因是服务返回网关时,找不到对应的玩家返回) +// * 可以自己在玩家匿名时,设定一个 playerId,玩家登录后再设置玩家真实的 playerId */ @Protobuf(fieldType = FieldType.INT64, order = 3, required = false) private Long playerId; @@ -62,6 +66,21 @@ public class MsgHeader implements IMsgSerializable { @Protobuf(fieldType = FieldType.INT64, order = 4, required = false) private Long timestamp; + /** + * 回复的 CG 消息 ID + */ + @Protobuf(fieldType = FieldType.STRING, order = 5, required = false) + private String replyMsgId; + + /** + * >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 额外 Props + */ + + /** + * Channel 上下文 + */ + private ChannelHandlerContext ctx; + public MsgHeader() { // this.playerId = 1L; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/RouteMsgTargetResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/RouteMsgTargetResolver.java deleted file mode 100644 index b28a343..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/RouteMsgTargetResolver.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.paradogs.common.core.message; - -import com.paradogs.common.core.annoations.PdgMsg; -import com.paradogs.common.core.annoations.PdgMsgMapping; -import com.paradogs.common.core.utils.SpringUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.lang.reflect.Method; -import java.lang.reflect.Parameter; -import java.util.List; -import java.util.Map; -import java.util.stream.Stream; - -/** - * @author: yumi - * @date: 2023/8/7 9:24 - * @Description: TODO - */ -@Slf4j -@Component -public class RouteMsgTargetResolver extends MsgTargetResolver { - - @Override - public void initMsgMapping() { - - Map mappingMap = this.getMappingMap(); - - List methods = SpringUtils.getMethodsWithAnnotation(PdgMsgMapping.class); - for (Method method : methods) { - // 计算路由 - PdgMsgMapping parentRouteMapping = method.getDeclaringClass().getAnnotation(PdgMsgMapping.class); - String route = (parentRouteMapping != null ? parentRouteMapping.value() : "") + (method.getAnnotation(PdgMsgMapping.class).value().startsWith("/") ? "" : ".") + method.getAnnotation(PdgMsgMapping.class).value(); - if (mappingMap.containsKey(route)) { - throw new RuntimeException("Duplicate route found: [" + route + "]"); - } - // 保存 Msg 类型和要执行的方法 - Class targetMsgClass = null; - for (Parameter parameter : method.getParameters()) { - if (parameter.getAnnotation(PdgMsg.class) != null) { - targetMsgClass = (Class) parameter.getType(); - } - } - mappingMap.put(route, new MsgMapping(targetMsgClass, method)); - } - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/CmdMsgResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/CmdMsgResolver.java new file mode 100644 index 0000000..571252f --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/CmdMsgResolver.java @@ -0,0 +1,17 @@ +package com.paradogs.common.core.message.route; + +import com.paradogs.common.core.message.route.base.MsgTargetResolver; + +/** + * @author: yumi + * @date: 2023/8/11 11:31 + * @Description: TODO + * 未实现 + */ +@Deprecated +public class CmdMsgResolver extends MsgTargetResolver { + @Override + public void initMsgMapping() { + + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgMapping.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/MsgMapping.java similarity index 78% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgMapping.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/MsgMapping.java index c07c644..23b083b 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgMapping.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/MsgMapping.java @@ -1,5 +1,6 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.message.route; +import com.paradogs.common.core.message.BaseMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/RouteMsgResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/RouteMsgResolver.java new file mode 100644 index 0000000..24bf556 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/RouteMsgResolver.java @@ -0,0 +1,127 @@ +package com.paradogs.common.core.message.route; + +import com.paradogs.common.core.annoations.PdgMsg; +import com.paradogs.common.core.annoations.PdgMsgMapping; +import com.paradogs.common.core.annoations.PdgRPCMapping; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.message.route.base.MsgTargetResolver; +import com.paradogs.common.core.utils.SpringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.stereotype.Component; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @author: yumi + * @date: 2023/8/7 9:24 + * @Description: TODO + */ +@Slf4j +@Component +public class RouteMsgResolver extends MsgTargetResolver { + + @Override + public void initMsgMapping() { + + initControllerMapping(); + + initRpcRespMapping(); + + } + + /** + * 初始化接收消息的 controller 映射 + */ + private void initControllerMapping() { + Map mappingMap = this.getMappingMap(); + + List methods = SpringUtils.getMethodsWithAnnotation(PdgMsgMapping.class); + for (Method method : methods) { + // 计算路由 + PdgMsgMapping parentRouteMapping = AnnotationUtils.findAnnotation(method.getDeclaringClass(), PdgMsgMapping.class); + String route = (parentRouteMapping != null ? parentRouteMapping.value() : "") + (AnnotationUtils.findAnnotation(method, PdgMsgMapping.class).value().startsWith("/") ? "" : ".") + AnnotationUtils.findAnnotation(method, PdgMsgMapping.class).value(); + if (mappingMap.containsKey(route)) { + throw new RuntimeException("Duplicate route found: [" + route + "]"); + } + + // 保存 Msg 类型和要执行的方法 + Class targetMsgClass = null; + for (Parameter parameter : method.getParameters()) { + Annotation[] annotations = parameter.getAnnotations(); + System.out.println(annotations.length); + if (parameter.getAnnotation(PdgMsg.class) != null) { + targetMsgClass = (Class) parameter.getType(); + + } else { + // 如果只有一个 BaseMsg 参数,自动优化添加,等于加了 PdgMsg + List baseMsgList = Stream.of(method.getParameters()).filter(param -> param.getType().isAssignableFrom(BaseMsg.class)).collect(Collectors.toList()); + if (baseMsgList.size() == 1) { + targetMsgClass = (Class) parameter.getType(); + } + + } + } + mappingMap.put(route, new MsgMapping(targetMsgClass, method)); + } + } + +// /** +// * 初始化 rpc 的 |resp 路由 +// */ + private void initRpcRespMapping() { + Map mappingMap = this.getMappingMap(); + + List methods = SpringUtils.getMethodsWithAnnotation(PdgRPCMapping.class); + for (Method method : methods) { + // 计算路由 + PdgRPCMapping pdgRpc = AnnotationUtils.findAnnotation(method, PdgRPCMapping.class); + String route = pdgRpc.value() + "|resp"; + + if (mappingMap.containsKey(route)) { + throw new RuntimeException("Duplicate route found: [" + route + "]"); + } + + // 保存 Msg 类型和要执行的方法 + try { + Class targetMsgClass = (Class) method.getReturnType(); + + mappingMap.put(route, new MsgMapping(targetMsgClass, method)); + + } catch (Exception e) { + throw new RuntimeException("rpc[" + pdgRpc.value() + "] return must extends BaseMsg(?GCMsg)"); + } + + } + } + + // /** +// * 从方法中获取 BaseMsg 信息,有 PdgMsg 注解或仅有一个 BaseMsg 参数时返回 +// * @param method +// * @return +// */ + public static Class getOnlyBaseMsgTypeWithMethod(Method method) { + for (Parameter parameter : method.getParameters()) { + if (parameter.getAnnotation(PdgMsg.class) != null) { + return (Class) parameter.getType(); + + } else { + // 如果只有一个 BaseMsg 参数,自动优化添加,等于加了 PdgMsg + List baseMsgList = Stream.of(method.getParameters()).filter(param -> param.getType().isAssignableFrom(BaseMsg.class)).collect(Collectors.toList()); + if (baseMsgList.size() == 1) { + return (Class) parameter.getType(); + } + + } + } + return null; + } + + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgTargetResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/base/MsgTargetResolver.java similarity index 30% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgTargetResolver.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/base/MsgTargetResolver.java index d0eea97..1be95d4 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgTargetResolver.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/base/MsgTargetResolver.java @@ -1,14 +1,10 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.message.route.base; -import com.paradogs.common.core.annoations.PdgMsgMapping; -import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.common.core.message.route.MsgMapping; import lombok.Getter; import javax.annotation.PostConstruct; -import java.lang.reflect.Method; -import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.TreeMap; /** @@ -36,30 +32,4 @@ public abstract class MsgTargetResolver { return mappingMap.get(route); } -// public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { -// -// Class beanClass = bean.getClass(); -// Method[] methods = beanClass.getDeclaredMethods(); -// for (Method method : methods) { -// if (!method.isAnnotationPresent(PdgMsgMapping.class)) { -// continue; -// } -// -// PdgMsgMapping pdgMsgMapping = method.getAnnotation(PdgMsgMapping.class); -// PdgMsg pdgMsg = pdgMsgMapping.value().getDeclaredAnnotation(PdgMsg.class); -// -// if (pdgMsg == null) { -// log.error("@PdgMsgMapping class [{}] no has @PdgMsg", pdgMsgMapping.value()); -// throw new RuntimeException("@PdgMsgMapping class [{" + pdgMsgMapping.value() + "}] no has @PdgMsg"); -// } -// if (msgMappingByCmdMap.get(pdgMsg.value()) != null) { -// log.error("cmd [{}] already exists", pdgMsgMapping.value()); -// throw new RuntimeException("cmd [" + pdgMsgMapping.value() + "] already exists"); -// } -// msgMappingByCmdMap.put(pdgMsg.value(), new MsgMapping(pdgMsgMapping.value(), method)); -// } -// -// return bean; -// } - } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java index 88510ab..4e5d46f 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java @@ -1,13 +1,13 @@ package com.paradogs.common.core.netty.codec; import com.paradogs.common.core.message.*; -import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.message.route.MsgMapping; +import com.paradogs.common.core.message.route.base.MsgTargetResolver; import com.paradogs.common.core.utils.SpringUtils; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java index a063cbd..d6f325e 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java @@ -1,14 +1,13 @@ package com.paradogs.common.core.netty.codec; import com.paradogs.common.core.message.*; -import com.paradogs.common.core.utils.MsgUtils; -import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.common.core.message.route.MsgMapping; +import com.paradogs.common.core.message.route.base.MsgTargetResolver; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; -import io.netty.util.AttributeKey; import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -27,6 +26,9 @@ import java.util.List; @ConditionalOnProperty(name = "paradogs.server.connector", havingValue = "false", matchIfMissing = true) public class ServerCodec extends ByteToMessageCodec { + @Autowired + private MsgTargetResolver routeMsgResolver; + @Override protected void encode(ChannelHandlerContext ctx, BaseMsg msg, ByteBuf out) throws Exception { @@ -43,15 +45,9 @@ public class ServerCodec extends ByteToMessageCodec { msgHeader.deserialization(in); // 获取消息实际类型 - MsgMapping msgMapping = SpringUtils.getBean(MsgTargetResolver.class).getMsgMapping(msgHeader.getRouteMethod()); -// if (msgMapping == null) { -// // 这里 log 的次数可能会比实际消息数量少 -// log.error("route not found: [{}], readableBytes: [{}]", msgHeader.getRoute(), in.readableBytes()); -// in.clear(); -// return; -// } - - BaseMsg baseMsg = msgMapping != null && msgMapping.getMsgClass() != null + MsgMapping msgMapping = routeMsgResolver.getMsgMapping(msgHeader.getRouteMethod()); + + BaseMsg baseMsg = msgMapping != null && msgMapping.getMsgClass() != null && !msgMapping.getMsgClass().isAssignableFrom(void.class) ? msgMapping.getMsgClass().newInstance() : new ByteBodyMsg(); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java index b9331b5..42d4974 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java @@ -1,10 +1,7 @@ package com.paradogs.common.core.netty.events; -import com.paradogs.common.core.events.BaseEvent; +import com.paradogs.common.core.events.base.BaseEvent; import lombok.extern.slf4j.Slf4j; -import org.springframework.context.ApplicationEvent; - -import java.util.function.Consumer; /** * @author: yumi diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java index fe53840..d37c946 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java @@ -85,4 +85,5 @@ public abstract class BaseChannelInitializer extends ChannelInitializer extends SimpleChannelInb handler.handle(msg); } + /** + * 设置自定义参数 + */ + protected void setProps(ChannelHandlerContext ctx, T msg) { + } + + /** + * 设置消息上下文 + * @param ctx + * @param msg + */ + protected void setContext(ChannelHandlerContext ctx, T msg) { + MsgContextHolder.setCtx(ctx); + MsgContextHolder.setPlayerId(msg.getMsgHeader().getPlayerId()); + } + protected final void channelRead0(ChannelHandlerContext ctx, T msg) { + setProps(ctx, msg); + + setContext(ctx, msg); + try { if (queueManager == null) { this.queueManager = SpringUtils.getBean(QueueManager.class); @@ -69,13 +93,34 @@ public abstract class BaseMsgHandler extends SimpleChannelInb } catch (Exception e) { // 转发到全局异常处理 globalExceptionDispatch.forward(e); + + } finally { + EventUtils.publishEvent(new ReceiveMsgEvent(msg)); } } + /** + * 连接建立事件 + * @param ctx + * @throws Exception + */ @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { -// BaseMsg baseMsg = new BaseMsg(); -// log.info("send >> {}", baseMsg); -// MsgUtils.send(ctx.channel(), "_paradogs.dist", baseMsg); + EventUtils.publishEvent(new ChannelActiveEvent(ctx)); + } + + /** + * 连接断开事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelInactive(ChannelHandlerContext ctx) throws Exception { + EventUtils.publishEvent(new ChannelInactiveEvent(ctx)); + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + log.info("{}", cause.getMessage(), cause); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java index 3d9ced1..89462db 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java @@ -2,6 +2,7 @@ package com.paradogs.common.core.netty.pipelines; import com.paradogs.common.core.message.BaseMsg; import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.stereotype.Component; @@ -15,4 +16,13 @@ import org.springframework.stereotype.Component; @ChannelHandler.Sharable public class ServerMsgHandler extends BaseMsgHandler { + /** + * 设置相关参数 + * @param ctx + * @param msg + */ + @Override + protected void setProps(ChannelHandlerContext ctx, BaseMsg msg) { + msg.getMsgHeader().setCtx(ctx); + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java index 772c306..5a6c689 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java @@ -1,9 +1,10 @@ package com.paradogs.common.core.netty.queue; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.message.MsgMapping; -import com.paradogs.common.core.message.MsgTargetResolver; +import com.paradogs.common.core.message.*; +import com.paradogs.common.core.message.route.MsgMapping; +import com.paradogs.common.core.message.route.base.MsgTargetResolver; import com.paradogs.common.core.netty.events.MainLoopEvent; +import com.paradogs.common.core.utils.BeanUtils; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.MsgUtils; import com.paradogs.common.core.utils.SpringUtils; @@ -27,7 +28,7 @@ import java.util.stream.Stream; public class MainMsgConsumerThread extends QueueConsumerThread { @Autowired - private MsgTargetResolver msgTargetResolver; + private MsgTargetResolver routeMsgResolver; /** * 消息处理 @@ -38,25 +39,67 @@ public class MainMsgConsumerThread extends QueueConsumerThread { @Override public void handle(BaseMsg msg) throws InvocationTargetException, IllegalAccessException { - MsgMapping msgMapping = msgTargetResolver.getMsgMapping(msg.getMsgHeader().getRouteMethod()); + MsgMapping msgMapping = routeMsgResolver.getMsgMapping(msg.getMsgHeader().getRouteMethod()); + + if (msgMapping == null) { + log.error("msgMapping not found, route: [{}]", msg.getMsgHeader().getRouteMethod()); + return; + } Method method = msgMapping.getMethod(); Object pdgController = SpringUtils.getBean(method.getDeclaringClass()); if (pdgController == null) { log.error("class [{}] not managed by Spring", method.getDeclaringClass()); + return; } /** * 待优化:这里可以像 SpringMVC 一样,根据方法参数注入相关变量,目前暂时只有 BaseMsg */ - method.invoke( + Object result = method.invoke( pdgController, Stream.of(method.getParameterTypes()) .map(type -> msg.getClass().isAssignableFrom(type) ? msg : null) .toArray() ); + if (result == null) { + return; + } + if (!(result instanceof BaseMsg)) { + log.warn("{} return no extends BaseMsg", method.getName()); + return; + } + if (msg.getMsgHeader().getCtx() == null) { + log.warn("msgHeader no have ctx: {}", msg); + return; + } + if (msg.getMsgHeader().getCtx().channel() == null) { + log.warn("msgHeader no have ctx.channel: {}", msg); + return; + } + + // !! 如果把请求参数返回,返回值的类会和请求参数地址一样,英文就是 msg == gcMsg + // 准备返回消息 + BaseMsg gcMsg = (BaseMsg) result; + MsgHeader header = new MsgHeader(); + header.setPlayerId(msg.getMsgHeader().getPlayerId()); + header.setRoute(msg.getMsgHeader().getRouteMethod() + "|resp"); + header.setReplyMsgId(msg.getMsgHeader().getId()); + header.setCtx(msg.getMsgHeader().getCtx()); + gcMsg.setMsgHeader(header); + + /** + * 返回值作为消息返回给请求者 + */ + MsgUtils.send( + msg.getMsgHeader().getCtx().channel(), + msg.getMsgHeader().getRouteMethod(), + gcMsg + ); + log.info("reply >> {}", msg.getMsgHeader()); + } private MainLoopEvent mainLoopEvent = new MainLoopEvent(); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java index 03bbd4b..b69f15c 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java @@ -43,6 +43,6 @@ public class QueueProperties { /** * 是否开启消息队列处理消息,不开启则 MsgHandler 直接处理 */ - private boolean enable = true; + private boolean enable = false; } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBean.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBean.java new file mode 100644 index 0000000..e5e37e1 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBean.java @@ -0,0 +1,63 @@ +package com.paradogs.common.core.rpc; + +import org.springframework.beans.factory.FactoryBean; +import org.springframework.cglib.proxy.Enhancer; + +/** + * @author: yumi + * @date: 2023/8/13 9:37 + * @Description: TODO + */ +public class RPCProxyBean implements FactoryBean { + + /** + * 被代理的接口 + */ + private Class myInterfaceClass; + + /** + * 构造函数 + * @param myInterfaceClass 被代理的接口类型,该参数,由注解解析器自动赋值 + */ + public RPCProxyBean(Class myInterfaceClass) { + this.myInterfaceClass = myInterfaceClass; + } + + /** + * 返回该bean是否为单例类型 + * @return + */ + @Override + public boolean isSingleton() { + return FactoryBean.super.isSingleton(); + } + + /** + * 当 ioc 容器提取对象时,调用此方法获取一个代理对象 + * @return + * @throws Exception + */ + @Override + public T getObject() throws Exception { + + //用于创建代理对象的增强器,可以对目标对象进行扩展 + Enhancer enhancer = new Enhancer(); + //将目标对象设置为父类 + enhancer.setSuperclass(myInterfaceClass); + //设置目标拦截器 + enhancer.setCallback(new RPCProxyInterceptor()); + // 创建代理对象 + return (T)enhancer.create(); + + } + + /** + * 当 ioc 容器获取类型时,从此方法获取类型 + * @return + */ + @Override + public Class getObjectType() { + return myInterfaceClass; + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBeanImportSelector.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBeanImportSelector.java new file mode 100644 index 0000000..167637d --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBeanImportSelector.java @@ -0,0 +1,77 @@ +package com.paradogs.common.core.rpc; + +import com.paradogs.common.core.annoations.scans.InterfaceScan; +import com.paradogs.common.core.annoations.scans.RPCInterfaceScan; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.beans.factory.FactoryBean; +import org.springframework.beans.factory.config.BeanDefinitionHolder; +import org.springframework.beans.factory.support.AbstractBeanDefinition; +import org.springframework.beans.factory.support.DefaultListableBeanFactory; +import org.springframework.context.annotation.ImportSelector; +import org.springframework.core.type.AnnotationMetadata; +import org.springframework.util.CollectionUtils; + +import java.util.Map; +import java.util.Set; + +/** + * @author: yumi + * @date: 2023/8/13 16:39 + * @Description: TODO + */ +public class RPCProxyBeanImportSelector implements ImportSelector, BeanFactoryAware { + + private BeanFactory beanFactory; + + @Override + public void setBeanFactory(BeanFactory beanFactory) throws BeansException { + this.beanFactory = beanFactory; + } + + @Override + public String[] selectImports(AnnotationMetadata importingClassMetadata) { + // 转换为 DefaultListableBeanFactory 便于操作 + DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) beanFactory; + + // 获取自定义注解的具体数据信息 + Map annotationAttributes = importingClassMetadata.getAnnotationAttributes(RPCProxyBean.class.getName()); + + if (!CollectionUtils.isEmpty(annotationAttributes)) { + // 获取配置的扫描包路径 + String[] scanPackages = (String[]) annotationAttributes.get("scanPackages"); + + // 自定义扫描器,获取 BeanDefinitionHolder + RPCInterfaceScan rpcInterfaceScan = new RPCInterfaceScan(defaultListableBeanFactory); + Set beanDefinitionHolders = rpcInterfaceScan.doScan(scanPackages); + + // 循环处理每个被扫描到的bean对象,创建代理实现类 + for (BeanDefinitionHolder beanDefinitionHolder : beanDefinitionHolders) { + + // 转换为抽象实现,便于操作具体对象 + AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) beanDefinitionHolder.getBeanDefinition(); + + try { + + // 获取当前被扫描到到接口的具体 class name + String beanClassName = beanDefinition.getBeanClassName(); + // 装载 class + Class targetInterface = Class.forName(beanClassName); + + // 为该自定义的代理实现类,提供构造方法所需要的原始接口类型参数 + beanDefinition.getConstructorArgumentValues().addGenericArgumentValue(targetInterface); + + // 修改被扫描接口到具体实现类型,替换为自定义到代理实现类 + beanDefinition.setBeanClassName(RPCProxyBean.class.getName()); + + String beanName = beanDefinitionHolder.getBeanName(); + System.out.println("已修改===>" + beanName); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } + } + return new String[0]; + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyInterceptor.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyInterceptor.java new file mode 100644 index 0000000..e0cbd5b --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyInterceptor.java @@ -0,0 +1,97 @@ +package com.paradogs.common.core.rpc; + +import com.paradogs.common.core.annoations.PdgMsg; +import com.paradogs.common.core.annoations.PdgRPC; +import com.paradogs.common.core.annoations.PdgRPCMapping; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.message.MsgContextHolder; +import com.paradogs.common.core.utils.MsgUtils; +import org.springframework.aop.support.AopUtils; +import org.springframework.cglib.proxy.MethodInterceptor; +import org.springframework.cglib.proxy.MethodProxy; +import org.springframework.core.annotation.AnnotationUtils; + +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.concurrent.CompletableFuture; + +/** + * @author: yumi + * @date: 2023/8/13 9:40 + * @Description: TODO + */ +public class RPCProxyInterceptor implements MethodInterceptor { + + /** + * 执行方法拦截器 + * @param obj 被代理的目标对象实例对象,该对象为cglib代理实现,为自定义实现类 + * @param method 被代理接口正在执行的方法 + * @param args 被代理接口正在执行方法的参数 + * @param methodProxy methodProxy.invokeSuper() ?执行原本方法 + * @return 方法执行结果,如果方法无返回值,可以返回 null + * @throws Throwable + */ + @Override + public Object intercept(Object obj, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { + + PdgRPCMapping pdgRPCMapping = AnnotationUtils.findAnnotation(method, PdgRPCMapping.class); + if (pdgRPCMapping == null) { + return methodProxy.invokeSuper(obj, args); + } + + // 获取被代理目标的真实 class + Class targetClass = obj.getClass(); + boolean aopProxy = AopUtils.isAopProxy(obj); + if (aopProxy) { + targetClass = AopUtils.getTargetClass(obj); + } + + PdgRPC pdgRPC = AnnotationUtils.findAnnotation(targetClass, PdgRPC.class); + + // 获得参数消息 + BaseMsg requestMsg = null; + for (Object arg : args) { + PdgMsg requestAnnotation = AnnotationUtils.findAnnotation(arg.getClass(), PdgMsg.class); + if (requestAnnotation != null) { + try { + requestMsg = (BaseMsg) arg; + } catch (Exception e) { + throw new RuntimeException("@PdgMsg arg must extends BaseMsg: " + method.getName()); + } + } + + } + + // 获得返回值类型 + Class returnType = null; + // 获取方法的返回类型信息 + Type type = method.getGenericReturnType(); + + // 判断返回类型是否为参数化类型(即带有泛型参数) + if (type instanceof ParameterizedType) { + // 获取泛型参数的实际类型 + Type typeArg = ((ParameterizedType) type).getActualTypeArguments()[0]; + // 判断实际类型是否为 Class 对象 + if (typeArg instanceof Class) { + // 将实际类型转换为 Class 对象 + try { + returnType = (Class) typeArg; + } catch (Exception e) { + throw new RuntimeException("returnType[" + method.getReturnType() + "] must extends BaseMsg: " + method.getName()); + } + } + } + + + CompletableFuture promise = MsgUtils.request( + pdgRPC.value() + "." + pdgRPCMapping.value(), + requestMsg, + returnType + ); + + + + return promise; + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RpcResponseResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RpcResponseResolver.java new file mode 100644 index 0000000..a6b985b --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RpcResponseResolver.java @@ -0,0 +1,101 @@ +package com.paradogs.common.core.rpc; + +import com.paradogs.common.core.events.ReceiveMsgEvent; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.message.MsgContextHolder; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Consumer; +import java.util.function.Function; + +/** + * @author: yumi + * @date: 2023/8/11 13:45 + * @Description: RPC 响应处理 + */ +@Slf4j +@Component +public class RpcResponseResolver { + + /** + * 等待响应的消息 map + */ + private Map waitRespMap = new ConcurrentHashMap<>(); + + + /** + * 监听 rpc 响应 + * @param event + * @param + */ + @EventListener(ReceiveMsgEvent.class) + private void onRpcMsgResponse(ReceiveMsgEvent event) { + + if (!event.getMsg().getMsgHeader().getRoute().endsWith("|resp")) { + return; + } + try { + // 执行回调方法 + RespData respInfo = waitRespMap.get(getMsgKey(event.getMsg().getMsgHeader().getRoute(), event.getMsg().getMsgHeader().getReplyMsgId())); + if (respInfo != null && respInfo.getPromise() != null) { + // 设置上下文 + MsgContextHolder.setContext(respInfo.getMsgContextHolder()); + // 标记任务完成,执行回调 + respInfo.getPromise().complete(event.getMsg()); + } + + } finally { + // 处理完毕移除响应监听 + waitRespMap.remove(getMsgKey(event.getMsg())); + } + } + + /** + * 监听一次 + * @param route + * @param cgMsgId + * @param promise + */ + public void on4Once(String route, String cgMsgId, Class returnClass, CompletableFuture promise) { + this.waitRespMap.put(getMsgKey(route, cgMsgId), new RespData(returnClass, promise, MsgContextHolder.getSnapshot())); + } + + public static String getMsgKey(String route, String id) { + return route + id; + } + + public static String getMsgKey(T msg) { + return getMsgKey(msg.getMsgHeader().getRoute(), msg.getMsgHeader().getId()); + } + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class RespData { + + /** + * 返回消息类型 + */ + private Class returnClass; + + /** + * 回调方法 + */ + private CompletableFuture promise; + + /** + * 开始监听时的上下文状态 + */ + private MsgContextHolder.Snapshot msgContextHolder; + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java index fe4bcc5..d48c581 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java @@ -1,10 +1,16 @@ package com.paradogs.common.core.utils; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.rpc.RpcResponseResolver; +import org.apache.poi.ss.formula.functions.T; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.stereotype.Component; +import java.util.concurrent.CompletableFuture; +import java.util.function.Consumer; + /** * @author: yumi * @date: 2023/7/26 17:34 @@ -13,6 +19,8 @@ import org.springframework.stereotype.Component; @Component public class EventUtils implements ApplicationEventPublisherAware { + + /** * Spring 事件发布机制 */ @@ -27,8 +35,20 @@ public class EventUtils implements ApplicationEventPublisherAware { applicationEventPublisher.publishEvent(event); } + /** + * 监听一次 + * @param route + * @param cgMsgId + * @param callback + */ + public static void on4Once(String route, String cgMsgId, Class returnClass, CompletableFuture promise) { + SpringUtils.getBean(RpcResponseResolver.class).on4Once(route, cgMsgId, returnClass, promise); + } + + @Override public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { EventUtils.applicationEventPublisher = applicationEventPublisher; } + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java index 155b1d0..516be70 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java @@ -1,25 +1,15 @@ package com.paradogs.common.core.utils; -import com.paradogs.common.core.annoations.PdgMsg; -import com.paradogs.common.core.annoations.PdgMsgMapping; import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.message.CGMsg; +import com.paradogs.common.core.message.MsgContextHolder; import com.paradogs.common.core.message.MsgHeader; -import com.paradogs.common.core.message.MsgMapping; -import com.paradogs.common.core.message.MsgTargetResolver; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; -import java.lang.reflect.Method; -import java.util.Map; -import java.util.Optional; -import java.util.TreeMap; +import java.util.concurrent.CompletableFuture; + /** * @author: yumi @@ -31,12 +21,34 @@ import java.util.TreeMap; public class MsgUtils { public static void send(Channel channel, String route, BaseMsg msg) { - MsgHeader header = new MsgHeader(); - header.setRoute(route); - msg.setMsgHeader(header); + if (msg.getMsgHeader() == null) { + msg.setMsgHeader(new MsgHeader()); + } + msg.getMsgHeader().setRoute(route); channel.writeAndFlush(msg); } + /** + * 发起 rpc 请求 + * @param channel + * @param route 路由地址 + * @param msg 发送数据 + * @param returnClass 返回结果的消息类型 + * @param + */ + public static CompletableFuture request(Channel channel, String route, T msg, Class returnClass) { + CompletableFuture promise = new CompletableFuture<>(); + // 发起请求 + MsgUtils.send(channel, route, msg); + // 开启响应监听 + EventUtils.on4Once(route + "|resp", msg.getMsgHeader().getId(), returnClass, promise); + return promise; + } + + public static CompletableFuture request(String route, T msg, Class returnClass) { + return request(MsgContextHolder.getCtx().channel(), route, msg, returnClass); + } + // /** // * 消息 cmd - 消息类型 // */ diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java index 56e4ff9..a92aea9 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java @@ -1,7 +1,9 @@ package com.paradogs.common.core.utils; import com.paradogs.common.core.annoations.PdgLoop; +import com.paradogs.common.core.annoations.PdgMsgMapping; import org.springframework.aop.framework.AopContext; +import org.springframework.aop.support.AopUtils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; @@ -10,8 +12,18 @@ import org.springframework.cache.annotation.Cacheable; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; +import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.support.ResourcePatternResolver; +import org.springframework.core.type.classreading.MetadataReader; +import org.springframework.core.type.classreading.MetadataReaderFactory; +import org.springframework.core.type.filter.AnnotationTypeFilter; +import org.springframework.core.type.filter.TypeFilter; import org.springframework.stereotype.Component; +import org.springframework.util.ClassUtils; +import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.ArrayList; @@ -79,8 +91,8 @@ public final class SpringUtils implements BeanFactoryPostProcessor public static List getMethodsWithAnnotation(Class clz) { List loopMethod = new ArrayList<>(); for (Object bean : SpringUtils.getAllBeans().values()) { - for (Method method : bean.getClass().getDeclaredMethods()) { - if (method.isAnnotationPresent(clz)) { + for (Method method : AopUtils.getTargetClass(bean).getDeclaredMethods()) { + if (AnnotationUtils.findAnnotation(method, clz) != null) { loopMethod.add(method); } } diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index f84cfee..8086fee 100644 --- a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,10 +1,11 @@ com.paradogs.common.core.utils.SpringUtils com.paradogs.common.core.utils.EventUtils com.paradogs.common.core.utils.MsgUtils -com.paradogs.common.core.events.listener.PdgEventListener +com.paradogs.common.core.listeners.PdgEventListener -com.paradogs.common.core.message.RouteMsgTargetResolver +com.paradogs.common.core.message.route.RouteMsgResolver com.paradogs.common.core.message.CommonController +com.paradogs.common.core.rpc.RpcResponseResolver com.paradogs.common.core.netty.codec.CodecConfiguration @@ -17,3 +18,7 @@ com.paradogs.common.core.netty.protocol.ProtocolProperties com.paradogs.common.core.exceptions.base.GlobalExceptionDispatch +com.paradogs.common.core.annoations.resolvers.PdgRpcResolver + + + diff --git a/paradogs-common/paradogs-common-server-starter/pom.xml b/paradogs-common/paradogs-common-server-starter/pom.xml index cc9f3e8..d9c7c84 100644 --- a/paradogs-common/paradogs-common-server-starter/pom.xml +++ b/paradogs-common/paradogs-common-server-starter/pom.xml @@ -19,7 +19,7 @@ com.paradogs - paradogs-common-core + paradogs-common-client-starter diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerManager.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerManager.java new file mode 100644 index 0000000..2dffa86 --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerManager.java @@ -0,0 +1,26 @@ +package com.paradogs.common.server; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +import java.nio.channels.Channel; +import java.util.Map; + +/** + * @author: yumi + * @date: 2023/8/10 15:01 + * @Description: TODO + */ +@Slf4j +@Component +public class ServerManager { + +// private Map +// +// @EventListener +// public void onChannelActiveEvent() { +// +// } + +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java index c2bf4d3..7021664 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java @@ -38,6 +38,11 @@ public class ServerProperties { */ private String name; + /** + * 是否为 master,用于判断 master 不连接自身 + */ + private boolean isMaster = false; + public String getName() { if (StringUtils.isNotBlank(this.name)) { return this.name; diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerStartEvent.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerStartEvent.java index 4d124a6..56ba4e3 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerStartEvent.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerStartEvent.java @@ -1,9 +1,7 @@ package com.paradogs.common.server.events; -import com.paradogs.common.core.events.BaseEvent; -import lombok.Getter; -import lombok.Setter; -import org.springframework.stereotype.Component; +import com.paradogs.common.core.events.base.AnonEvent; +import lombok.Data; /** @@ -11,10 +9,8 @@ import org.springframework.stereotype.Component; * @date: 2023/7/29 9:18 * @Description: TODO */ -@Getter -@Setter -@Component -public class ServerStartEvent extends BaseEvent { +@Data +public class ServerStartEvent extends AnonEvent { /** * 启动耗时 @@ -22,6 +18,6 @@ public class ServerStartEvent extends BaseEvent { private Long startTimeout; public ServerStartEvent(Long startTimeout) { - super(startTimeout); + this.startTimeout = startTimeout; } } diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/Master.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/Master.java new file mode 100644 index 0000000..bc78b11 --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/Master.java @@ -0,0 +1,102 @@ +package com.paradogs.common.server.master; + +import com.paradogs.common.client.clients.ClientChannelInitializer; +import com.paradogs.common.client.events.ClientStartEvent; +import com.paradogs.common.core.message.GCClientInfoMsg; +import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.common.server.ServerProperties; +import io.netty.bootstrap.Bootstrap; +import io.netty.channel.Channel; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.nio.NioSocketChannel; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +/** + * @author: yumi + * @date: 2023/7/31 22:36 + * @Description: 用于连接 master 服务器 + */ +@Slf4j +public class Master { + + private Bootstrap master; + + @Getter + private Channel channel; + + private NioEventLoopGroup worker; + + private MasterProperties.MasterConfig properties; + + public Master(MasterProperties.MasterConfig masterConfig) { + this.properties = masterConfig; + } + + /** + * 启动 netty 服务器 + */ + public Master start() { + + try { + long startTime = System.currentTimeMillis(); + this.worker = new NioEventLoopGroup(); + + this.master = new Bootstrap() + .group(worker) + .channel(NioSocketChannel.class) + .handler(SpringUtils.getBean(ClientChannelInitializer.class)); + + + this.channel = master.connect(properties.getHost(), properties.getPort()).sync().channel(); + + // 连接成功 + EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); + + // 初始化数据 + ServerProperties serverProperties = SpringUtils.getBean(ServerProperties.class); + MsgUtils.request(this.channel, + "_init.clientInfo", + new GCClientInfoMsg(serverProperties.getType(), serverProperties.getName()), + GCClientInfoMsg.class + ).thenAccept(msg -> log.info("resp >> {}", msg)); + + channel.closeFuture().addListener(future -> { + log.info("[{}] server stop", this.properties.getName()); + }); + + return this; + + } catch (Exception e) { + log.error("server error:[{}]", e.getMessage(), e); + this.closeSync(); + } + + return this; + + } + + /** + * 同步关闭连接 + * ***ps: 关闭后进度未结束是因为消息处理队列还开着未关闭 + * @return + */ + public boolean closeSync() { + try { + if (this.channel.isOpen()) { + channel.close().sync(); + } + if (!worker.isShutdown()) { + worker.shutdownGracefully(); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + + } + +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterChannelInitializer.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterChannelInitializer.java new file mode 100644 index 0000000..c37e88a --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterChannelInitializer.java @@ -0,0 +1,43 @@ +package com.paradogs.common.server.master; + +import com.paradogs.common.core.message.GCClientInfoMsg; +import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; +import com.paradogs.common.core.utils.MsgUtils; +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelPipeline; +import io.netty.channel.socket.nio.NioSocketChannel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/7 15:31 + * @Description: TODO + */ +@Slf4j +@Component +@ChannelHandler.Sharable +public class MasterChannelInitializer extends BaseChannelInitializer { + + @Value("${paradogs.server.type}") + private String serverType; + + @Value("${paradogs.server.name}") + private String serverName; + + @Override + protected void initPipeline2(ChannelPipeline pipeline) { + } + + @Override + protected void initAfter(NioSocketChannel channel) { + } + + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + super.channelActive(ctx); + } + +} \ No newline at end of file diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java new file mode 100644 index 0000000..8447c4f --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java @@ -0,0 +1,61 @@ +package com.paradogs.common.server.master; + +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author: yumi + * @date: 2023/7/31 23:29 + * @Description: TODO + */ +@Slf4j +@Getter +@Component +public class MasterLauncher implements ApplicationRunner { + + @Autowired + private MasterProperties masterProperties; + + /** + * name[master] + */ + private Map masterMap = new HashMap<>(); + + + @Override + public void run(ApplicationArguments args) { + + if (masterProperties == null || masterProperties.getMasters() == null) { + return; +// throw new RuntimeException("no found masterProperties: null"); + } + + for (MasterProperties.MasterConfig masterConfig : masterProperties.getMasters()) { + if (masterMap.get(masterConfig.getName()) != null) { + log.error("master name dup"); + throw new RuntimeException("master 名称重复"); + } + masterMap.put(masterConfig.getName(), new Master(masterConfig).start()); + log.info("[{} /{}:{}] connect master success", masterConfig.getName(), masterConfig.getHost(), masterConfig.getPort()); + } + + + } + + /** + * 关闭所有 master 连接 + */ + public void closeAll() { + for (Master master : masterMap.values()) { + master.closeSync(); + } + } + +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterProperties.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterProperties.java new file mode 100644 index 0000000..f480303 --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterProperties.java @@ -0,0 +1,49 @@ +package com.paradogs.common.server.master; + +import com.paradogs.common.core.utils.StringUtils; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author: yumi + * @date: 2023/7/31 22:39 + * @Description: TODO + */ +@Data +@Component +@ConfigurationProperties("paradogs") +public class MasterProperties { + + private List masters; + + @Data + @Component + public static class MasterConfig { + /** + * 主机 ip + */ + private String host; + + /** + * 端口号 + */ + private int port; + + /** + * 服务名称 + */ + private String name; + + + public String getName() { + if (StringUtils.isBlank(this.name)) { + this.name = "Master"; + } + return name; + } + } + +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRpc.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRpc.java new file mode 100644 index 0000000..d9f17a0 --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRpc.java @@ -0,0 +1,21 @@ +package com.paradogs.common.server.rpc; + +import com.paradogs.common.core.annoations.PdgMsg; +import com.paradogs.common.core.annoations.PdgRPC; +import com.paradogs.common.core.annoations.PdgRPCMapping; +import com.paradogs.common.core.message.GCClientInfoMsg; + +import java.util.concurrent.CompletableFuture; + +/** + * @author: yumi + * @date: 2023/8/10 15:26 + * @Description: TODO + */ +@PdgRPC("master") +public interface InitRpc { + + @PdgRPCMapping("_init.clientInfo") + CompletableFuture getClientInfo(@PdgMsg GCClientInfoMsg msg); + +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/TestProcess.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/TestProcess.java new file mode 100644 index 0000000..3388874 --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/TestProcess.java @@ -0,0 +1,31 @@ +package com.paradogs.common.server.rpc; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; +import org.springframework.stereotype.Component; + +import java.util.Set; + + +/** + * @author: yumi + * @date: 2023/8/11 17:46 + * @Description: TODO + */ +@Slf4j +@Component +public class TestProcess extends ClassPathScanningCandidateComponentProvider { + + public TestProcess() { + super(false); + } + + + + @Override + public Set findCandidateComponents(String basePackage) { + System.out.println(">>>>>>>>>>>>>>>>>"); + return super.findCandidateComponents(basePackage); + } +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 2fa360c..452161a 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -3,4 +3,10 @@ com.paradogs.common.server.ServerProperties com.paradogs.common.server.ServerLauncher com.paradogs.common.server.ServerChannelInitializer +com.paradogs.common.server.master.Master +com.paradogs.common.server.master.MasterProperties +com.paradogs.common.server.master.MasterLauncher +com.paradogs.common.server.master.MasterChannelInitializer + +com.paradogs.common.server.rpc.TestProcess diff --git a/paradogs-common/paradogs-common-server-starter/src/main/resources/config/application.yml b/paradogs-common/paradogs-common-server-starter/src/main/resources/config/application.yml new file mode 100644 index 0000000..e69de29 diff --git a/paradogs-game/pom.xml b/paradogs-game/pom.xml deleted file mode 100644 index 944bba7..0000000 --- a/paradogs-game/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - paradogs - com.paradogs - 0.0.1-SNAPSHOT - - 4.0.0 - - paradogs-game - - - - - com.paradogs - paradogs-common-core - 0.0.1-SNAPSHOT - - - - - \ No newline at end of file diff --git a/paradogs-game/src/main/java/com/paradogs/game/GameApplication.java b/paradogs-game/src/main/java/com/paradogs/game/GameApplication.java deleted file mode 100644 index 2072755..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/GameApplication.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.paradogs.game; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.scheduling.annotation.EnableAsync; - -/** - * @author: yumi - * @date: 2023-02-24 09:18 - * @Description: TODO - */ -@SpringBootApplication -@EnableAsync -public class GameApplication { - public static void main(String[] args) { - SpringApplication.run(GameApplication.class, args); - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/handler/CGAttackMsgHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/CGAttackMsgHandler.java deleted file mode 100644 index d81dc59..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/handler/CGAttackMsgHandler.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.paradogs.game.handler; - -import com.paradogs.common.handler.BaseHandler; -import com.paradogs.common.utils.SpringUtils; -import com.paradogs.game.message.CGAttackMsg; -import com.paradogs.game.message.GCAttackMsg; -import com.paradogs.game.misc.GameRepository; -import com.paradogs.game.pojo.entity.Player; -import com.paradogs.game.pojo.excel.ExcelWarOrderTask; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-03-24 15:55 - * @Description: TODO - */ -@Slf4j -@Component -public class CGAttackMsgHandler implements BaseHandler { - - @Override - public void handler(Channel channel, CGAttackMsg msg) { - GameRepository repository = SpringUtils.getBean(GameRepository.class); - Player player = repository.getPlayer(msg.getMsgHeader().getPlayerId()); - - Long kills = Long.valueOf((int) (Math.random() * 10000)); - player.getBaseInfoManager().addKills(kills); - // 检查战令任务完成情况 - ExcelWarOrderTask task = new ExcelWarOrderTask(); - task.setTaskType(ExcelWarOrderTask.TASK_KILL); - task.setCompleteNum(kills); - player.getWarOrderManager().submitTaskProgress(task); - - GCAttackMsg gcMsg = msg.buildGC(); - gcMsg.setResult("本次攻击击杀了 " + kills + "个怪物"); - channel.writeAndFlush(gcMsg); - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/handler/CGBuyGoodsMsgHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/CGBuyGoodsMsgHandler.java deleted file mode 100644 index f6ea626..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/handler/CGBuyGoodsMsgHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.paradogs.game.handler; - -import com.paradogs.common.handler.CGHandler; -import com.paradogs.common.utils.Wrap; -import com.paradogs.game.message.CGBuyGoodsMsg; -import com.paradogs.game.misc.GameRepository; -import com.paradogs.game.pojo.entity.Player; -import com.paradogs.game.service.PlayerService; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/2/18 18:11 - * @Description: TODO - */ -@Slf4j -@Component -public class CGBuyGoodsMsgHandler implements CGHandler { - - @Autowired - private GameRepository repository; - - @Autowired - private PlayerService playerService; - - @Override - public void handler(Channel channel, CGBuyGoodsMsg msg) { - - Player player = repository.getOnlinePlayerMap().get(msg.getMsgHeader().getPlayerId()); - player.getWoodShopManager().buyGoods(channel, msg); - - } - - @Override - public void doDB(CGBuyGoodsMsg msg) { - - /** - * 更新玩家货币信息 - */ - Player player = playerService.getOne(Wrap.lbq().eq(Player::getId, msg.getMsgHeader().getPlayerId())); - - player.getCurrency().setGold(player.getCurrency().getGold() - repository.goodsMap.get(msg.getBuyGoodId()).getGold()); - player.getCurrency().setWood(player.getCurrency().getWood() + repository.goodsMap.get(msg.getBuyGoodId()).getWood()); - - playerService.updateById(player); - - } - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/handler/CGLoginSuccessMsgHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/CGLoginSuccessMsgHandler.java deleted file mode 100644 index 8c85f1a..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/handler/CGLoginSuccessMsgHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.paradogs.game.handler; - -import com.paradogs.common.handler.BaseHandler; -import com.paradogs.game.message.CGLoginSuccessMsg; -import com.paradogs.game.message.GCLoginSuccessMsg; -import com.paradogs.game.misc.GameRepository; -import com.paradogs.game.misc.PubSubManager; -import com.paradogs.game.pojo.entity.Player; -import com.paradogs.game.service.PlayerService; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-03-03 16:01 - * @Description: TODO - */ -@Slf4j -@Component -public class CGLoginSuccessMsgHandler implements BaseHandler { - - @Autowired - private GameRepository repository; - - @Autowired - private PlayerService playerService; - - @Autowired - private PubSubManager pubSubManager; - - @Override - public void handler(Channel channel, CGLoginSuccessMsg msg) { - - // 初始化玩家信息 - Player player = playerService.getById(msg.getPlayerId()); - player.init(); - repository.addOnlinePlayer(player.getId(), player); - - pubSubManager.publish(PubSubManager.PubType.LOGIN, msg.getPlayerId()); - channel.writeAndFlush(msg.buildGC()); - - } - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/handler/CGReceiveWarOrderPrizeMsgHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/CGReceiveWarOrderPrizeMsgHandler.java deleted file mode 100644 index 02018e3..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/handler/CGReceiveWarOrderPrizeMsgHandler.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.paradogs.game.handler; - -import com.paradogs.common.handler.BaseHandler; -import com.paradogs.common.utils.SpringUtils; -import com.paradogs.game.message.CGReceiveWarOrderPrizeMsg; -import com.paradogs.game.message.GCReceiveWarOrderPrizeMsg; -import com.paradogs.game.misc.GameRepository; -import com.paradogs.game.pojo.db.ModifyPlayerMsg; -import com.paradogs.game.pojo.entity.Player; -import com.paradogs.game.pojo.excel.ExcelWarOrderPrize; -import com.paradogs.game.service.impl.WarOrderServiceImpl; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-03-24 14:42 - * @Description: 请求领取战令奖励 Handler - */ -@Slf4j -@Component -public class CGReceiveWarOrderPrizeMsgHandler implements BaseHandler { - - @Override - public void handler(Channel channel, CGReceiveWarOrderPrizeMsg msg) { - GameRepository repository = SpringUtils.getBean(GameRepository.class); - WarOrderServiceImpl warOrderService = SpringUtils.getBean(WarOrderServiceImpl.class); - Player player = repository.getPlayer(msg.getMsgHeader().getPlayerId()); - - ExcelWarOrderPrize prize = warOrderService.getPrize(msg.getPrizeId()); - if (prize == null) { - GCReceiveWarOrderPrizeMsg gcMsg = msg.buildGC(); - gcMsg.setResult("该奖励不存在"); - channel.writeAndFlush(gcMsg); - return; - } - if (prize.getRoute().equals(ExcelWarOrderPrize.ROUTE_VIP) && !player.getWarOrderManager().getWarOrder().getIsVip()) { - GCReceiveWarOrderPrizeMsg gcMsg = msg.buildGC(); - gcMsg.setResult("该奖励只有 vip 才可以领取"); - channel.writeAndFlush(gcMsg); - return; - } - - if (player.getWarOrderManager().getWarOrder().getCurPoint() < prize.getNeedPoints()) { - GCReceiveWarOrderPrizeMsg gcMsg = msg.buildGC(); - gcMsg.setResult("未到达要求 " + prize.getNeedPoints() + "积分,你的积分:" + player.getWarOrderManager().getWarOrder().getCurPoint()); - channel.writeAndFlush(gcMsg); - return; - } - - if (player.getWarOrderManager().isReceived(prize.getPrizeId())) { - GCReceiveWarOrderPrizeMsg gcMsg = msg.buildGC(); - gcMsg.setResult("已经领取过了"); - channel.writeAndFlush(gcMsg); - return; - } - - // 奖励类型为金币 - if (prize.getPrizeType().equals(ExcelWarOrderPrize.PRIZE_GOLD)) { - try { - // 增加金币 - player.getCurrency().setGold(player.getCurrency().getGold() + prize.getItemNum()); - // 记录领取过的战令奖励 - player.getWarOrderManager().getWarOrder().getReceivePrizeId().add(prize.getPrizeId()); - // 持久化 - repository.pushDBMessage(new ModifyPlayerMsg(player)); - log.info("玩家 [{}] 领取战令奖励 [{}]", player.getId(), prize); - - GCReceiveWarOrderPrizeMsg gcMsg = msg.buildGC(); - gcMsg.setResult("领取成功"); - channel.writeAndFlush(gcMsg); - - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/handler/CGRechargeWarOrderVipMsgHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/CGRechargeWarOrderVipMsgHandler.java deleted file mode 100644 index a5a8ecb..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/handler/CGRechargeWarOrderVipMsgHandler.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.paradogs.game.handler; - -import com.paradogs.common.handler.BaseHandler; -import com.paradogs.common.utils.SpringUtils; -import com.paradogs.game.message.CGRechargeWarOrderVipMsg; -import com.paradogs.game.message.GCRechargeWarOrderVipMsg; -import com.paradogs.game.misc.GameRepository; -import com.paradogs.game.pojo.db.ModifyPlayerMsg; -import com.paradogs.game.pojo.entity.Player; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/3/26 13:50 - * @Description: TODO - */ -@Slf4j -@Component -public class CGRechargeWarOrderVipMsgHandler implements BaseHandler { - - @Override - public void handler(Channel channel, CGRechargeWarOrderVipMsg msg) { - GameRepository repository = SpringUtils.getBean(GameRepository.class); - Player player = repository.getPlayer(msg.getMsgHeader().getPlayerId()); - if (player.getWarOrderManager().getWarOrder().getIsVip()) { - GCRechargeWarOrderVipMsg gcMessage = msg.buildGC(); - gcMessage.setResult("已经是 vip"); - channel.writeAndFlush(gcMessage); - return; - } - - try { - player.getWarOrderManager().getWarOrder().setIsVip(true); - repository.pushDBMessage(new ModifyPlayerMsg(player)); - GCRechargeWarOrderVipMsg gcMessage = msg.buildGC(); - gcMessage.setResult("充值 vip 成功"); - channel.writeAndFlush(gcMessage); - } catch (InterruptedException e) { - log.error("持久化队列写入失败", e.getMessage()); - } - - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/handler/GCBuyGoodsMsgHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/GCBuyGoodsMsgHandler.java deleted file mode 100644 index 7c8c332..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/handler/GCBuyGoodsMsgHandler.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.paradogs.game.handler; - -import com.paradogs.common.handler.BaseHandler; -import com.paradogs.game.message.GCBuyGoodsMsg; -import io.netty.channel.Channel; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/2/19 11:41 - * @Description: TODO - */ -@Component -public class GCBuyGoodsMsgHandler implements BaseHandler { - - @Override - public void handler(Channel channel, GCBuyGoodsMsg msg) { - System.out.println(msg.getResponseMsg()); - } - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/handler/base/GameMessageHandler.java b/paradogs-game/src/main/java/com/paradogs/game/handler/base/GameMessageHandler.java deleted file mode 100644 index 04ee969..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/handler/base/GameMessageHandler.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.paradogs.game.handler.base; - -import com.paradogs.game.misc.GameRepository; -import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-03-13 16:08 - * @Description: TODO - */ -@Component -@Slf4j -@ChannelHandler.Sharable -public class GameMessageHandler extends SimpleChannelInboundHandler { - - @Autowired - private GameRepository repository; - - /** - * 处理消息 - * @param ctx - */ - @Override - protected void channelRead0(ChannelHandlerContext ctx, BaseMessage msg) throws InterruptedException { - - /** - * 加入处理队列 - */ - repository.pushCGMessage(msg); - - } - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/manager/BaseInfoManager.java b/paradogs-game/src/main/java/com/paradogs/game/manager/BaseInfoManager.java deleted file mode 100644 index fd593cb..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/manager/BaseInfoManager.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.paradogs.game.manager; - -import com.paradogs.game.pojo.blob.BaseInfo; -import com.paradogs.game.pojo.entity.Player; -import lombok.extern.slf4j.Slf4j; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023-03-21 16:28 - * @Description: TODO - */ -@Slf4j -public class BaseInfoManager implements BaseManager { - - private Player player; - private BaseInfo baseInfo; - - public BaseInfoManager(Player player, BaseInfo baseInfo) { - this.player = player; - this.baseInfo = baseInfo; - } - - /** - * 是否为今日首次登录 - */ - public Boolean isTodayFirstLogin() { - if (baseInfo.getLoginDays() == null || baseInfo.getLoginDays().size() == 0) { - return true; - } - - // 最近登录日期在今天之前 - return getLoginDateTime(baseInfo.getLoginDays().get(baseInfo.getLoginDays().size() - 1)).isBefore(getLoginDateTime(LocalDateTime.now())); - } - - /** - * 转换为登录整点时间,固定为实际日期 + 6点整,例:2023-03-21 06:00:00 - * @param localDateTime - * @return - */ - private LocalDateTime getLoginDateTime(LocalDateTime localDateTime) { - return localDateTime.minusHours(6).toLocalDate().atTime(6, 0, 0); - } - - @Override - public void heartBeat() { - - } - - /** - * 确认今日首次登录 - */ - public void submitFirstLogin() { - // 记录时间可能会有几毫秒误差 - baseInfo.getLoginDays().add(LocalDateTime.now()); - } - - /** - * 击杀后增加杀敌数 - * @param kills - */ - public void addKills(Long kills) { - - LocalDateTime dateTime = LocalDateTime.now(); - String date = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(dateTime); - Map killsMap = this.baseInfo.getKills(); - - // 按日期添加杀敌数 - if (killsMap.get(date) == null) { - killsMap.put(date, 0L); - } - killsMap.put(date, killsMap.get(date) + kills); - -// // 发布杀敌数改变通知 -// PubSubManager pubSubManager = SpringUtils.getBean(PubSubManager.class); -// pubSubManager.publish(PubSubManager.PubType.KILL_CHANGE, killsMap.get(date)); - - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/manager/BaseManager.java b/paradogs-game/src/main/java/com/paradogs/game/manager/BaseManager.java deleted file mode 100644 index 6d49d83..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/manager/BaseManager.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.paradogs.game.manager; - -/** - * @author: yumi - * @date: 2023-03-14 08:47 - * @Description: TODO - */ -public interface BaseManager { - - /** - * 周期性监测 - */ - void heartBeat(); - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/manager/WarOrderManager.java b/paradogs-game/src/main/java/com/paradogs/game/manager/WarOrderManager.java deleted file mode 100644 index 09e6dc6..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/manager/WarOrderManager.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.paradogs.game.manager; - -import com.paradogs.common.utils.SpringUtils; -import com.paradogs.game.misc.GameRepository; -import com.paradogs.game.misc.PubSubManager; -import com.paradogs.game.pojo.blob.WarOrder; -import com.paradogs.game.pojo.db.ModifyPlayerMsg; -import com.paradogs.game.pojo.entity.Player; -import com.paradogs.game.pojo.excel.ExcelWarOrderTask; -import com.paradogs.game.pojo.notify.CompleteTaskNotify; -import com.paradogs.game.service.impl.WarOrderServiceImpl; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023-03-20 15:44 - * @Description: 战令系统 - */ -@Slf4j -@Data -public class WarOrderManager implements BaseManager { - - private Player player; - - private WarOrder warOrder; - - private PubSubManager pubSubManager; - - private WarOrderServiceImpl warOrderService; - - - /** - * 初始化 - */ - public WarOrderManager(Player player, WarOrder warOrder) { - this.player = player; - this.warOrder = warOrder; - this.pubSubManager = SpringUtils.getBean(PubSubManager.class); - this.warOrderService = SpringUtils.getBean(WarOrderServiceImpl.class); - } - - @Override - public void heartBeat() { - for (Map.Entry entry : warOrder.getTaskInfoMap().entrySet()) { - Long taskId = entry.getKey(); - WarOrder.TaskInfo taskInfo = entry.getValue(); - - // 达到下一次任务刷新时间 - if (LocalDateTime.now().isAfter(taskInfo.getNextRefreshTime())) { - log.info("到达刷新时间 [{}], 重置任务 [{}],下次刷新时间 [{}]", - taskInfo.getNextRefreshTime(), - warOrderService.getTask(taskId), - taskInfo.getNextRefreshTime().plusDays(warOrderService.getTask(taskId).getResetNum())); - // 重置任务 - taskInfo.setCurCompleteNum(0L); - taskInfo.setCurCompleteTimes(0); - // 设置下一次任务刷新时间 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - ExcelWarOrderTask task = warOrderService.getTask(taskId); - LocalDateTime openTime = LocalDateTime.parse(task.getOpenTime(), formatter); - long nextRefreshDay = task.getResetNum() - (LocalDateTime.now().minusHours(6).toLocalDate().toEpochDay() - openTime.toLocalDate().toEpochDay()) % task.getResetNum(); - taskInfo.setNextRefreshTime(LocalDateTime.now().minusHours(6).toLocalDate().plusDays(nextRefreshDay).atTime(6, 0, 0)); - - // 持久化 - try { - SpringUtils.getBean(GameRepository.class).pushDBMessage(new ModifyPlayerMsg(player)); - } catch (InterruptedException e) { - log.error("刷新任务持久化异常", e.getMessage()); - } - } - } - - - } - - /** - * 提交检查任务进度 - * @param task - */ - public void submitTaskProgress(ExcelWarOrderTask task) { - - WarOrderServiceImpl warOrderService = SpringUtils.getBean(WarOrderServiceImpl.class); - warOrderService.getExcelWarOrderTasks() - .stream() - // 这里可以优化效率,可以按任务类型分类保存,不用每次都过滤列表 - .filter(item -> item.getTaskType().equals(task.getTaskType()) - // 还未完成 - && warOrder.getTaskInfo(item.getTaskId()).getCurCompleteNum() < item.getCompleteNum() - // 还有完成次数 - && warOrder.getTaskInfo(item.getTaskId()).getCurCompleteTimes() < item.getCanCompleteTimes() - ) - .forEach(item -> { - WarOrder.TaskInfo taskInfo = warOrder.getTaskInfo(item.getTaskId()); - taskInfo.setCurCompleteNum(taskInfo.getCurCompleteNum() + task.getCompleteNum()); - log.info("玩家 [{}] 任务 [{}],当前完成度 {}/{}", player.getId(), item.getTaskId(), taskInfo.getCurCompleteNum(), item.getCompleteNum()); - // 是否完成任务 - if (taskInfo.getCurCompleteNum() >= item.getCompleteNum()) { - // 发布订阅模式发布玩家完成任务通知 - CompleteTaskNotify notify = new CompleteTaskNotify(); - notify.setPlayerId(player.getId()); - notify.setTaskId(item.getTaskId()); - pubSubManager.publish(PubSubManager.PubType.COMPLETE_TASK, notify); - - // 增加战令积分 - this.warOrder.setCurPoint(this.warOrder.getCurPoint() + item.getPrizePoint()); - log.info("玩家 [{}] 增加战令积分 [{}]", player.getId(), item.getPrizePoint()); - - // 重置任务 - taskInfo.setCurCompleteNum(0L); - taskInfo.setCurCompleteTimes(taskInfo.getCurCompleteTimes() + 1); - - try { - // 加入 DB 队列,持久化 - ModifyPlayerMsg msg = new ModifyPlayerMsg(player); - msg.getMsgHeader().setPlayerId(player.getId()); - SpringUtils.getBean(GameRepository.class).pushDBMessage(msg); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - - log.info("玩家 [{}] 完成任务 [{}],剩余完成次数 {}/{}", - notify.getPlayerId(), item.getTaskName(), taskInfo.getCurCompleteTimes(), item.getCanCompleteTimes()); - - } - }); - - } - - /** - * 玩家是否领取过该奖励 - * @param prizeId - */ - public Boolean isReceived(Long prizeId) { - return this.getWarOrder().getReceivePrizeId().stream().anyMatch(prizeId::equals); - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/manager/WoodShopManager.java b/paradogs-game/src/main/java/com/paradogs/game/manager/WoodShopManager.java deleted file mode 100644 index 9cb3e79..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/manager/WoodShopManager.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.paradogs.game.manager; - -import com.paradogs.common.utils.SpringUtils; -import com.paradogs.game.message.CGBuyGoodsMsg; -import com.paradogs.game.misc.GameRepository; -import com.paradogs.game.message.GCBuyGoodsMsg; -import com.paradogs.game.pojo.blob.PlayerCurrency; -import com.paradogs.game.pojo.entity.Player; -import com.paradogs.game.pojo.excel.ExcelGoods; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; - -/** - * @author: yumi - * @date: 2023-03-14 08:47 - * @Description: TODO - */ -@Slf4j -public class WoodShopManager implements BaseManager { - - private GameRepository repository; - - private PlayerCurrency currency; - - private Player player; - - public WoodShopManager(Player player, PlayerCurrency currency) { - this.player = player; - this.repository = SpringUtils.getBean(GameRepository.class); - this.currency = currency; - } - - public void buyGoods(Channel channel, CGBuyGoodsMsg msg) { - - ExcelGoods goods = repository.goodsMap.get(msg.getBuyGoodId()); - - if (goods == null) { - channel.writeAndFlush(msg.buildGC().setResponseMsg("商品编号 [" + msg.getBuyGoodId() + "] 不存在")); - return; - } - - log.info("{}", msg.getMsgHeader().getPlayerId()); - - if (currency.getGold() >= goods.getGold()) { - try { - // 修改内存 - currency.setGold(currency.getGold() - goods.getGold()); - currency.setWood(currency.getWood() + goods.getWood()); - log.info("剩余:[{}]", currency); - - // 加入 DB 队列 - repository.pushDBMessage(msg); - - channel.writeAndFlush(msg.buildGC().setResponseMsg("购买 [" + goods.getName() + "] 成功")); - } catch (InterruptedException e) { - channel.writeAndFlush(msg.buildGC().setResponseMsg("购买 [" + goods.getName() + "] 失败,发生错误:" + e.getMessage())); - } - return; - } - - channel.writeAndFlush(msg.buildGC().setResponseMsg("购买 [" + goods.getName() + "] 失败,余额不足:" + currency)); - - } - - @Override - public void heartBeat() { - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/mapper/PlayerMapper.java b/paradogs-game/src/main/java/com/paradogs/game/mapper/PlayerMapper.java deleted file mode 100644 index afdd056..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/mapper/PlayerMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.paradogs.game.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.paradogs.game.pojo.entity.Player; -import org.apache.ibatis.annotations.Mapper; - -/** - * @author: yumi - * @date: 2023/2/18 14:55 - * @Description: TODO - */ -@Mapper -public interface PlayerMapper extends BaseMapper { -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/message/CGAttackMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/CGAttackMsg.java deleted file mode 100644 index 290f3d3..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/message/CGAttackMsg.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.paradogs.game.message; - -import com.paradogs.common.message.CGMessage; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023-03-24 15:51 - * @Description: 攻击动作 - */ -@Data -public class CGAttackMsg extends CGMessage { - // -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/message/CGBuyGoodsMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/CGBuyGoodsMsg.java deleted file mode 100644 index d47aba9..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/message/CGBuyGoodsMsg.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.paradogs.game.message; - -import com.paradogs.common.message.CGMessage; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.ToString; -import lombok.experimental.Accessors; - -/** - * @author: yumi - * @date: 2023/2/18 18:12 - * @Description: TODO - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@Accessors(chain = true) -@ToString(callSuper = true) -public class CGBuyGoodsMsg extends CGMessage { - - /** - * 购买的商品 ID - */ - private Long buyGoodId; -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/message/CGRechargeWarOrderVipMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/CGRechargeWarOrderVipMsg.java deleted file mode 100644 index e33dfaa..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/message/CGRechargeWarOrderVipMsg.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.paradogs.game.message; - -import com.paradogs.common.message.CGMessage; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023/3/26 13:49 - * @Description: 充值战令 VIP - */ -@Data -public class CGRechargeWarOrderVipMsg extends CGMessage { -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/message/GCAttackMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/GCAttackMsg.java deleted file mode 100644 index 7929045..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/message/GCAttackMsg.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.paradogs.game.message; - -import com.paradogs.common.message.GCMessage; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023-03-24 15:52 - * @Description: TODO - */ -@Data -public class GCAttackMsg extends GCMessage { - private String result; -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/message/GCLoginSuccessMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/GCLoginSuccessMsg.java deleted file mode 100644 index f6054a6..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/message/GCLoginSuccessMsg.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.paradogs.game.message; - -import com.paradogs.common.message.GCMessage; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023-03-03 15:58 - * @Description: TODO - */ -@Data -public class GCLoginSuccessMsg extends GCMessage { -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/message/GCReceiveWarOrderPrizeMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/GCReceiveWarOrderPrizeMsg.java deleted file mode 100644 index 4a016ec..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/message/GCReceiveWarOrderPrizeMsg.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.paradogs.game.message; - -import com.paradogs.common.message.GCMessage; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023-03-24 14:36 - * @Description: TODO - */ -@Data -public class GCReceiveWarOrderPrizeMsg extends GCMessage { - String result; -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/message/GCRechargeWarOrderVipMsg.java b/paradogs-game/src/main/java/com/paradogs/game/message/GCRechargeWarOrderVipMsg.java deleted file mode 100644 index a0fa86a..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/message/GCRechargeWarOrderVipMsg.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.paradogs.game.message; - -import com.paradogs.common.message.GCMessage; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023/3/26 13:49 - * @Description: TODO - */ -@Data -public class GCRechargeWarOrderVipMsg extends GCMessage { - - private String result; -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/misc/GameRepository.java b/paradogs-game/src/main/java/com/paradogs/game/misc/GameRepository.java deleted file mode 100644 index 0fae002..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/misc/GameRepository.java +++ /dev/null @@ -1,168 +0,0 @@ -package com.paradogs.game.misc; - -import com.paradogs.common.message.BaseMessage; -import com.paradogs.common.utils.ExcelUtils; -import com.paradogs.game.pojo.entity.Player; -import com.paradogs.game.pojo.excel.ExcelGoods; -import com.paradogs.game.server.thread.CGMainHandleThread; -import com.paradogs.game.server.thread.DBHandlerThread; -import io.netty.channel.Channel; -import lombok.Data; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; -import org.springframework.util.ResourceUtils; - -import javax.annotation.PostConstruct; -import java.io.FileNotFoundException; -import java.time.LocalDateTime; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.stream.Collectors; - -/** - * @author: yumi - * @date: 2023-03-03 16:02 - * @Description: TODO - */ -@Slf4j -@Data -@Component -public class GameRepository { - - /** - * 首次开服时间,用于计算 - */ - public static final LocalDateTime firstOpenTime = LocalDateTime.of(2023, 3, 25, 6, 0, 0); - - /** - * 在线玩家 - * - */ - public Map onlinePlayerMap; - - /** - * 木材商店 - */ - public Map goodsMap; - - @Value("${excel.folder-path}") - private String folderPath; - - /** - * 登录线程消息队列 - */ - private BlockingQueue loginQueue; - - /** - * 请求处理消息队列 - */ - private BlockingQueue CGMainQueue; - - /** - * 数据持久化队列,根据用户 ID 取模 - */ - private Map> DBQueueMap; - - @Getter - private Integer dbQueueSize = 3; - - /** - * 网关 - */ - private Channel gateChannel; - - /** - * 上下文信息,因为 netty 是单线程的,在每次消息进来时可以设置他的上下文 - * (暂时没有实现) - */ - // private xx xx; - - - // 构造函数在 @Value 注入之前执行 - public GameRepository() { - } - - // 注入完成之后执行 - @PostConstruct - public void init() { - - try { - this.onlinePlayerMap = new ConcurrentHashMap<>(); - this.goodsMap = new ConcurrentHashMap<>(); - - this.loginQueue = new LinkedBlockingQueue<>(); - this.CGMainQueue = new LinkedBlockingQueue<>(); - this.DBQueueMap = new HashMap<>(); - // 暂时 3 个队列处理 DB - for (int i = 0; i ()); - } - - this.onlinePlayerMap = new ConcurrentHashMap<>(); - this.goodsMap = ExcelUtils.read(ResourceUtils.getFile(folderPath + "木材商店.xlsx"), ExcelGoods.class) - .stream() - .collect(Collectors.toMap(ExcelGoods::getId, excelGoods -> excelGoods)); - log.info("[加载木材商店]"); - - - new CGMainHandleThread().start(); - log.info("[初始化 CGMain 处理线程]"); - for (int i = 0; i < this.getDbQueueSize(); i++) { - new DBHandlerThread(Long.valueOf(i)).start(); - } - log.info("[初始化 DB 处理线程]"); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - - } - - - - public void addOnlinePlayer(Long playerId, Player player) { - onlinePlayerMap.put(playerId, player); - } - - /** - * 添加请求消息 - * @param cgMessage - * @throws InterruptedException - */ - public void pushCGMessage(BaseMessage cgMessage) throws InterruptedException { - this.CGMainQueue.put(cgMessage); - } - - public void pushLoginMessage(BaseMessage cgMessage) throws InterruptedException { - this.loginQueue.put(cgMessage); - } - - public void pushDBMessage(BaseMessage cgMessage) throws InterruptedException { - this.DBQueueMap.get(Long.valueOf(cgMessage.getMsgHeader().getPlayerId()) % dbQueueSize).put(cgMessage); - } - - /** - * 取出请求消息 - * @throws InterruptedException - */ - public BaseMessage popCGMessage() throws InterruptedException { - return this.CGMainQueue.poll(); - } - - public BaseMessage popLoginMessage() throws InterruptedException { - return this.loginQueue.poll(); - } - - public BaseMessage popDBMessage(Long queueId) throws InterruptedException { - return this.DBQueueMap.get(queueId).poll(); - } - - public Player getPlayer(Long playerId) { - return onlinePlayerMap.get(playerId); - } - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/misc/ObjectAndByteArrayTypeHandler.java b/paradogs-game/src/main/java/com/paradogs/game/misc/ObjectAndByteArrayTypeHandler.java deleted file mode 100644 index 73e334e..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/misc/ObjectAndByteArrayTypeHandler.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.paradogs.game.misc; - -import com.paradogs.game.pojo.blob.BaseBlob; -import org.apache.ibatis.type.JdbcType; -import org.apache.ibatis.type.MappedJdbcTypes; -import org.apache.ibatis.type.MappedTypes; -import org.apache.ibatis.type.TypeHandler; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.sql.*; - -/** - * @author: yumi - * @date: 2023/2/19 10:34 - * @Description: Mybatis-plus 自定义数据转换,Obejct 存入数据库转 byte[] - */ -@MappedJdbcTypes(JdbcType.BLOB) //数据库类型 -@MappedTypes({BaseBlob.class}) // javaBean 类型 -public class ObjectAndByteArrayTypeHandler implements TypeHandler { // 泛型:javaBean 类型 - - /** - * 存入数据库前的转换 - * @param ps - * @param index - * @param baseBlob - * @param jdbcType - * @throws SQLException - */ - @Override - public void setParameter(PreparedStatement ps, int index, BaseBlob baseBlob, JdbcType jdbcType) throws SQLException { - try { - ps.setBlob(index, new ByteArrayInputStream(baseBlob.toByteArray())); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 数据库对象转 javaBean 对象前的转换 - * @param resultSet - * @param columnName - * @return - * @throws SQLException - */ - @Override - public BaseBlob getResult(ResultSet resultSet, String columnName) throws SQLException { - return blob2ByteArray(resultSet.getBlob(columnName)); - } - - @Override - public BaseBlob getResult(ResultSet resultSet, int columnIndex) throws SQLException { - return blob2ByteArray(resultSet.getBlob(columnIndex)); - } - - @Override - public BaseBlob getResult(CallableStatement callableStatement, int columnIndex) throws SQLException { - return blob2ByteArray(callableStatement.getBlob(columnIndex)); - } - - private BaseBlob blob2ByteArray(Blob blob) { - - try { - - ObjectInputStream ois = new ObjectInputStream(blob.getBinaryStream()); - return (BaseBlob) ois.readObject(); - - } catch (IOException e) { - return null; - } catch (SQLException throwables) { - throwables.printStackTrace(); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - return null; - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/misc/PubSubManager.java b/paradogs-game/src/main/java/com/paradogs/game/misc/PubSubManager.java deleted file mode 100644 index 4d796dd..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/misc/PubSubManager.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.paradogs.game.misc; - -import com.paradogs.game.misc.pubsub.base.Pub; -import com.paradogs.game.misc.pubsub.base.Sub; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * @author: yumi - * @date: 2023-03-20 15:49 - * @Description: TODO - */ -@Slf4j -@Component -public class PubSubManager { - - public enum PubType { - LOGIN, // 登录 - COMPLETE_TASK, // 完成任务 - KILL_CHANGE // 杀敌数改变 - } - - @Autowired - public Map pubMap; - - /** - * 订阅 - * @param pubType - * @param sub - */ - public Sub subscribe(PubType pubType, Sub sub) { - if (pubMap.get(pubType.name()) == null) { - log.error("找不到发布者 [{}]", pubType.name()); - } - pubMap.get(pubType.name()).subscribe(sub); - return sub; - } - - public void cancel(PubType pubType, Sub sub) { - pubMap.get(pubType.name()).unsubscribe(sub); - } - - public void publish(PubType pubType) { - pubMap.get(pubType.name()).emit(null); - } - - public void publish(PubType pubType, T obj) { - pubMap.get(pubType.name()).emit(obj); - } - - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/CompleteTaskPub.java b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/CompleteTaskPub.java deleted file mode 100644 index 1f6e6f1..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/CompleteTaskPub.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.paradogs.game.misc.pubsub; - -import com.paradogs.game.misc.pubsub.base.Pub; -import com.paradogs.game.misc.pubsub.base.Sub; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; - -/** - * @author: yumi - * @date: 2023-03-22 10:56 - * @Description: 完成任务发布 - */ -@Slf4j -@Component("COMPLETE_TASK") -public class CompleteTaskPub implements Pub { - - private List subs = new CopyOnWriteArrayList<>(); - - /** - * 发布通知 - */ - @Override - public void emit(T object) { - for (Sub sub : subs) { - sub.on(object); - } - } - - @Override - public void subscribe(Sub sub) { - subs.add(sub); - } - - @Override - public void unsubscribe(Sub sub) { - subs.remove(sub); - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/KillChangePub.java b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/KillChangePub.java deleted file mode 100644 index b8cf1fd..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/KillChangePub.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.paradogs.game.misc.pubsub; - -import com.paradogs.game.misc.pubsub.base.Pub; -import com.paradogs.game.misc.pubsub.base.Sub; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; - -/** - * @author: yumi - * @date: 2023-03-24 16:23 - * @Description: TODO - */ -@Component("KILL_CHANGE") -public class KillChangePub implements Pub { - - private List subs = new CopyOnWriteArrayList<>(); - - /** - * 发布通知 - */ - @Override - public void emit(T object) { - for (Sub sub : subs) { - sub.on(object); - } - } - - @Override - public void subscribe(Sub sub) { - subs.add(sub); - } - - @Override - public void unsubscribe(Sub sub) { - subs.remove(sub); - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/LoginPub.java b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/LoginPub.java deleted file mode 100644 index 698283b..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/LoginPub.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.paradogs.game.misc.pubsub; - -import com.paradogs.game.misc.pubsub.base.Pub; -import com.paradogs.game.misc.pubsub.base.Sub; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; - -/** - * 发布订阅通用的劣势是指定传参困难 - * @author: yumi - * @date: 2023-03-20 16:36 - * @Description: 登录发布 - */ -@Data -@Slf4j -@Component("LOGIN") -public class LoginPub implements Pub { - - private List subs = new CopyOnWriteArrayList<>(); - - /** - * 发布通知 - */ - @Override - public void emit(T object) { - for (Sub sub : subs) { - sub.on(object); - } - } - - @Override - public void subscribe(Sub sub) { - subs.add(sub); - } - - @Override - public void unsubscribe(Sub sub) { - subs.remove(sub); - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Pub.java b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Pub.java deleted file mode 100644 index 8b40d0e..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Pub.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.paradogs.game.misc.pubsub.base; - -/** - * @author: yumi - * @date: 2023-03-20 16:34 - * @Description: TODO - */ -public interface Pub { - - void emit(T object); - - void subscribe(Sub sub); - - void unsubscribe(Sub sub); - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Sub.java b/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Sub.java deleted file mode 100644 index 74b6517..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/misc/pubsub/base/Sub.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.paradogs.game.misc.pubsub.base; - -/** - * @author: yumi - * @date: 2023-03-20 15:47 - * @Description: 发布订阅,主题 - */ -public interface Sub { - void on(T object); -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseBlob.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseBlob.java deleted file mode 100644 index 3c7495d..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseBlob.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.paradogs.game.pojo.blob; - -import lombok.Data; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectOutputStream; -import java.io.Serializable; - -/** - * @author: yumi - * @date: 2023/2/19 10:24 - * @Description: TODO - */ -@Data -public class BaseBlob implements Serializable { - - public byte[] toByteArray() throws IOException { - ByteArrayOutputStream bo = new ByteArrayOutputStream(); - ObjectOutputStream oos = new ObjectOutputStream(bo); - oos.writeObject(this); - return bo.toByteArray(); - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseInfo.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseInfo.java deleted file mode 100644 index 8924e9b..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/BaseInfo.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.paradogs.game.pojo.blob; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.time.LocalDateTime; -import java.util.List; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023-03-21 16:37 - * @Description: TODO - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class BaseInfo extends BaseBlob { - - /** - * 登录天数 - */ - private List loginDays; - - /** - * 每日杀敌数 key: date, value: kills - */ - private Map kills; - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/WarOrder.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/WarOrder.java deleted file mode 100644 index f11dd4c..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/pojo/blob/WarOrder.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.paradogs.game.pojo.blob; - -import com.paradogs.common.utils.SpringUtils; -import com.paradogs.game.pojo.excel.ExcelWarOrderTask; -import com.paradogs.game.service.impl.WarOrderServiceImpl; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.List; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023-03-21 16:34 - * @Description: TODO - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class WarOrder extends BaseBlob { - - /** - * 当前战令积分 - */ - private Long curPoint; - - /** - * 是否为 vip - */ - private Boolean isVip; - - /** - * 已领取的奖励 ID - */ - private List receivePrizeId; - - /** - * 完成任务情况,key: 任务 ID,task: 任务情况 - * ps: 限时任务分为两种,一种全局,一种独立,全局和独立限时的时间都可以加在这里用作判断(暂时都是全局) - */ - private Map taskInfoMap; - - @Data - public static class TaskInfo implements Serializable { - /** - * 当前条件到达个数 - */ - private Long curCompleteNum = 0L; - - /** - * 当前完成次数 - */ - private Integer curCompleteTimes = 0; - - /** - * 下次刷新时间 - */ - private LocalDateTime nextRefreshTime; - } - - public TaskInfo getTaskInfo(Long taskId) { - // 如果为空则初始化 - if (taskInfoMap.get(taskId) == null) { - TaskInfo taskInfo = new TaskInfo(); - WarOrderServiceImpl warOrderService = SpringUtils.getBean(WarOrderServiceImpl.class); - ExcelWarOrderTask task = warOrderService.getTask(taskId); - - // 根据任务开启时间,获取下一次任务的刷新时间 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDateTime openTime = LocalDateTime.parse(task.getOpenTime(), formatter); - long nextRefreshDay = task.getResetNum() - (LocalDateTime.now().minusHours(6).toLocalDate().toEpochDay() - openTime.toLocalDate().toEpochDay()) % task.getResetNum(); - taskInfo.setNextRefreshTime(LocalDateTime.now().minusHours(6).toLocalDate().plusDays(nextRefreshDay).atTime(6, 0, 0)); - - taskInfoMap.put(taskId, taskInfo); - } - return taskInfoMap.get(taskId); - } - - public void putTaskInfo(Long taskId, TaskInfo taskInfo) { - taskInfoMap.put(taskId, taskInfo); - } - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/pojo/db/ModifyPlayerMsg.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/db/ModifyPlayerMsg.java deleted file mode 100644 index f908356..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/pojo/db/ModifyPlayerMsg.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.paradogs.game.pojo.db; - -import com.paradogs.common.message.BaseMessage; -import com.paradogs.game.pojo.entity.Player; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author: yumi - * @date: 2023-03-22 14:55 - * @Description: TODO - */ -@Data -@NoArgsConstructor -public class ModifyPlayerMsg extends BaseMessage { - - private Player player; - - public ModifyPlayerMsg(Player player) { - this.player = player; - this.getMsgHeader().setPlayerId(player.getId()); - } - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/pojo/entity/Player.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/entity/Player.java deleted file mode 100644 index f4a263e..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/pojo/entity/Player.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.paradogs.game.pojo.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.paradogs.game.manager.BaseInfoManager; -import com.paradogs.game.manager.WarOrderManager; -import com.paradogs.game.manager.WoodShopManager; -import com.paradogs.game.misc.ObjectAndByteArrayTypeHandler; -import com.paradogs.game.pojo.blob.BaseInfo; -import com.paradogs.game.pojo.blob.PlayerCurrency; -import com.paradogs.game.pojo.blob.WarOrder; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.extern.slf4j.Slf4j; - -import java.io.Serializable; - -/** - * @author: yumi - * @date: 2023/2/18 12:16 - * @Description: TODO - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -@TableName(value = "player", autoResultMap = true) -@Slf4j -public class Player implements Serializable { - - @TableId(type = IdType.AUTO) - private Long id; - - @TableField("account") - private String account; - - @TableField("pwd") - private String pwd; - - /** - * 货币 - */ - @TableField(value = "currency", typeHandler = ObjectAndByteArrayTypeHandler.class) - private PlayerCurrency currency; - - /** - * 战令 - */ - @TableField(value = "warOrder", typeHandler = ObjectAndByteArrayTypeHandler.class) - private WarOrder warOrder; - - /** - * 通用信息 - */ - @TableField(value = "baseInfo", typeHandler = ObjectAndByteArrayTypeHandler.class) - private BaseInfo baseInfo; - - /** - * 木材商店 - */ - @TableField(exist = false) - private WoodShopManager woodShopManager; - - /** - * 战令系统 - */ - @TableField(exist = false) - private WarOrderManager warOrderManager; - - /** - * 通用信息系统 - */ - @TableField(exist = false) - private BaseInfoManager baseInfoManager; - - public void init() { - this.woodShopManager = new WoodShopManager(this, currency); - this.warOrderManager = new WarOrderManager(this, warOrder); - this.baseInfoManager = new BaseInfoManager(this, baseInfo); - log.info("初始化玩家 [{}]", this.toString()); - } - - /** - * 周期性监测 - */ - public void heartBeat() { -// log.info("监测玩家 [{}]", account); - woodShopManager.heartBeat(); - warOrderManager.heartBeat(); - baseInfoManager.heartBeat(); - } - - - /** - * 重写解决 lombok toString() 循环引用问题 - * @return - */ - @Override - public String toString() { - return "Player{" + - "id=" + id + - ", account='" + account + '\'' + - ", pwd='" + pwd + '\'' + - ", currency=" + currency + - ", warOrder=" + warOrder + - ", baseInfo=" + baseInfo + - '}'; - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelDataTransformListener.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelDataTransformListener.java deleted file mode 100644 index 0132857..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelDataTransformListener.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.paradogs.game.pojo.excel; - -import com.alibaba.excel.context.AnalysisContext; -import com.alibaba.excel.event.AnalysisEventListener; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023/2/18 16:43 - * @Description: TODO - */ -@Slf4j -@Getter -public class ExcelDataTransformListener extends AnalysisEventListener { - - private List data = new ArrayList<>(); - - - /** - * Excel 获取到每一条数据都会执行一次 - * @param bean - * @param analysisContext - */ - @Override - public void invoke(T bean, AnalysisContext analysisContext) { - data.add(bean); -// log.info("add:[{}]", bean); - } - - /** - * 获取所有数据后执行 - * @param analysisContext - */ - @Override - public void doAfterAllAnalysed(AnalysisContext analysisContext) { -// log.info("表格读取完成"); - } - - - /** - * 读取表头信息 - * @param headMap - * @param context - */ - @Override - public void invokeHeadMap(Map headMap, AnalysisContext context) { -// log.info("表头信息:[{}]", headMap); - } - - - @Override - public void onException(Exception exception, AnalysisContext context) throws Exception { - log.error("表格读取发生异常:[{}]", exception.getMessage()); - } - - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelGoods.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelGoods.java deleted file mode 100644 index 7e4897d..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelGoods.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.paradogs.game.pojo.excel; - -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023/2/18 16:06 - * @Description: TODO - */ -@Data -public class ExcelGoods { - - @ExcelProperty("商品编号") - private Long id; - - @ExcelProperty("商品名称") - private String name; - - @ExcelProperty("花费金币") - private Long gold; - - @ExcelProperty("获得木材") - private Long wood; - - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderPrize.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderPrize.java deleted file mode 100644 index 9d32175..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderPrize.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.paradogs.game.pojo.excel; - -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023-03-21 17:53 - * @Description: 战令奖励 - */ -@Data -public class ExcelWarOrderPrize { - - // 奖励类型 - public static final String PRIZE_EXP = "经验"; // 经验(暂无) - public static final String PRIZE_ITEM = "物品"; // 物品(暂无) - public static final String PRIZE_GOLD = "金币"; // 金币 - public static final String PRIZE_WOOD = "木材"; // 木材 - - // 路线 - public static final String ROUTE_COMMON = "普通"; - public static final String ROUTE_VIP = "vip"; - - @ExcelProperty("奖励ID") - private Long prizeId; - - /** - * 需要到达积分 - */ - @ExcelProperty("需要到达积分") - private Long needPoints; - - /** - * 奖励类型 - */ - @ExcelProperty("奖励类型") - private String prizeType; - - /** - * 物品 ID - */ - @ExcelProperty("物品ID") - private Long itemId; - - /** - * 物品个数 - */ - @ExcelProperty("物品个数") - private Long itemNum; - - /** - * 路线 - */ - @ExcelProperty("路线") - private String route; - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderTask.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderTask.java deleted file mode 100644 index 0f1259e..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/pojo/excel/ExcelWarOrderTask.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.paradogs.game.pojo.excel; - -import com.alibaba.excel.annotation.ExcelIgnore; -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * @author: yumi - * @date: 2023-03-22 09:12 - * @Description: 战令任务 - */ -@Data -public class ExcelWarOrderTask { - - // 任务类型 - public static final String TASK_LOGIN = "登录"; - public static final String TASK_KILL = "杀敌数"; - - // 重置类型 - public static final String RESET_UNIT_YEAR = "年"; - public static final String RESET_UNIT_MONTH = "月"; - public static final String RESET_UNIT_DAY = "日"; - public static final String RESET_UNIT_HOUR = "时"; - public static final String RESET_UNIT_MINUTE = "分"; - public static final String RESET_UNIT_SECOND = "秒"; - public static final String RESET_UNIT_WEEK = "周"; - - /** - * 任务 ID - */ - @ExcelProperty("任务ID") - private Long taskId; - - /** - * 任务名称 - */ - @ExcelProperty("任务名称") - private String taskName; - - /** - * 任务完成条件(类型) - */ - @ExcelProperty("任务完成类型") - private String taskType; - - /** - * 条件到达个数(xx积分,xx时间) - */ - @ExcelProperty("任务条件到达个数") - private Long completeNum; - - /** - * 重置类型单位 - */ - @ExcelProperty("重置时间单位") - private String resetTypeUnit; - - /** - * 重置类型个数(x天,x周) - */ - @ExcelProperty("重置单位个数") - private Integer resetNum; - - /** - * 可完成次数 - */ - @ExcelProperty("可完成次数") - private Integer canCompleteTimes; - - /** - * 奖励积分 - */ - @ExcelProperty("奖励积分") - private Integer prizePoint; - - /** - * 开启时间 - */ - @ExcelProperty("开启时间") - private String openTime; - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/pojo/notify/CompleteTaskNotify.java b/paradogs-game/src/main/java/com/paradogs/game/pojo/notify/CompleteTaskNotify.java deleted file mode 100644 index a96c36b..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/pojo/notify/CompleteTaskNotify.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.paradogs.game.pojo.notify; - -import lombok.Data; - -/** - * @author: yumi - * @date: 2023-03-22 10:45 - * @Description: 完成任务的通知 - */ -@Data -public class CompleteTaskNotify { - - private Long playerId; - - private Long taskId; - -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/proto/ProtoMsg.java b/paradogs-game/src/main/java/com/paradogs/game/proto/ProtoMsg.java deleted file mode 100644 index 011be1d..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/proto/ProtoMsg.java +++ /dev/null @@ -1,4557 +0,0 @@ -package com.paradogs.game.proto;// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: Entity.proto - -public final class ProtoMsg { - private ProtoMsg() {} - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistryLite registry) { - } - - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistry registry) { - registerAllExtensions( - (com.google.protobuf.ExtensionRegistryLite) registry); - } - public interface CGLoginSuccessMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:CGLoginSuccessMsg) - com.google.protobuf.MessageOrBuilder { - - /** - * optional int64 playerId = 1; - */ - long getPlayerId(); - } - /** - * Protobuf type {@code CGLoginSuccessMsg} - */ - public static final class CGLoginSuccessMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:CGLoginSuccessMsg) - CGLoginSuccessMsgOrBuilder { - // Use CGLoginSuccessMsg.newBuilder() to construct. - private CGLoginSuccessMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private CGLoginSuccessMsg() { - playerId_ = 0L; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private CGLoginSuccessMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 8: { - - playerId_ = input.readInt64(); - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGLoginSuccessMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGLoginSuccessMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGLoginSuccessMsg.class, Builder.class); - } - - public static final int PLAYERID_FIELD_NUMBER = 1; - private long playerId_; - /** - * optional int64 playerId = 1; - */ - public long getPlayerId() { - return playerId_; - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (playerId_ != 0L) { - output.writeInt64(1, playerId_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (playerId_ != 0L) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(1, playerId_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof CGLoginSuccessMsg)) { - return super.equals(obj); - } - CGLoginSuccessMsg other = (CGLoginSuccessMsg) obj; - - boolean result = true; - result = result && (getPlayerId() - == other.getPlayerId()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + PLAYERID_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getPlayerId()); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static CGLoginSuccessMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGLoginSuccessMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGLoginSuccessMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGLoginSuccessMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGLoginSuccessMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGLoginSuccessMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static CGLoginSuccessMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static CGLoginSuccessMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static CGLoginSuccessMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGLoginSuccessMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(CGLoginSuccessMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code CGLoginSuccessMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:CGLoginSuccessMsg) - CGLoginSuccessMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGLoginSuccessMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGLoginSuccessMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGLoginSuccessMsg.class, Builder.class); - } - - // Construct using ProtoMsg.CGLoginSuccessMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - playerId_ = 0L; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_CGLoginSuccessMsg_descriptor; - } - - public CGLoginSuccessMsg getDefaultInstanceForType() { - return CGLoginSuccessMsg.getDefaultInstance(); - } - - public CGLoginSuccessMsg build() { - CGLoginSuccessMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public CGLoginSuccessMsg buildPartial() { - CGLoginSuccessMsg result = new CGLoginSuccessMsg(this); - result.playerId_ = playerId_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof CGLoginSuccessMsg) { - return mergeFrom((CGLoginSuccessMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(CGLoginSuccessMsg other) { - if (other == CGLoginSuccessMsg.getDefaultInstance()) return this; - if (other.getPlayerId() != 0L) { - setPlayerId(other.getPlayerId()); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - CGLoginSuccessMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (CGLoginSuccessMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private long playerId_ ; - /** - * optional int64 playerId = 1; - */ - public long getPlayerId() { - return playerId_; - } - /** - * optional int64 playerId = 1; - */ - public Builder setPlayerId(long value) { - - playerId_ = value; - onChanged(); - return this; - } - /** - * optional int64 playerId = 1; - */ - public Builder clearPlayerId() { - - playerId_ = 0L; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:CGLoginSuccessMsg) - } - - // @@protoc_insertion_point(class_scope:CGLoginSuccessMsg) - private static final CGLoginSuccessMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new CGLoginSuccessMsg(); - } - - public static CGLoginSuccessMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public CGLoginSuccessMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new CGLoginSuccessMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public CGLoginSuccessMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface GCLoginSuccessMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:GCLoginSuccessMsg) - com.google.protobuf.MessageOrBuilder { - } - /** - * Protobuf type {@code GCLoginSuccessMsg} - */ - public static final class GCLoginSuccessMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:GCLoginSuccessMsg) - GCLoginSuccessMsgOrBuilder { - // Use GCLoginSuccessMsg.newBuilder() to construct. - private GCLoginSuccessMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private GCLoginSuccessMsg() { - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private GCLoginSuccessMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCLoginSuccessMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCLoginSuccessMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCLoginSuccessMsg.class, Builder.class); - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof GCLoginSuccessMsg)) { - return super.equals(obj); - } - GCLoginSuccessMsg other = (GCLoginSuccessMsg) obj; - - boolean result = true; - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static GCLoginSuccessMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCLoginSuccessMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCLoginSuccessMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCLoginSuccessMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCLoginSuccessMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCLoginSuccessMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static GCLoginSuccessMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static GCLoginSuccessMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static GCLoginSuccessMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCLoginSuccessMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(GCLoginSuccessMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code GCLoginSuccessMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:GCLoginSuccessMsg) - GCLoginSuccessMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCLoginSuccessMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCLoginSuccessMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCLoginSuccessMsg.class, Builder.class); - } - - // Construct using ProtoMsg.GCLoginSuccessMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_GCLoginSuccessMsg_descriptor; - } - - public GCLoginSuccessMsg getDefaultInstanceForType() { - return GCLoginSuccessMsg.getDefaultInstance(); - } - - public GCLoginSuccessMsg build() { - GCLoginSuccessMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public GCLoginSuccessMsg buildPartial() { - GCLoginSuccessMsg result = new GCLoginSuccessMsg(this); - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof GCLoginSuccessMsg) { - return mergeFrom((GCLoginSuccessMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(GCLoginSuccessMsg other) { - if (other == GCLoginSuccessMsg.getDefaultInstance()) return this; - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - GCLoginSuccessMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (GCLoginSuccessMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:GCLoginSuccessMsg) - } - - // @@protoc_insertion_point(class_scope:GCLoginSuccessMsg) - private static final GCLoginSuccessMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new GCLoginSuccessMsg(); - } - - public static GCLoginSuccessMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public GCLoginSuccessMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new GCLoginSuccessMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public GCLoginSuccessMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface CGBuyGoodsMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:CGBuyGoodsMsg) - com.google.protobuf.MessageOrBuilder { - - /** - * optional int64 buyGoodId = 1; - */ - long getBuyGoodId(); - } - /** - * Protobuf type {@code CGBuyGoodsMsg} - */ - public static final class CGBuyGoodsMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:CGBuyGoodsMsg) - CGBuyGoodsMsgOrBuilder { - // Use CGBuyGoodsMsg.newBuilder() to construct. - private CGBuyGoodsMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private CGBuyGoodsMsg() { - buyGoodId_ = 0L; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private CGBuyGoodsMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 8: { - - buyGoodId_ = input.readInt64(); - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGBuyGoodsMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGBuyGoodsMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGBuyGoodsMsg.class, Builder.class); - } - - public static final int BUYGOODID_FIELD_NUMBER = 1; - private long buyGoodId_; - /** - * optional int64 buyGoodId = 1; - */ - public long getBuyGoodId() { - return buyGoodId_; - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (buyGoodId_ != 0L) { - output.writeInt64(1, buyGoodId_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (buyGoodId_ != 0L) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(1, buyGoodId_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof CGBuyGoodsMsg)) { - return super.equals(obj); - } - CGBuyGoodsMsg other = (CGBuyGoodsMsg) obj; - - boolean result = true; - result = result && (getBuyGoodId() - == other.getBuyGoodId()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + BUYGOODID_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getBuyGoodId()); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static CGBuyGoodsMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGBuyGoodsMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGBuyGoodsMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGBuyGoodsMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGBuyGoodsMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGBuyGoodsMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static CGBuyGoodsMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static CGBuyGoodsMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static CGBuyGoodsMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGBuyGoodsMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(CGBuyGoodsMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code CGBuyGoodsMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:CGBuyGoodsMsg) - CGBuyGoodsMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGBuyGoodsMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGBuyGoodsMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGBuyGoodsMsg.class, Builder.class); - } - - // Construct using ProtoMsg.CGBuyGoodsMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - buyGoodId_ = 0L; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_CGBuyGoodsMsg_descriptor; - } - - public CGBuyGoodsMsg getDefaultInstanceForType() { - return CGBuyGoodsMsg.getDefaultInstance(); - } - - public CGBuyGoodsMsg build() { - CGBuyGoodsMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public CGBuyGoodsMsg buildPartial() { - CGBuyGoodsMsg result = new CGBuyGoodsMsg(this); - result.buyGoodId_ = buyGoodId_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof CGBuyGoodsMsg) { - return mergeFrom((CGBuyGoodsMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(CGBuyGoodsMsg other) { - if (other == CGBuyGoodsMsg.getDefaultInstance()) return this; - if (other.getBuyGoodId() != 0L) { - setBuyGoodId(other.getBuyGoodId()); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - CGBuyGoodsMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (CGBuyGoodsMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private long buyGoodId_ ; - /** - * optional int64 buyGoodId = 1; - */ - public long getBuyGoodId() { - return buyGoodId_; - } - /** - * optional int64 buyGoodId = 1; - */ - public Builder setBuyGoodId(long value) { - - buyGoodId_ = value; - onChanged(); - return this; - } - /** - * optional int64 buyGoodId = 1; - */ - public Builder clearBuyGoodId() { - - buyGoodId_ = 0L; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:CGBuyGoodsMsg) - } - - // @@protoc_insertion_point(class_scope:CGBuyGoodsMsg) - private static final CGBuyGoodsMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new CGBuyGoodsMsg(); - } - - public static CGBuyGoodsMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public CGBuyGoodsMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new CGBuyGoodsMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public CGBuyGoodsMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface GCBuyGoodsMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:GCBuyGoodsMsg) - com.google.protobuf.MessageOrBuilder { - - /** - * optional string responseMsg = 1; - */ - String getResponseMsg(); - /** - * optional string responseMsg = 1; - */ - com.google.protobuf.ByteString - getResponseMsgBytes(); - } - /** - * Protobuf type {@code GCBuyGoodsMsg} - */ - public static final class GCBuyGoodsMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:GCBuyGoodsMsg) - GCBuyGoodsMsgOrBuilder { - // Use GCBuyGoodsMsg.newBuilder() to construct. - private GCBuyGoodsMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private GCBuyGoodsMsg() { - responseMsg_ = ""; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private GCBuyGoodsMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 10: { - String s = input.readStringRequireUtf8(); - - responseMsg_ = s; - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCBuyGoodsMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCBuyGoodsMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCBuyGoodsMsg.class, Builder.class); - } - - public static final int RESPONSEMSG_FIELD_NUMBER = 1; - private volatile Object responseMsg_; - /** - * optional string responseMsg = 1; - */ - public String getResponseMsg() { - Object ref = responseMsg_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - responseMsg_ = s; - return s; - } - } - /** - * optional string responseMsg = 1; - */ - public com.google.protobuf.ByteString - getResponseMsgBytes() { - Object ref = responseMsg_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - responseMsg_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (!getResponseMsgBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, responseMsg_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (!getResponseMsgBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, responseMsg_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof GCBuyGoodsMsg)) { - return super.equals(obj); - } - GCBuyGoodsMsg other = (GCBuyGoodsMsg) obj; - - boolean result = true; - result = result && getResponseMsg() - .equals(other.getResponseMsg()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + RESPONSEMSG_FIELD_NUMBER; - hash = (53 * hash) + getResponseMsg().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static GCBuyGoodsMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCBuyGoodsMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCBuyGoodsMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCBuyGoodsMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCBuyGoodsMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCBuyGoodsMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static GCBuyGoodsMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static GCBuyGoodsMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static GCBuyGoodsMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCBuyGoodsMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(GCBuyGoodsMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code GCBuyGoodsMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:GCBuyGoodsMsg) - GCBuyGoodsMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCBuyGoodsMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCBuyGoodsMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCBuyGoodsMsg.class, Builder.class); - } - - // Construct using ProtoMsg.GCBuyGoodsMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - responseMsg_ = ""; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_GCBuyGoodsMsg_descriptor; - } - - public GCBuyGoodsMsg getDefaultInstanceForType() { - return GCBuyGoodsMsg.getDefaultInstance(); - } - - public GCBuyGoodsMsg build() { - GCBuyGoodsMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public GCBuyGoodsMsg buildPartial() { - GCBuyGoodsMsg result = new GCBuyGoodsMsg(this); - result.responseMsg_ = responseMsg_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof GCBuyGoodsMsg) { - return mergeFrom((GCBuyGoodsMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(GCBuyGoodsMsg other) { - if (other == GCBuyGoodsMsg.getDefaultInstance()) return this; - if (!other.getResponseMsg().isEmpty()) { - responseMsg_ = other.responseMsg_; - onChanged(); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - GCBuyGoodsMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (GCBuyGoodsMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private Object responseMsg_ = ""; - /** - * optional string responseMsg = 1; - */ - public String getResponseMsg() { - Object ref = responseMsg_; - if (!(ref instanceof String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - responseMsg_ = s; - return s; - } else { - return (String) ref; - } - } - /** - * optional string responseMsg = 1; - */ - public com.google.protobuf.ByteString - getResponseMsgBytes() { - Object ref = responseMsg_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - responseMsg_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string responseMsg = 1; - */ - public Builder setResponseMsg( - String value) { - if (value == null) { - throw new NullPointerException(); - } - - responseMsg_ = value; - onChanged(); - return this; - } - /** - * optional string responseMsg = 1; - */ - public Builder clearResponseMsg() { - - responseMsg_ = getDefaultInstance().getResponseMsg(); - onChanged(); - return this; - } - /** - * optional string responseMsg = 1; - */ - public Builder setResponseMsgBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - responseMsg_ = value; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:GCBuyGoodsMsg) - } - - // @@protoc_insertion_point(class_scope:GCBuyGoodsMsg) - private static final GCBuyGoodsMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new GCBuyGoodsMsg(); - } - - public static GCBuyGoodsMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public GCBuyGoodsMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new GCBuyGoodsMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public GCBuyGoodsMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface CGReceiveWarOrderPrizeMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:CGReceiveWarOrderPrizeMsg) - com.google.protobuf.MessageOrBuilder { - - /** - * optional int64 prizeId = 1; - */ - long getPrizeId(); - } - /** - * Protobuf type {@code CGReceiveWarOrderPrizeMsg} - */ - public static final class CGReceiveWarOrderPrizeMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:CGReceiveWarOrderPrizeMsg) - CGReceiveWarOrderPrizeMsgOrBuilder { - // Use CGReceiveWarOrderPrizeMsg.newBuilder() to construct. - private CGReceiveWarOrderPrizeMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private CGReceiveWarOrderPrizeMsg() { - prizeId_ = 0L; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private CGReceiveWarOrderPrizeMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 8: { - - prizeId_ = input.readInt64(); - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGReceiveWarOrderPrizeMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGReceiveWarOrderPrizeMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGReceiveWarOrderPrizeMsg.class, Builder.class); - } - - public static final int PRIZEID_FIELD_NUMBER = 1; - private long prizeId_; - /** - * optional int64 prizeId = 1; - */ - public long getPrizeId() { - return prizeId_; - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (prizeId_ != 0L) { - output.writeInt64(1, prizeId_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (prizeId_ != 0L) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(1, prizeId_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof CGReceiveWarOrderPrizeMsg)) { - return super.equals(obj); - } - CGReceiveWarOrderPrizeMsg other = (CGReceiveWarOrderPrizeMsg) obj; - - boolean result = true; - result = result && (getPrizeId() - == other.getPrizeId()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + PRIZEID_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getPrizeId()); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static CGReceiveWarOrderPrizeMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGReceiveWarOrderPrizeMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGReceiveWarOrderPrizeMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGReceiveWarOrderPrizeMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGReceiveWarOrderPrizeMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGReceiveWarOrderPrizeMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static CGReceiveWarOrderPrizeMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static CGReceiveWarOrderPrizeMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static CGReceiveWarOrderPrizeMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGReceiveWarOrderPrizeMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(CGReceiveWarOrderPrizeMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code CGReceiveWarOrderPrizeMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:CGReceiveWarOrderPrizeMsg) - CGReceiveWarOrderPrizeMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGReceiveWarOrderPrizeMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGReceiveWarOrderPrizeMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGReceiveWarOrderPrizeMsg.class, Builder.class); - } - - // Construct using ProtoMsg.CGReceiveWarOrderPrizeMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - prizeId_ = 0L; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_CGReceiveWarOrderPrizeMsg_descriptor; - } - - public CGReceiveWarOrderPrizeMsg getDefaultInstanceForType() { - return CGReceiveWarOrderPrizeMsg.getDefaultInstance(); - } - - public CGReceiveWarOrderPrizeMsg build() { - CGReceiveWarOrderPrizeMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public CGReceiveWarOrderPrizeMsg buildPartial() { - CGReceiveWarOrderPrizeMsg result = new CGReceiveWarOrderPrizeMsg(this); - result.prizeId_ = prizeId_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof CGReceiveWarOrderPrizeMsg) { - return mergeFrom((CGReceiveWarOrderPrizeMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(CGReceiveWarOrderPrizeMsg other) { - if (other == CGReceiveWarOrderPrizeMsg.getDefaultInstance()) return this; - if (other.getPrizeId() != 0L) { - setPrizeId(other.getPrizeId()); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - CGReceiveWarOrderPrizeMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (CGReceiveWarOrderPrizeMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private long prizeId_ ; - /** - * optional int64 prizeId = 1; - */ - public long getPrizeId() { - return prizeId_; - } - /** - * optional int64 prizeId = 1; - */ - public Builder setPrizeId(long value) { - - prizeId_ = value; - onChanged(); - return this; - } - /** - * optional int64 prizeId = 1; - */ - public Builder clearPrizeId() { - - prizeId_ = 0L; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:CGReceiveWarOrderPrizeMsg) - } - - // @@protoc_insertion_point(class_scope:CGReceiveWarOrderPrizeMsg) - private static final CGReceiveWarOrderPrizeMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new CGReceiveWarOrderPrizeMsg(); - } - - public static CGReceiveWarOrderPrizeMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public CGReceiveWarOrderPrizeMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new CGReceiveWarOrderPrizeMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public CGReceiveWarOrderPrizeMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface GCReceiveWarOrderPrizeMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:GCReceiveWarOrderPrizeMsg) - com.google.protobuf.MessageOrBuilder { - - /** - * optional string result = 1; - */ - String getResult(); - /** - * optional string result = 1; - */ - com.google.protobuf.ByteString - getResultBytes(); - } - /** - * Protobuf type {@code GCReceiveWarOrderPrizeMsg} - */ - public static final class GCReceiveWarOrderPrizeMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:GCReceiveWarOrderPrizeMsg) - GCReceiveWarOrderPrizeMsgOrBuilder { - // Use GCReceiveWarOrderPrizeMsg.newBuilder() to construct. - private GCReceiveWarOrderPrizeMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private GCReceiveWarOrderPrizeMsg() { - result_ = ""; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private GCReceiveWarOrderPrizeMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 10: { - String s = input.readStringRequireUtf8(); - - result_ = s; - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCReceiveWarOrderPrizeMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCReceiveWarOrderPrizeMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCReceiveWarOrderPrizeMsg.class, Builder.class); - } - - public static final int RESULT_FIELD_NUMBER = 1; - private volatile Object result_; - /** - * optional string result = 1; - */ - public String getResult() { - Object ref = result_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - result_ = s; - return s; - } - } - /** - * optional string result = 1; - */ - public com.google.protobuf.ByteString - getResultBytes() { - Object ref = result_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - result_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (!getResultBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, result_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (!getResultBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, result_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof GCReceiveWarOrderPrizeMsg)) { - return super.equals(obj); - } - GCReceiveWarOrderPrizeMsg other = (GCReceiveWarOrderPrizeMsg) obj; - - boolean result = true; - result = result && getResult() - .equals(other.getResult()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + RESULT_FIELD_NUMBER; - hash = (53 * hash) + getResult().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static GCReceiveWarOrderPrizeMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCReceiveWarOrderPrizeMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCReceiveWarOrderPrizeMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCReceiveWarOrderPrizeMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCReceiveWarOrderPrizeMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCReceiveWarOrderPrizeMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static GCReceiveWarOrderPrizeMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static GCReceiveWarOrderPrizeMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static GCReceiveWarOrderPrizeMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCReceiveWarOrderPrizeMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(GCReceiveWarOrderPrizeMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code GCReceiveWarOrderPrizeMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:GCReceiveWarOrderPrizeMsg) - GCReceiveWarOrderPrizeMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCReceiveWarOrderPrizeMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCReceiveWarOrderPrizeMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCReceiveWarOrderPrizeMsg.class, Builder.class); - } - - // Construct using ProtoMsg.GCReceiveWarOrderPrizeMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - result_ = ""; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_GCReceiveWarOrderPrizeMsg_descriptor; - } - - public GCReceiveWarOrderPrizeMsg getDefaultInstanceForType() { - return GCReceiveWarOrderPrizeMsg.getDefaultInstance(); - } - - public GCReceiveWarOrderPrizeMsg build() { - GCReceiveWarOrderPrizeMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public GCReceiveWarOrderPrizeMsg buildPartial() { - GCReceiveWarOrderPrizeMsg result = new GCReceiveWarOrderPrizeMsg(this); - result.result_ = result_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof GCReceiveWarOrderPrizeMsg) { - return mergeFrom((GCReceiveWarOrderPrizeMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(GCReceiveWarOrderPrizeMsg other) { - if (other == GCReceiveWarOrderPrizeMsg.getDefaultInstance()) return this; - if (!other.getResult().isEmpty()) { - result_ = other.result_; - onChanged(); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - GCReceiveWarOrderPrizeMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (GCReceiveWarOrderPrizeMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private Object result_ = ""; - /** - * optional string result = 1; - */ - public String getResult() { - Object ref = result_; - if (!(ref instanceof String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - result_ = s; - return s; - } else { - return (String) ref; - } - } - /** - * optional string result = 1; - */ - public com.google.protobuf.ByteString - getResultBytes() { - Object ref = result_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - result_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string result = 1; - */ - public Builder setResult( - String value) { - if (value == null) { - throw new NullPointerException(); - } - - result_ = value; - onChanged(); - return this; - } - /** - * optional string result = 1; - */ - public Builder clearResult() { - - result_ = getDefaultInstance().getResult(); - onChanged(); - return this; - } - /** - * optional string result = 1; - */ - public Builder setResultBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - result_ = value; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:GCReceiveWarOrderPrizeMsg) - } - - // @@protoc_insertion_point(class_scope:GCReceiveWarOrderPrizeMsg) - private static final GCReceiveWarOrderPrizeMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new GCReceiveWarOrderPrizeMsg(); - } - - public static GCReceiveWarOrderPrizeMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public GCReceiveWarOrderPrizeMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new GCReceiveWarOrderPrizeMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public GCReceiveWarOrderPrizeMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface CGAttackMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:CGAttackMsg) - com.google.protobuf.MessageOrBuilder { - } - /** - * Protobuf type {@code CGAttackMsg} - */ - public static final class CGAttackMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:CGAttackMsg) - CGAttackMsgOrBuilder { - // Use CGAttackMsg.newBuilder() to construct. - private CGAttackMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private CGAttackMsg() { - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private CGAttackMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGAttackMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGAttackMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGAttackMsg.class, Builder.class); - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof CGAttackMsg)) { - return super.equals(obj); - } - CGAttackMsg other = (CGAttackMsg) obj; - - boolean result = true; - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static CGAttackMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGAttackMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGAttackMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGAttackMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGAttackMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGAttackMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static CGAttackMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static CGAttackMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static CGAttackMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGAttackMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(CGAttackMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code CGAttackMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:CGAttackMsg) - CGAttackMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGAttackMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGAttackMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGAttackMsg.class, Builder.class); - } - - // Construct using ProtoMsg.CGAttackMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_CGAttackMsg_descriptor; - } - - public CGAttackMsg getDefaultInstanceForType() { - return CGAttackMsg.getDefaultInstance(); - } - - public CGAttackMsg build() { - CGAttackMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public CGAttackMsg buildPartial() { - CGAttackMsg result = new CGAttackMsg(this); - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof CGAttackMsg) { - return mergeFrom((CGAttackMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(CGAttackMsg other) { - if (other == CGAttackMsg.getDefaultInstance()) return this; - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - CGAttackMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (CGAttackMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:CGAttackMsg) - } - - // @@protoc_insertion_point(class_scope:CGAttackMsg) - private static final CGAttackMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new CGAttackMsg(); - } - - public static CGAttackMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public CGAttackMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new CGAttackMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public CGAttackMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface GCAttackMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:GCAttackMsg) - com.google.protobuf.MessageOrBuilder { - - /** - * optional string result = 1; - */ - String getResult(); - /** - * optional string result = 1; - */ - com.google.protobuf.ByteString - getResultBytes(); - } - /** - * Protobuf type {@code GCAttackMsg} - */ - public static final class GCAttackMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:GCAttackMsg) - GCAttackMsgOrBuilder { - // Use GCAttackMsg.newBuilder() to construct. - private GCAttackMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private GCAttackMsg() { - result_ = ""; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private GCAttackMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 10: { - String s = input.readStringRequireUtf8(); - - result_ = s; - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCAttackMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCAttackMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCAttackMsg.class, Builder.class); - } - - public static final int RESULT_FIELD_NUMBER = 1; - private volatile Object result_; - /** - * optional string result = 1; - */ - public String getResult() { - Object ref = result_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - result_ = s; - return s; - } - } - /** - * optional string result = 1; - */ - public com.google.protobuf.ByteString - getResultBytes() { - Object ref = result_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - result_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (!getResultBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, result_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (!getResultBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, result_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof GCAttackMsg)) { - return super.equals(obj); - } - GCAttackMsg other = (GCAttackMsg) obj; - - boolean result = true; - result = result && getResult() - .equals(other.getResult()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + RESULT_FIELD_NUMBER; - hash = (53 * hash) + getResult().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static GCAttackMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCAttackMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCAttackMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCAttackMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCAttackMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCAttackMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static GCAttackMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static GCAttackMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static GCAttackMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCAttackMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(GCAttackMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code GCAttackMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:GCAttackMsg) - GCAttackMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCAttackMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCAttackMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCAttackMsg.class, Builder.class); - } - - // Construct using ProtoMsg.GCAttackMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - result_ = ""; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_GCAttackMsg_descriptor; - } - - public GCAttackMsg getDefaultInstanceForType() { - return GCAttackMsg.getDefaultInstance(); - } - - public GCAttackMsg build() { - GCAttackMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public GCAttackMsg buildPartial() { - GCAttackMsg result = new GCAttackMsg(this); - result.result_ = result_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof GCAttackMsg) { - return mergeFrom((GCAttackMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(GCAttackMsg other) { - if (other == GCAttackMsg.getDefaultInstance()) return this; - if (!other.getResult().isEmpty()) { - result_ = other.result_; - onChanged(); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - GCAttackMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (GCAttackMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private Object result_ = ""; - /** - * optional string result = 1; - */ - public String getResult() { - Object ref = result_; - if (!(ref instanceof String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - result_ = s; - return s; - } else { - return (String) ref; - } - } - /** - * optional string result = 1; - */ - public com.google.protobuf.ByteString - getResultBytes() { - Object ref = result_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - result_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string result = 1; - */ - public Builder setResult( - String value) { - if (value == null) { - throw new NullPointerException(); - } - - result_ = value; - onChanged(); - return this; - } - /** - * optional string result = 1; - */ - public Builder clearResult() { - - result_ = getDefaultInstance().getResult(); - onChanged(); - return this; - } - /** - * optional string result = 1; - */ - public Builder setResultBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - result_ = value; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:GCAttackMsg) - } - - // @@protoc_insertion_point(class_scope:GCAttackMsg) - private static final GCAttackMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new GCAttackMsg(); - } - - public static GCAttackMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public GCAttackMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new GCAttackMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public GCAttackMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface CGRechargeWarOrderVipMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:CGRechargeWarOrderVipMsg) - com.google.protobuf.MessageOrBuilder { - } - /** - * Protobuf type {@code CGRechargeWarOrderVipMsg} - */ - public static final class CGRechargeWarOrderVipMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:CGRechargeWarOrderVipMsg) - CGRechargeWarOrderVipMsgOrBuilder { - // Use CGRechargeWarOrderVipMsg.newBuilder() to construct. - private CGRechargeWarOrderVipMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private CGRechargeWarOrderVipMsg() { - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private CGRechargeWarOrderVipMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGRechargeWarOrderVipMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGRechargeWarOrderVipMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGRechargeWarOrderVipMsg.class, Builder.class); - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof CGRechargeWarOrderVipMsg)) { - return super.equals(obj); - } - CGRechargeWarOrderVipMsg other = (CGRechargeWarOrderVipMsg) obj; - - boolean result = true; - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static CGRechargeWarOrderVipMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGRechargeWarOrderVipMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGRechargeWarOrderVipMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGRechargeWarOrderVipMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGRechargeWarOrderVipMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGRechargeWarOrderVipMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static CGRechargeWarOrderVipMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static CGRechargeWarOrderVipMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static CGRechargeWarOrderVipMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGRechargeWarOrderVipMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(CGRechargeWarOrderVipMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code CGRechargeWarOrderVipMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:CGRechargeWarOrderVipMsg) - CGRechargeWarOrderVipMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGRechargeWarOrderVipMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGRechargeWarOrderVipMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGRechargeWarOrderVipMsg.class, Builder.class); - } - - // Construct using ProtoMsg.CGRechargeWarOrderVipMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_CGRechargeWarOrderVipMsg_descriptor; - } - - public CGRechargeWarOrderVipMsg getDefaultInstanceForType() { - return CGRechargeWarOrderVipMsg.getDefaultInstance(); - } - - public CGRechargeWarOrderVipMsg build() { - CGRechargeWarOrderVipMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public CGRechargeWarOrderVipMsg buildPartial() { - CGRechargeWarOrderVipMsg result = new CGRechargeWarOrderVipMsg(this); - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof CGRechargeWarOrderVipMsg) { - return mergeFrom((CGRechargeWarOrderVipMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(CGRechargeWarOrderVipMsg other) { - if (other == CGRechargeWarOrderVipMsg.getDefaultInstance()) return this; - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - CGRechargeWarOrderVipMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (CGRechargeWarOrderVipMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:CGRechargeWarOrderVipMsg) - } - - // @@protoc_insertion_point(class_scope:CGRechargeWarOrderVipMsg) - private static final CGRechargeWarOrderVipMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new CGRechargeWarOrderVipMsg(); - } - - public static CGRechargeWarOrderVipMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public CGRechargeWarOrderVipMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new CGRechargeWarOrderVipMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public CGRechargeWarOrderVipMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface GCRechargeWarOrderVipMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:GCRechargeWarOrderVipMsg) - com.google.protobuf.MessageOrBuilder { - - /** - * optional string result = 1; - */ - String getResult(); - /** - * optional string result = 1; - */ - com.google.protobuf.ByteString - getResultBytes(); - } - /** - * Protobuf type {@code GCRechargeWarOrderVipMsg} - */ - public static final class GCRechargeWarOrderVipMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:GCRechargeWarOrderVipMsg) - GCRechargeWarOrderVipMsgOrBuilder { - // Use GCRechargeWarOrderVipMsg.newBuilder() to construct. - private GCRechargeWarOrderVipMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private GCRechargeWarOrderVipMsg() { - result_ = ""; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private GCRechargeWarOrderVipMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 10: { - String s = input.readStringRequireUtf8(); - - result_ = s; - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCRechargeWarOrderVipMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCRechargeWarOrderVipMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCRechargeWarOrderVipMsg.class, Builder.class); - } - - public static final int RESULT_FIELD_NUMBER = 1; - private volatile Object result_; - /** - * optional string result = 1; - */ - public String getResult() { - Object ref = result_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - result_ = s; - return s; - } - } - /** - * optional string result = 1; - */ - public com.google.protobuf.ByteString - getResultBytes() { - Object ref = result_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - result_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (!getResultBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, result_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (!getResultBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, result_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof GCRechargeWarOrderVipMsg)) { - return super.equals(obj); - } - GCRechargeWarOrderVipMsg other = (GCRechargeWarOrderVipMsg) obj; - - boolean result = true; - result = result && getResult() - .equals(other.getResult()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + RESULT_FIELD_NUMBER; - hash = (53 * hash) + getResult().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static GCRechargeWarOrderVipMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCRechargeWarOrderVipMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCRechargeWarOrderVipMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCRechargeWarOrderVipMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCRechargeWarOrderVipMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCRechargeWarOrderVipMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static GCRechargeWarOrderVipMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static GCRechargeWarOrderVipMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static GCRechargeWarOrderVipMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCRechargeWarOrderVipMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(GCRechargeWarOrderVipMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code GCRechargeWarOrderVipMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:GCRechargeWarOrderVipMsg) - GCRechargeWarOrderVipMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCRechargeWarOrderVipMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCRechargeWarOrderVipMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCRechargeWarOrderVipMsg.class, Builder.class); - } - - // Construct using ProtoMsg.GCRechargeWarOrderVipMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - result_ = ""; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_GCRechargeWarOrderVipMsg_descriptor; - } - - public GCRechargeWarOrderVipMsg getDefaultInstanceForType() { - return GCRechargeWarOrderVipMsg.getDefaultInstance(); - } - - public GCRechargeWarOrderVipMsg build() { - GCRechargeWarOrderVipMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public GCRechargeWarOrderVipMsg buildPartial() { - GCRechargeWarOrderVipMsg result = new GCRechargeWarOrderVipMsg(this); - result.result_ = result_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof GCRechargeWarOrderVipMsg) { - return mergeFrom((GCRechargeWarOrderVipMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(GCRechargeWarOrderVipMsg other) { - if (other == GCRechargeWarOrderVipMsg.getDefaultInstance()) return this; - if (!other.getResult().isEmpty()) { - result_ = other.result_; - onChanged(); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - GCRechargeWarOrderVipMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (GCRechargeWarOrderVipMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private Object result_ = ""; - /** - * optional string result = 1; - */ - public String getResult() { - Object ref = result_; - if (!(ref instanceof String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - result_ = s; - return s; - } else { - return (String) ref; - } - } - /** - * optional string result = 1; - */ - public com.google.protobuf.ByteString - getResultBytes() { - Object ref = result_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - result_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string result = 1; - */ - public Builder setResult( - String value) { - if (value == null) { - throw new NullPointerException(); - } - - result_ = value; - onChanged(); - return this; - } - /** - * optional string result = 1; - */ - public Builder clearResult() { - - result_ = getDefaultInstance().getResult(); - onChanged(); - return this; - } - /** - * optional string result = 1; - */ - public Builder setResultBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - result_ = value; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:GCRechargeWarOrderVipMsg) - } - - // @@protoc_insertion_point(class_scope:GCRechargeWarOrderVipMsg) - private static final GCRechargeWarOrderVipMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new GCRechargeWarOrderVipMsg(); - } - - public static GCRechargeWarOrderVipMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public GCRechargeWarOrderVipMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new GCRechargeWarOrderVipMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public GCRechargeWarOrderVipMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_CGLoginSuccessMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_CGLoginSuccessMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_GCLoginSuccessMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_GCLoginSuccessMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_CGBuyGoodsMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_CGBuyGoodsMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_GCBuyGoodsMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_GCBuyGoodsMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_CGReceiveWarOrderPrizeMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_CGReceiveWarOrderPrizeMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_GCReceiveWarOrderPrizeMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_GCReceiveWarOrderPrizeMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_CGAttackMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_CGAttackMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_GCAttackMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_GCAttackMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_CGRechargeWarOrderVipMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_CGRechargeWarOrderVipMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_GCRechargeWarOrderVipMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_GCRechargeWarOrderVipMsg_fieldAccessorTable; - - public static com.google.protobuf.Descriptors.FileDescriptor - getDescriptor() { - return descriptor; - } - private static com.google.protobuf.Descriptors.FileDescriptor - descriptor; - static { - String[] descriptorData = { - "\n\014Entity.proto\"%\n\021CGLoginSuccessMsg\022\020\n\010p" + - "layerId\030\001 \001(\003\"\023\n\021GCLoginSuccessMsg\"\"\n\rCG" + - "BuyGoodsMsg\022\021\n\tbuyGoodId\030\001 \001(\003\"$\n\rGCBuyG" + - "oodsMsg\022\023\n\013responseMsg\030\001 \001(\t\",\n\031CGReceiv" + - "eWarOrderPrizeMsg\022\017\n\007prizeId\030\001 \001(\003\"+\n\031GC" + - "ReceiveWarOrderPrizeMsg\022\016\n\006result\030\001 \001(\t\"" + - "\r\n\013CGAttackMsg\"\035\n\013GCAttackMsg\022\016\n\006result\030" + - "\001 \001(\t\"\032\n\030CGRechargeWarOrderVipMsg\"*\n\030GCR" + - "echargeWarOrderVipMsg\022\016\n\006result\030\001 \001(\tB\nB" + - "\010ProtoMsgb\006proto3" - }; - com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = - new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { - public com.google.protobuf.ExtensionRegistry assignDescriptors( - com.google.protobuf.Descriptors.FileDescriptor root) { - descriptor = root; - return null; - } - }; - com.google.protobuf.Descriptors.FileDescriptor - .internalBuildGeneratedFileFrom(descriptorData, - new com.google.protobuf.Descriptors.FileDescriptor[] { - }, assigner); - internal_static_CGLoginSuccessMsg_descriptor = - getDescriptor().getMessageTypes().get(0); - internal_static_CGLoginSuccessMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_CGLoginSuccessMsg_descriptor, - new String[] { "PlayerId", }); - internal_static_GCLoginSuccessMsg_descriptor = - getDescriptor().getMessageTypes().get(1); - internal_static_GCLoginSuccessMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_GCLoginSuccessMsg_descriptor, - new String[] { }); - internal_static_CGBuyGoodsMsg_descriptor = - getDescriptor().getMessageTypes().get(2); - internal_static_CGBuyGoodsMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_CGBuyGoodsMsg_descriptor, - new String[] { "BuyGoodId", }); - internal_static_GCBuyGoodsMsg_descriptor = - getDescriptor().getMessageTypes().get(3); - internal_static_GCBuyGoodsMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_GCBuyGoodsMsg_descriptor, - new String[] { "ResponseMsg", }); - internal_static_CGReceiveWarOrderPrizeMsg_descriptor = - getDescriptor().getMessageTypes().get(4); - internal_static_CGReceiveWarOrderPrizeMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_CGReceiveWarOrderPrizeMsg_descriptor, - new String[] { "PrizeId", }); - internal_static_GCReceiveWarOrderPrizeMsg_descriptor = - getDescriptor().getMessageTypes().get(5); - internal_static_GCReceiveWarOrderPrizeMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_GCReceiveWarOrderPrizeMsg_descriptor, - new String[] { "Result", }); - internal_static_CGAttackMsg_descriptor = - getDescriptor().getMessageTypes().get(6); - internal_static_CGAttackMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_CGAttackMsg_descriptor, - new String[] { }); - internal_static_GCAttackMsg_descriptor = - getDescriptor().getMessageTypes().get(7); - internal_static_GCAttackMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_GCAttackMsg_descriptor, - new String[] { "Result", }); - internal_static_CGRechargeWarOrderVipMsg_descriptor = - getDescriptor().getMessageTypes().get(8); - internal_static_CGRechargeWarOrderVipMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_CGRechargeWarOrderVipMsg_descriptor, - new String[] { }); - internal_static_GCRechargeWarOrderVipMsg_descriptor = - getDescriptor().getMessageTypes().get(9); - internal_static_GCRechargeWarOrderVipMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_GCRechargeWarOrderVipMsg_descriptor, - new String[] { "Result", }); - } - - // @@protoc_insertion_point(outer_class_scope) -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/server/GameMainChannelInitializer.java b/paradogs-game/src/main/java/com/paradogs/game/server/GameMainChannelInitializer.java deleted file mode 100644 index 52896d3..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/server/GameMainChannelInitializer.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.paradogs.game.server; - -import com.paradogs.common.netty.Codec; -import com.paradogs.game.handler.base.GameMessageHandler; -import com.paradogs.game.misc.GameRepository; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInitializer; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.LengthFieldBasedFrameDecoder; -import io.netty.handler.codec.LengthFieldPrepender; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-03-13 16:11 - * @Description: TODO - */ -@Slf4j -@Component -public class GameMainChannelInitializer extends ChannelInitializer { - - @Autowired - private GameMessageHandler gameMessageHandler; - - @Autowired - private GameRepository repository; - - @Autowired - private Codec codec; - - @Override - protected void initChannel(NioSocketChannel channel) throws Exception { - // 判断 addList() 是否是无状态的,可以改为单例,提高效率、减少内存消耗 - channel.pipeline().addLast(new LengthFieldBasedFrameDecoder(65534, 0, 2, 0, 2)); - channel.pipeline().addLast(new LengthFieldPrepender(2)); - channel.pipeline().addLast(new Codec()); - channel.pipeline().addLast(gameMessageHandler); - repository.setGateChannel(channel); -// log.info("[{}] 建立连接", name); - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - log.error("{}", cause.getMessage()); - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/server/GameServer.java b/paradogs-game/src/main/java/com/paradogs/game/server/GameServer.java deleted file mode 100644 index d2d0d2e..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/server/GameServer.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.paradogs.game.server; - -import com.paradogs.game.misc.GameRepository; -import io.netty.bootstrap.ServerBootstrap; -import io.netty.channel.Channel; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.nio.NioServerSocketChannel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/2/18 13:08 - * @Description: TODO - */ -@Slf4j -@Component -public class GameServer { - - @Value("${netty.server.port}") - private Integer port; - - @Autowired - private GameRepository repository; - - @Autowired - private GameMainChannelInitializer gameMainChannelInitializer; - - private ServerBootstrap server; - - /** - * 启动 netty 服务器 - */ - @Async - public void start() { - - NioEventLoopGroup boss = new NioEventLoopGroup(); - NioEventLoopGroup worker = new NioEventLoopGroup(); - - try { - this.server = new ServerBootstrap() - .group(boss, worker) - .channel(NioServerSocketChannel.class) - .childHandler(gameMainChannelInitializer); - - Channel channel = this.server.bind(port).sync().channel(); - channel.closeFuture().sync(); - - } catch (InterruptedException e) { - log.error("server error:[{}]", e.getMessage()); - } finally { - // 关闭服务器资源 - boss.shutdownGracefully(); - worker.shutdownGracefully(); - log.info("[{}] 服务器停止", this.getClass().getSimpleName()); - } - - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/server/ServerRunner.java b/paradogs-game/src/main/java/com/paradogs/game/server/ServerRunner.java deleted file mode 100644 index 622fba7..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/server/ServerRunner.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.paradogs.game.server; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-02-24 10:22 - * @Description: TODO - */ -@Slf4j -@Component -public class ServerRunner implements ApplicationRunner { - - @Autowired - private GameServer gameServer; - - @Override - public void run(ApplicationArguments args) throws Exception { - gameServer.start(); - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/server/thread/CGMainHandleThread.java b/paradogs-game/src/main/java/com/paradogs/game/server/thread/CGMainHandleThread.java deleted file mode 100644 index 3551bf8..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/server/thread/CGMainHandleThread.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.paradogs.game.server.thread; - -import com.paradogs.common.message.BaseMessage; -import com.paradogs.common.utils.SpringUtils; -import com.paradogs.game.misc.GameRepository; -import com.paradogs.game.pojo.entity.Player; -import lombok.extern.slf4j.Slf4j; - -/** - * @author: yumi - * @date: 2023/2/18 22:29 - * @Description: TODO - */ -@Slf4j -public class CGMainHandleThread extends Thread { - - private GameRepository repository; - - public CGMainHandleThread() { - this.repository = SpringUtils.getBean(GameRepository.class); - this.setName("CG 消息处理线程"); - } - - @Override - public void run() { - - log.info("启动 [{}]", this.getName()); - while (true) { - try { - repository.onlinePlayerMap.values().forEach(Player::heartBeat); - BaseMessage msg = repository.popCGMessage(); - if (msg == null) { - Thread.sleep(100); - continue; - } - - log.info("获取消息:[{}]", msg); - msg.handler(repository.getGateChannel()); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - } - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/server/thread/DBHandlerThread.java b/paradogs-game/src/main/java/com/paradogs/game/server/thread/DBHandlerThread.java deleted file mode 100644 index b07acb3..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/server/thread/DBHandlerThread.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.paradogs.game.server.thread; - -import com.paradogs.common.handler.CGHandler; -import com.paradogs.common.message.BaseMessage; -import com.paradogs.common.utils.SpringUtils; -import com.paradogs.game.misc.GameRepository; -import com.paradogs.game.pojo.db.ModifyPlayerMsg; -import com.paradogs.game.service.impl.PlayerServiceImpl; -import lombok.extern.slf4j.Slf4j; - -/** - * @author: yumi - * @date: 2023/2/19 11:45 - * @Description: TODO - */ -@Slf4j -public class DBHandlerThread extends Thread { - - private GameRepository repository; - - /** - * 负责的队列 ID - */ - private Long queueId; - - public DBHandlerThread(Long queueId) { - this.repository = SpringUtils.getBean(GameRepository.class); - this.queueId = queueId; - this.setName("DB 消息队列处理线程 [" + queueId + "]"); - } - - @Override - public void run() { - - log.info("启动 [{}]", this.getName()); - - while (true) { - try { - BaseMessage msg = repository.popDBMessage(queueId); - if (msg == null) { - Thread.sleep(100); - continue; - } - - log.info("DB 线程[{}] 获取消息:[{}]", queueId, msg); - - if (msg instanceof ModifyPlayerMsg) { - ModifyPlayerMsg msg1 = (ModifyPlayerMsg) msg; - PlayerServiceImpl playerService = SpringUtils.getBean(PlayerServiceImpl.class); - playerService.updateById(msg1.getPlayer()); - - log.info("持久化更新玩家 [{}] 信息", ((ModifyPlayerMsg) msg).getPlayer().getId()); - continue; - } - - CGHandler handler = SpringUtils.getBean(msg.getMsgHeader().getMsgType().substring(msg.getMsgHeader().getMsgType().lastIndexOf(".") + 1) + "Handler"); - handler.doDB(msg); - - } catch (InterruptedException e) { - log.error("CG 处理队列写入 DB 消息队列失败:[{}]", e.getMessage()); - } - - } - - } -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/service/PlayerService.java b/paradogs-game/src/main/java/com/paradogs/game/service/PlayerService.java deleted file mode 100644 index 61d00ff..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/service/PlayerService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.paradogs.game.service; - - -import com.baomidou.mybatisplus.extension.service.IService; -import com.paradogs.game.pojo.entity.Player; - -/** - * @author: yumi - * @date: 2023/2/18 14:55 - * @Description: TODO - */ -public interface PlayerService extends IService { -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/service/WarOrderService.java b/paradogs-game/src/main/java/com/paradogs/game/service/WarOrderService.java deleted file mode 100644 index 5d1911f..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/service/WarOrderService.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.paradogs.game.service; - -/** - * @author: yumi - * @date: 2023-03-20 16:54 - * @Description: TODO - */ -public interface WarOrderService { -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/service/impl/PlayerServiceImpl.java b/paradogs-game/src/main/java/com/paradogs/game/service/impl/PlayerServiceImpl.java deleted file mode 100644 index 9543d13..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/service/impl/PlayerServiceImpl.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.paradogs.game.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.paradogs.game.mapper.PlayerMapper; -import com.paradogs.game.pojo.entity.Player; -import com.paradogs.game.service.PlayerService; -import org.springframework.stereotype.Service; - -/** - * @author: yumi - * @date: 2023/2/18 15:00 - * @Description: TODO - */ -@Service -public class PlayerServiceImpl extends ServiceImpl implements PlayerService { -} diff --git a/paradogs-game/src/main/java/com/paradogs/game/service/impl/WarOrderServiceImpl.java b/paradogs-game/src/main/java/com/paradogs/game/service/impl/WarOrderServiceImpl.java deleted file mode 100644 index 467bfa2..0000000 --- a/paradogs-game/src/main/java/com/paradogs/game/service/impl/WarOrderServiceImpl.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.paradogs.game.service.impl; - -import com.paradogs.common.utils.ExcelUtils; -import com.paradogs.game.misc.GameRepository; -import com.paradogs.game.misc.PubSubManager; -import com.paradogs.game.misc.pubsub.base.Sub; -import com.paradogs.game.pojo.entity.Player; -import com.paradogs.game.pojo.excel.ExcelWarOrderPrize; -import com.paradogs.game.pojo.excel.ExcelWarOrderTask; -import com.paradogs.game.service.WarOrderService; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.ResourceUtils; - -import javax.annotation.PostConstruct; -import java.io.FileNotFoundException; -import java.util.List; - -/** - * @author: yumi - * @date: 2023-03-20 16:54 - * @Description: TODO - */ -@Slf4j -@Data -@Service -public class WarOrderServiceImpl implements WarOrderService { - - @Autowired - private PubSubManager pubSubManager; - - @Autowired - private GameRepository repository; - - /** - * 战令任务奖励 - */ - private List excelWarOrderPrizes; - - - /** - * 战令任务 - * ps: 最好为 Map 形式 - */ - private List excelWarOrderTasks; - - @PostConstruct - public void init() throws FileNotFoundException { - - log.info("[战令系统] 订阅 [登录]"); - this.pubSubManager.subscribe(PubSubManager.PubType.LOGIN, (Sub) (playerId) -> { - Player player = repository.getPlayer(playerId); - if (player.getBaseInfoManager().isTodayFirstLogin()) { - log.info("[战令系统] 收到 [登录] 通知:玩家 [{}] 今日首次登录", playerId); - ExcelWarOrderTask taskProgress = new ExcelWarOrderTask(); - taskProgress.setTaskType(ExcelWarOrderTask.TASK_LOGIN); - taskProgress.setCompleteNum(1L); - player.getWarOrderManager().submitTaskProgress(taskProgress); - player.getBaseInfoManager().submitFirstLogin(); - } - }); -// log.info("[战令系统] 订阅 [任务完成]"); -// this.pubSubManager.subscribe(PubSubManager.PubType.COMPLETE_TASK, (Sub) (notify) -> { -// log.info("[战令系统] 收到 [任务完成] 通知:玩家 [{}] 完成任务 [{}]", notify.getPlayerId(), notify.getTaskId()); -// }); - - // 加载 Excel 文件 - this.excelWarOrderPrizes = ExcelUtils.read( - ResourceUtils.getFile("classpath:excel/" + "战令系统.xlsx"), - "战令奖励", - ExcelWarOrderPrize.class); - this.excelWarOrderPrizes.forEach(item -> log.info("{}", item)); - log.info("[初始化战令奖励列表]"); - - // 初始化战令任务 - this.excelWarOrderTasks = ExcelUtils.read( - ResourceUtils.getFile("classpath:excel/" + "战令系统.xlsx"), - "战令任务", - ExcelWarOrderTask.class - ); - log.info("[初始化战令任务列表]"); - this.excelWarOrderTasks.forEach(item -> log.info("{}", item)); - } - - /** - * 获取奖励信息 - * @param id - * @return - */ - public ExcelWarOrderPrize getPrize(Long id) { - for (ExcelWarOrderPrize prize : this.excelWarOrderPrizes) { - if (prize.getPrizeId().equals(id)) { - return prize; - } - } - return null; - } - - /** - * 获取任务信息 - * @param id - * @return - */ - public ExcelWarOrderTask getTask(Long id) { - for (ExcelWarOrderTask task : this.excelWarOrderTasks) { - if (task.getTaskId().equals(id)) { - return task; - } - } - return null; - } - -} diff --git a/paradogs-game/src/main/proto/Entity.proto b/paradogs-game/src/main/proto/Entity.proto deleted file mode 100644 index ef8dffe..0000000 --- a/paradogs-game/src/main/proto/Entity.proto +++ /dev/null @@ -1,37 +0,0 @@ -syntax = "proto3"; -option java_outer_classname = "ProtoMsg"; - -message CGLoginSuccessMsg { - int64 playerId = 1; -} - -message GCLoginSuccessMsg { -} - -message CGBuyGoodsMsg { - int64 buyGoodId = 1; -} - -message GCBuyGoodsMsg { - string responseMsg = 1; -} - -message CGReceiveWarOrderPrizeMsg { - int64 prizeId = 1; -} - -message GCReceiveWarOrderPrizeMsg { - string result = 1; -} - -message CGAttackMsg { -} - -message GCAttackMsg { - string result = 1; -} - -message CGRechargeWarOrderVipMsg {} -message GCRechargeWarOrderVipMsg { - string result = 1; -} \ No newline at end of file diff --git a/paradogs-game/src/main/resources/application.yml b/paradogs-game/src/main/resources/application.yml deleted file mode 100644 index e733db2..0000000 --- a/paradogs-game/src/main/resources/application.yml +++ /dev/null @@ -1,19 +0,0 @@ -netty: - server: - port: 8002 - gate: - port: 80 - -spring: - datasource: - url: jdbc:mysql://47.102.133.168:3306/netty?useUnicode=true&characterEncoding=utf-8&useSSL=false - driver-class-name: com.mysql.jdbc.Driver - username: root - password: root - -mybatis-plus: - configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - -excel: - folder-path: classpath:excel/ \ No newline at end of file diff --git "a/paradogs-game/src/main/resources/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" "b/paradogs-game/src/main/resources/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" deleted file mode 100644 index 502b9ee02c7add019d38d1e6825ec8e18267a66f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10878 zcmeHN1zTHbw+-&D#U&JXr!DRd#i39Np}4!ddvJFvl;ZAI+={!jP^3U{D>v%gSU$5DTo|&}21Tx^AX!xLPSx`G+pHq@BMbW9*cvtWBRg z@Ve1kt%3&I$`T&sm=Fu|ki9ZMD^3S!DcAR;anlERjH&RvhSL!A&Cg7Y(Ez$fIgkbF zh4LSZRJsfox*+K>ynNRs*&~$_Rw&aqohE1_Lq%xZ*TeJSyet*5%ak5F?t9|P4!xmF zF^N=ucw*AyU^c=dM^l#{JoBI1RL$}5C^R4xt_O+qr= z57584d^>4078RPas#<{F#@DHIC`RJwLpzC3pcrlIj(1V9Xp-y~NbwYHZFJG;YX_+r za>grX)163Yr?LjUH{UNTZ!6?O_{YVZ&LBj5cz^*Y|AnSF`t2ZS2u;@@EJT6O)W9BO z>A=eJ^ZYM8|BE^Kr=MOPuOJ7*jv0L9|3Ep?_H2oPYRZyTVpqZV9*RBn{xxrEY(ew= zrKE^sZatZMMx{%ZTk5$AAz!%7Ia=Wz9O6cgbG$!e~r$ zoELj+wfY9K3V)}}jm@?80)#FgcmMzca)qlUtBZ}j#Ty$Ni=SDoKz&7Vi4C_syVfPt zlN`I)N{31nwss}9zI2grSxxl)77tliCcmO?U}LtcuUP}Q9$}ul62>E%lvY7^7cHRV zWGzg{XD8#R(c?CPtI9gHx)IVcJ@Ry3ER&&jG&otN>%d=%Ze1U=q2->o5&Z3Z8g0=DhNbT zqlDd~C$#6-NH_;Ft3Gvv%hM9&nix0A`pm5(n+=_e?WAJNlV}EyX_RH_rR`6}SlD%< zCN0sA)Y#U^Y>~UZ(-ZN^wDktaW<{E4UuMig>yD6<8Ge@ZFz>|Xjp^U#jG7hv$q_f* z4%~ys_*n>?*wOuc?)AJEI}yBDq7D*;>$tc@MWb6u3-1Qfvx)+XIHp@+Rd6Y+HqxMz z&}NzhrFoCq*n)d*5R(5Aw1Gl zSt6(uCS1^UC^Ma$Br!J4()lqt70svKkA976%kNIM2>nnPN`m-44f&tg9gzaJa8gCg zg#nY*_A!(fjdm<0$j8^}l`{gCyw11IJ0)9-qbB4_nf)7`);EnV>lf)Tu9aO+J|n2b ziw+Ez6YpYjQ}*c=T^g(Cejvtut~1?epB!U#Bc))~!h@cEdzet;);=4OsuRJX47GbJVKGoN$Jpl=7x+Gj6!5q2d{s9pOA|u9t_ZZC*+F!0S zBRjZr(#*m$RWMz?5cPVa4qn?>t#Q4IifQ*Io;Z1eG8l#e&WUEO_BXrJ$Jd62bIZ!r z18?*Uz-WsL+L34ii{+YNU*2(!yy0lD=#HJi8bujU6BH=q)Mce{s9`{j@!GqoV&obX zy0F)H*hBfJ_^F6JTOJ4TnkggzfDqym|B0UtrXY}`1M9CB_Md??1H2Ty$Og$fjEB#( z+G!Q}n8gFt>loF(m6a{&6TcN@I^eTN2bZ;b(4zY#mf+XYxn}S^T*eH57p6rRt6}yF zN;%TR*=dxKz{BR5lXKY-tAW@%Zix;chL5{gBwlGko~egXD~;HlI6yU){K8A8p%fe% z({EHS#ex`vs?t1K>ny&Qqddo;s?ZXO9*}p?o=l2e^dKyvEASbZ%q9#M>88Ft zQ}VnyXL~w|X%K9E$eKBBA4a=;5UxeXal3^VklWXFo~9SHfhgxxsx#6I7-@9KCbvaE_t8S#L6j9xKcxI z@_@G8e0GI~M#Y8b758O;z!sVq4<}rQ)ezU;4ydz95CWRL!`y5SdU|C-j`U`~b&|HY zK<1RG+a4aPUy&=4OlTHWi6}DD#C{qvt_#tKmPi6jthfb6-0J(fwN0jk9hqs2xk3kx zFSH$eqRL;Z?RSc@K+^kQ{!#S)0TLu09w0vP@Q{$8i|!9;3K~S40cLI`DY8^~-5iMV zS3&*QpH`OqeK`XNuc($eGcO$d)spi{Hp_=Z-8uxzZwQ$&3=KqS1(zmQo}>3#~xAOv~g?L$l-}?vgh61k&(wRSfzazgs$@d6DMONCR`@J zen%>~AGL~0cMZxOSEQ}Ke?C{V2y(YDszfEWJ>Xqv=)~9lL==%-B*}DVe*vV_lHIRX zecyiEMm%^|$Z+r*D8jcH3pqk*BL2`oP64rA%V=nEXed2vIs zB=PN0f`6hhaAy|Z5kh0W|DVPjf6!RYW{U!I077FI;bo)9X>npk#X57mx`wh_0i5U2 zDz2_jJGtf^x6v|S$srnsYQxCXH6Qrk>-$yHYB=(Q8obZiibz^t%|UZ`_va4$H~)8kY%}vw-xVE6PNkw_F&3&n z2h!02$pv;^Jl2U^~1?+WsEmT9SvB~p1a>w#zMa3-RDQRRU8L~ zl!t~C<*m6jWhmFD6yID|ye43=#O~WeFpb4h4tU9turt&&`r-IVu{|)j_B93alNo$6 z;r(!yVyz7yFnk(a=NNMGg^X1y@=YI@h-h;EYW<8{eV{&%(>=|@sfAW~pXUwTmZkq7 z#>~sv5Gh3LVf>y!S6NAcsMiN!Dy|Q<(^2!qb}oT=K7N3Oklm3MOeK}4bAPb#Z&X~O zx{{?)iSxn)p2(rm2s+!y9U27(uaj?(1!tu~QC3Cu>)Bc5GHtgb2ut2q`g!6>X)2lm82AMko7|6EG7&AGiGxMDl$dW9{` zaA+WnCo82;BI7Ab*o|r`iR%pps%81&-gOqyMV4!ZVOsPHh3AlRz01u%-aKP|dK;Ye z>ET`buZ8(_`o&abRPmooWrQ$wEsBxAe*(wTYLWaCus~&UTDR}pm(k79Pa0};SDuc$ z>TlL)^eB6W>2h}!KZ^)fBWoyFx#fsm_<;f$&*LCOrQpK=jpbfg%puZ7O)SX=*-QN> zlv#V%kLqJ1XUF@&a+|rM_=MSC04yGDCYW0q@;3S?Zm-n)35p6A`L8>A+~XI-#9R78 znw9s&KSy!D60V~u$O^>z>-;O%9%w7s;7H+iXzsZX9+FzpI)_q|;6CFqqr{{M4&QQp zu}b>9r6%nO?N#u4s9GsQMWb4o``29a2v}9dMDNsKRTYL4yc-h}tD|0{_yp;DDO{S1 z1Dn-{%P(yU5y{_xsE0U|^h(4cpFR17foN{oMJm*dlZP3)Xt8R1herJ`rx5$a;ge_A ze2%E}U$V;}`rnu8^+Zuilct1Q|5 zF4!$#JKv9EG;c>EWA>);=@gU7fkHbb>j zrL(M-ieHHVFHaktTUN|9i_TC1A(W=(Ao{6tXAQ(1S~y&pJLJ#k*d4G<0?OhWm>bCjEgf8wKtArWP3 zu${uewSaexTJOeb!5wO%8ATaXo{;DE$KXT_W6!_5S!k%tejx&R3btOJ9j{`9Tpp3H z-mXsB^H^_iF<5(^pVRty+7aCU*dErz5IWrgVLj}-U}Qbqm69Vq;R5gW?Zo(a++6kL z#~65@PQa{THfjdCn27?LCDA8Xl!SSW2sQ1eaEg~Equ8CC*9lEMq#M)^0F_bfryFU# z+^Y&ueLV=R&zlcFHWNg|<&lkPZuUZ1JB+32xuV%hoHA%NK9i*ua$slJbY@?@Jh9&R zWM}1(ATpByTWEBvAy2~YLa2xrEiH>XHGUO~8ROhQ=XB7lAl5}gPUjer_q0eK>}WQQ zRIpIQoaSrLFPPai6Kz#*llSzkUOHvRJ_+8@V0=b zL-Ny&q4&b*l;Z4*8$$?dU#x?7kJb?~SR5}EWJz4e4G^s-K4O{SQ``(nyL!5%+VYYQ zSo(&Qawtz_%4SZSDS*;dN|ug>F1AUQe8onRpX*A6pHnS&d=R(URB0BYVEhtO;(~Yc zDhU0@DW1CuOSadmti(4ZQ#JZaj;n*+{T{+kmR=f3zL%Z$kmK{cA=Tm%^Gii74$#8y z8E74Kv5o6A!NAt@5?5~}*h0Oz2!BFNoeGWy4mAe4O){l7C6VM>Nva`Nw50M_xT9Ak zioK~Dy>)hL;;m!Fd=sS^d;j)nu4pHCnq*wr;}my*VCr8hv=Q`OCzvkkhiR z%};3)3lzH{okNUl_ZAC=t6h<2bt{KVf_4!mUPUbN?BBr4QaVR&&r&SzC)G;w< z2dWspQ6Z&>Hz<1JW)|sE)^=my_pbCNw$7wAO#N<6GxP$3#wfgQ&l9^m zYo>@!gn26uB%7w+y;1!UsYV}s@*t1rmDP#YYj5B|5h(Y@FK%p3vNI^0UoDrZ$WW@Y zFSV2uli9WpC5EzOy=?K0z}VoSf&Z;pN^P)=>fsb367o)5I2`3O{m&^ zVWiYhhEPUMM(3CVoY@&}TZ!yLsBp?p3fzOkzFnkILYE#{B5l&V{12bT2A-apEy1ji z&f^b%6Eb8~WyZblR#Cpp@+vA$OA6p6IVgT^Zq=7I?ON)*na>jt0W5gvyq1#q7>Z=% zmE(NP@<{{sh}F^~h@xzKp&#ZewAru`1`%zGX@Cs48cl9>CCiN%u3_1&_}OO^?Hf&j zm6t>wiy2J^8G4=$mu><^JNV9)uMQkv6a^Q&NXu(}k%r3A&;BJy`vio4v;r?>(`^xe z^>V76r4eQ>m<=>ffDwB)+hnqTll_kgi){5ONC#3{W+DRsXn!Ou2S+zcki*YqBHal=(!QqJ_>Ys7?maN&t7LCt7eym%kt4D;`erH94$9bCE(V1 z0UL>3SC{buWtPpf!tS2R!cN+tCxRJOuzKnvIUOvW41wQgA~My|Ecu14?qat~PId%@ zqsSs_rz#H+lPuKVO=bA$YbMeRf1R^U{x(H(U4q25rT`{y(zhMGlw4DJxohs;$K=Hq zB}bzWW$zUGw2Kl@N2%2ow^uQ8fW@}FCcAY*+Dt_P6m*{E)6_FF_7w=#V~i7@_|~5+ zBy@j2cXU|sVv?I}^+iUI#_ac%HC)s@o1pg+QyWj1nGXlYH9d$CWT^;+oUh(u>`t~F z)+1(7!Rv($S1(N6 zvYPsIUAoLq&WU!H04>@kTcZ+~65_&-4T#NkbqM+UlAn*s>&g6+>r-+(pQ?LS1S{1A zTgE6ICy!@8TyIf(2Hv=fEWvCA559M|^x7D@9IG? z2lN*pw#zJu_8nu+ahGm>ZN7+WCj07-7(A!8USyz2SP#d6upS4mj`UYdSEitpoQy%g zcYe90xYGWIE*Z86PnYf9%Rl_1GQ>ca|FRs?kix?P0J#4lp{b!g$oQqBy_xmfUtBBz zugLbWk@OwGt>td7f)ue5>-FjUUG#Th5||x=xJwmy&a7MPPL25D_@6SM-U-L4ixg?` z8koq;HGFt4=D06>R=or4$hvc&Vzqo?MjydchEwi4D2*$PI3OcBK#Z(qpqrHfhYcc9 zG&S>&gRaMdL)p7Zk*5dWwWTmn^ri4)P(~HU=1wBAV_jqdt5Bn^vuEK8ih^ok6)1Zn zxgsUnArS6rDe2U&WZo3(ZM@?nuQ95iH8>YGZ zVi-8bhuK$syL%jQe~h=;x@wo!dNpCy@Ql?Zk3;-BGEKt_=1h^M*Jhz?u{seDjuDzQ zqYJ}oHG=BfK4r(cCaveuWLuS+-CInS12L60dkb_Mb@(>hM1$2}v0gVtHT2-tECG(0 zgNQmol)_0JC|#{`N+Yp~nU>Z}!-}_<_>c>C|Q^ z_aS=br$q605#yXoS6mwM@9IK?3@pg_*4V~K+1|$1fz`;y9`rNJLe#&1r?!x#i;Oq0 z2w=nQTSK@-k9SeXQ|rsP9NN|JFG9Vo(8@;OX6 z`{lU{UHh+@*5j5mcy8udDdZa~(;~kbWGss17X&(rR48jDGxg+()S}46pX^nbyLzuZjGuF(H>z`Tr}B%BVR=e9gx=m^X!|dS4H~qF&Dx-YiNVJk})TQ z<>|WnA{DTPp>|Z142#~x7)!}+^vF}z8FqWA5Td=+UmNM9JSzT*6~ga7Ou5F|;8(6d zqIT7h+cd{*&`QKA3!Sw2N?Ru%Z;J7=RDM8Ad*}AOUI1PzBXS!0S8{|Qh1yO zz9PLA{*WZ*9f)E~WJZpd0VfX^51nCRR}6cUKu0&5W{yEL3S1=%mrsJNVP%nCR1fN< z;1x>VFFxuxB8Q`G%j5>lEmn-?9`M35I7c}N4~ulOY|Q5bU6m4+`945f6Y4DE@665F z?9cSL*DWruy3jYYRv6Z_E-n9XJ&!bDhdm?c4zkPM0`XtGMc#1hX%S;jD+BP8f;{{V zg)^q@11iK6i-!~_d@fq?_a1C#yxrYwKgq2XIqr?gA15C%|1lT(U6w=BnAJ&Ov+Zk?I@fww^KT+i8ZXlCCmaRDdfr$3)Nyg?jgE=x_~Rv=@++9~q6 z(2&T3uPa5ZV6^~rir(eOf`e$xxO~>)zN018LR3s(?u9?KZNt!zLlr+?5Ue~B88 ztvnvF{K}m-WX^@s2x}=fr?h*+p1?f%!DJf}@7LkT=2BiBNJ?H&= z59fT>_XFN{&oz6`zV=@0+Ved3z1ID#wbhl8kbwYH06G8wpaXz}L&lvD003kZ0DuU9 zj%XNTKx*mvME4-2oDXw@DU!N3vKc5T-21A{0M0?z_V9sqve@o9qa=!snV5|Fw>W)-- zl%zCM2m59j;`!X3_)w2NqB5HYnfU|nP)#lhr7ybg-f8d)JYlTPcB9tePCJcf1J+w+*-OWA-k1`^ zleOipRW*5-T#1HECdKLGtIgDTwc4#GVjX6=9YO>LUspzR4I6+Vs;3w?-eh3EV`t9d zL(<^!ZQ4A(qywLhFm$&FeA{Kfm$vT&M^tW=h}#$kM^A)F_en3)a1%Z~c#xR00Lb(* zBTcRnImSi~#)e3{+RUBAQJt4B;x6YFf@r>G9N<#kzr3r!n!co~l1*n14W ziUp^si7VK_jfeZ^{=fA659Z{*{q>3z6}4Vo>>&za+ylPq~9A6CzfME3HQ(gNk76$ZKK1DRUD_H=HA-RYF_=_$!Fuj6*a+{9*aa&q<&8_^5=@FMi8AA$uy0xD4Z|Hdt%=-nZyl`0STq*J#G3kcbLmTXun(Z*U05@~t-FuzL z1)*viIZ6e61~do_(snF)R$+qZ`5L$0RcKZ&?KuzDHkJgJ(?Dv=Hc^@O_&D#{+YNER8Jfcw>DN?j6I8arU@c5Zd&^YLHj=^9pomM_ zBUzfNu0@50IhEoBTOmPf8L83wDy57C9k<$=2v>H+6AvC^QByv_j!E!sMoFjZ^d}p$ zsufM#@}yEjT1+gF_WgD)APU9X@1suGgqEJ74-L{5hiHrV+cgI#B;j?4qhHf{kaj!i z9ayTZb^EtDSgc?hLnav=gqrNfn(TP6*9?wvcnE9b)h8&Ak{kDyK!7hz(aZZXCA6GW zElHl25Ye@4Ai4!4-jsfO1wVFzL#jSQ9h)?bA;E;e^(n8Nr@HB9y>c7vKwD28Y{SM{ zm3Yub!Fhz3vdeTY^u7{*TT%w!Xy1Fv)x4~3JO3(o3y?q6w%Lj}bqm9a=T=AOcRcw# z@gv_n@nh>R?<8N0Z>DzICO$;yxvj+$ilv1lko591X__cX!M;9fGu^|`$S)D1`-2aH9QZZxxy<%6)Lv zgLMy_%?q2zKEZmoFM6D7jgPeK52b*WCOyrS8 zZ|G%?TBjle?Z$XL`0d;#sE6TUb);cE=psxDQW?_F+)VqD&1&PeReJFR^;L)u&Ez3D zhN2jb4`6cp6CKA{x9kb}k9SvADn4WO-9;DJ8&u`W_sZ^z`$f3ZMh?o;1hS>LZ4_p; z>%dmsr7nlrx)y(MjvT?P)`tdWR^T)JcgQ%I5af-(;erE?s$}px{*0<_Hej&38_%x; z-_P)xlVa!`N=p_2%Y;bcLpkj5^y8cKrv&$w>!!u~$CcQ>2IbX3x?s~|p32TIDP)oT zzQDqTbD=u2O{TemB1IbbnurE3jCOV8R#rAU(3EnvM7Gi=lO~ZKh~zGM z##jJ19CfOaxfLS!8=KlqJkTO5Zy8W)H?L}Xe|W;8Q~Lm0{_(T7JIP6N_GE8Zi-WQV zC{Y$@=t$V1wE?=r3m$?@Ro!e(v)OGdab*OxY3WCiBudeQL*}pJH%2i1VMPd}md*zW z2RmN;-_OERQhF$?F==SCsO>u&B&{qy^hdkz+_FCwG$m=Od-z^}y|c2|#@oE#TJKhF zZX4OYX@r?F%le4ps^j@t!b@f`;pHXa+~U?gA}1pPELl04BFoPu4k=CN=Sekgffs#; z8ywoSV)=41ibUhD`Sz?<5hJA-+dM(i?yqjMAjrAJTLCP*&H`5sinu5%+Bf}>yhl|^ ziAtfg_X=B?sTBiW1QU@dr(u~_9Haf5xL>oEmaL51LkpB`meLFI%N0zMv1CA2q|(ts z--Y@&hLKQtpyr%9jp49=kyiN3R5EkrUEtG)U3BKI6*f)F_grA-%H?tn-~Yu_)K0WT zj;&X(4S)o1E_m8BAGjomR^Nr~i zS?()+3raa-^XR}~)PC(&(%{58qs*tN_{C8H5*|n3GpZ^em*X ziZN~um6}Zj8WHNFSMB*V?L&*D#d)Kli?z_&r4)g5qR2FAU9@BHtyAO)J_|@)^uqG| z9u*Cix5!N zTX<$aD>mD`6Q-gl0&6*y?^PP{XnC{))X4aj(B8AuQG0uCJv*5f^(=(CM(zCGZc8nG zY=>RCT0Z%Ky+g2;w~&Q?2=bEE;jWq+znYOL)8RXH!z%@a@Yg$j>tgp39;7K>LE;_3tlm#hXqiK>74^}A^&N^5d8Ab}6sH6ADpS(L_-$0ac$}d95Y~(R zO6H+~)zmmnnSlHw4`{YDF$j|%ad(1=8Sb|DqUX+EB&gdlde;~Q)evTnuzo-tZ3n(a9DNoO&hV;M zD~_wkS0RdE)`EYC%vxYoj8PSjz+OSl(gCPx>#jgJI5I4Uuj$ygc@{iv@kwY`LP8*U z-+v9$p z4ViMM(+C|JTCtlpjF_yJk;RmW_96?m7BhzbgdM5OIm$qlh0*;u(7K3WH7s+p=ZL}#d8nc%izL4-4kr*N&36Ce$J>zHYWTcmfocnCxOtA=7fTR^!+=X5b^oRAN2; zhcy$sEy1r~*JhOAta-y?8v}qn$nd(6?HezY)Lml0UZe*~T9%V?m1rc3d}ihXrR4%` zL3*~L6h|+a$}^4J3$r1e%{JpVpYmCxYXc~iC`La=4mJXlu@)X_8ME2!=6EgD5WM%9 zL*^2JVxL^NWO3$uwixZwi$o&TM-ToWy)jM$CqJ8%7aK#Wl3~#e4MWd)n8rx0iyNqg zBd9}B*fO(Ai%!GUDl|AeAcvdc#7sVJ5alR1PBdY91k^#e(n-$;2LOUvj;`-m3Ck`W8UaBn^| zir$V$Xj|-i)Xwn%8(|rD)tj4T?ljMX=T#YaU2u|f>#?-XdW9|NG@kH~eZ{ciC)0H0 z<^`dB&AkQt%227sF~ZD`ZO*)OHlK#auA2G%t+kGzLp8bl8H|UNpXlK4wArov6U&sBo8} zs(trlhFx#k<7eK4rZV6HCFV@F0IytMi?}$ZIz}VKm*1%Gp9%V&)AM-_?99Yy#sZ{X z0;?;G)%;h09PCjKHSF0zT5McV;pI;+tSZ^q;(ZxgXi&NbNy8ME=pV}-NYaLEXOAv$ zr0Efjki-eJ+t=_C_8*zEr88sUYVWxyU}{G)P!|}$as{W*0+2Zx_{-{8g7(VG%u)Om zyuPXVX;LKt&TSRUAZU{skj4P|sfk(l5udy1{Rx`^|mmCg_31(3o#g@Bt5+5zG2nUY}x%Q?zF}UOMOlLI_(sf z%)0AXC}0(scE}-Y2`guSv`M)#xSH_{1AANAEMbZG3SJHe3$eYhqQ<%L2w4x0IJ_wF z1^HswGQ%t)+l`0s<>ex&%>*tYmr$G`^Q{ya@5n_`$a|glZ5YleZZH&njj0%imX1!{ zH)k#Z(#lN)yhOP(hD|z6!3qbfemm^M2|0KMi^@oj*d`5=oc*uHtgD$155<0b=yrhM zpb4HZA2>k!d+X=@^3+0DA6zai3XIS3j~aX=e6jL&wIgrgt$C-QB~T)~!F?yj~@*1rf) zF*UB#`v@O(zx}Hyr(1LOiMou?qBLlK6GUUG*rY<66+a(6XMx8a706!r^oV&|15_$? z;Mnxmc{K(zFMc4=EWi(m;kmER2Tu=Mtx&oKLj>OVT(T6j|o!PBx*C&CX z+%C}4ZP?X6j-jX{zj8PHiWGbt8U7f05NRkjyU@P!}_kPJ!3H^;F>Z8yha;8$#KaVs9y}aFaPdwIPPDTaen+ z?E5Zob%AOh>@EQ@xWtmornx&`BB`n>MGqwD5o6VcYcO7u^#=6K*Ct@RO_JE0SB&=I z9XgMtoTw2;aITdw{Df}1@Q+$|YDp9ELa8UO9 zk05iJ83&_us zXSFh>cb_Nk-R`Rkn#y;Q_EpZ|AwBTy(BOGOS?b$SGp%MW_`Ry`2WxmPZ(UE*sm*m@ z{RVc8^^4E@P}2Hk2+Nygb@$<1tCILVi@n+JN3-FQ<<`1!GpP0ok~3PZ!zL6q8_pUh zX_9DPBrRXX_*q4i$D=z5@lV-Jd6R0v+w|li+9QVt{{|e`b}<*Rt^W*MUb70(ha!(%C}Y)!D_3$HLha z{AXA6zx6Tr(D|iksD<(Z!&g+U@QPs*BujPo-xJ>Vb&ZZDi+5J>Z6>g#b4)*gaq$ue ztgUry9kp+L5nRsECiV-d1y>5lFoYmZ6lT1Zu-tB)i{Jq24K%LnRMJUP>op8jS8Go4 zYEXI$dLVsBH$_sL%7|u`mfxa?s3n$HUy}P$(9u#I|7|RDGl-J=%Q=F}<3U0W7bDk! zXL#7z(NSXxY|NI2W@QMpC=r-I8*9FJ)|&$n-r<{bQ*|pk{*> z{7sIOjYIgoTP0^6r~85x6d7$@>43BnO(!gWXC2i)y> zd@}byv`91|@yT83nd{Kbxk52!cY+kK0tt#SUz^p?sG;Q1?4`t~IrXi{Tf#L)#%Bt; zDEb0Q`gJ)3T?jrgJQ7kj@UHvcD{dmjM+7h7*uzJHfBzkOW-c!Og&rJpe{MM`-A;=? zJ6L|etLAujcb#a2kX@I3j~eKJ7M(k?#!wq2 z@kj=VjR7kY^9e%)`Ih4BM5!R%e6r^G9BZ+lQ%f~_(dyLRB`VdAX)(#Q8d(>nG!`@G zLDT{LSlE584(Qp`s2wS~UQ8^0#U!S!()rBxc4{^6<+~YE6q?wO?Tma_QFrb~6q*wA zx9Q;z$w!ptkwYX&`|g)I*fdS%I*9W&-&fSVMcK#2Xs0TKSa!zo7R6?GpNN5<5VH}|(Q_Xe-^qmM|)JUh; zNYJ4A3IrE#w~w=Gk9j)w^DdcLn;Fb#{Q02VmA%6z>|rI2_elEdo)9RByboBs3~6~I zE4P^S(SAcnUE=s1N!#KIHjR<$IP-aA&X`CU#?4jw#!s#A2c8iSx!~&SpWib1*ZlqK z_z&-#s4M@~!C(8||1$h}EP<2c-@4&<4e#~@f17@UuZ-?=2=5yIwOjJr6aaw1MZ^Ey zJGtxUZVCOjCwlDveTcsm)bDz^TZjDZg#q5}gg?#Qs^nblbu().set(Player::getCurrency, playerCurrency)); -// -// playerService.list().forEach(System.out::println); -// } -// -// @Test -// void test2() throws InterruptedException { -// BlockingQueue blockingQueue = new LinkedBlockingQueue<>(); -// System.out.println(blockingQueue.poll()); -// blockingQueue.put("11"); -// System.out.println(blockingQueue.poll()); -// } -// -// -// @Test -// void test4() { -// List list = playerService.list(); -// Player player = list.get(0); -// -// WarOrder warOrder = new WarOrder(); -// warOrder.setCurPoint(0L); -// warOrder.setIsVip(false); -// warOrder.setReceivePrizeId(new CopyOnWriteArrayList<>()); -// Map map = new ConcurrentHashMap<>(); -//// WarOrder.TaskInfo taskInfo = new WarOrder.TaskInfo(); -//// taskInfo.setCurCompleteNum(0L); -//// taskInfo.setCurCompleteTimes(0); -//// taskInfo.setNextRefreshTime(); -//// map.put(1L, taskInfo); -// warOrder.setTaskInfoMap(map); -// player.setWarOrder(warOrder); -// player.setBaseInfo(new BaseInfo(new CopyOnWriteArrayList<>(), new ConcurrentHashMap<>())); -// playerService.updateById(player); -// System.out.println(); -// } -// -//} diff --git a/paradogs-game/target/classes/application.yml b/paradogs-game/target/classes/application.yml deleted file mode 100644 index e733db2..0000000 --- a/paradogs-game/target/classes/application.yml +++ /dev/null @@ -1,19 +0,0 @@ -netty: - server: - port: 8002 - gate: - port: 80 - -spring: - datasource: - url: jdbc:mysql://47.102.133.168:3306/netty?useUnicode=true&characterEncoding=utf-8&useSSL=false - driver-class-name: com.mysql.jdbc.Driver - username: root - password: root - -mybatis-plus: - configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - -excel: - folder-path: classpath:excel/ \ No newline at end of file diff --git "a/paradogs-game/target/classes/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" "b/paradogs-game/target/classes/excel/\346\210\230\344\273\244\347\263\273\347\273\237.xlsx" deleted file mode 100644 index 502b9ee02c7add019d38d1e6825ec8e18267a66f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10878 zcmeHN1zTHbw+-&D#U&JXr!DRd#i39Np}4!ddvJFvl;ZAI+={!jP^3U{D>v%gSU$5DTo|&}21Tx^AX!xLPSx`G+pHq@BMbW9*cvtWBRg z@Ve1kt%3&I$`T&sm=Fu|ki9ZMD^3S!DcAR;anlERjH&RvhSL!A&Cg7Y(Ez$fIgkbF zh4LSZRJsfox*+K>ynNRs*&~$_Rw&aqohE1_Lq%xZ*TeJSyet*5%ak5F?t9|P4!xmF zF^N=ucw*AyU^c=dM^l#{JoBI1RL$}5C^R4xt_O+qr= z57584d^>4078RPas#<{F#@DHIC`RJwLpzC3pcrlIj(1V9Xp-y~NbwYHZFJG;YX_+r za>grX)163Yr?LjUH{UNTZ!6?O_{YVZ&LBj5cz^*Y|AnSF`t2ZS2u;@@EJT6O)W9BO z>A=eJ^ZYM8|BE^Kr=MOPuOJ7*jv0L9|3Ep?_H2oPYRZyTVpqZV9*RBn{xxrEY(ew= zrKE^sZatZMMx{%ZTk5$AAz!%7Ia=Wz9O6cgbG$!e~r$ zoELj+wfY9K3V)}}jm@?80)#FgcmMzca)qlUtBZ}j#Ty$Ni=SDoKz&7Vi4C_syVfPt zlN`I)N{31nwss}9zI2grSxxl)77tliCcmO?U}LtcuUP}Q9$}ul62>E%lvY7^7cHRV zWGzg{XD8#R(c?CPtI9gHx)IVcJ@Ry3ER&&jG&otN>%d=%Ze1U=q2->o5&Z3Z8g0=DhNbT zqlDd~C$#6-NH_;Ft3Gvv%hM9&nix0A`pm5(n+=_e?WAJNlV}EyX_RH_rR`6}SlD%< zCN0sA)Y#U^Y>~UZ(-ZN^wDktaW<{E4UuMig>yD6<8Ge@ZFz>|Xjp^U#jG7hv$q_f* z4%~ys_*n>?*wOuc?)AJEI}yBDq7D*;>$tc@MWb6u3-1Qfvx)+XIHp@+Rd6Y+HqxMz z&}NzhrFoCq*n)d*5R(5Aw1Gl zSt6(uCS1^UC^Ma$Br!J4()lqt70svKkA976%kNIM2>nnPN`m-44f&tg9gzaJa8gCg zg#nY*_A!(fjdm<0$j8^}l`{gCyw11IJ0)9-qbB4_nf)7`);EnV>lf)Tu9aO+J|n2b ziw+Ez6YpYjQ}*c=T^g(Cejvtut~1?epB!U#Bc))~!h@cEdzet;);=4OsuRJX47GbJVKGoN$Jpl=7x+Gj6!5q2d{s9pOA|u9t_ZZC*+F!0S zBRjZr(#*m$RWMz?5cPVa4qn?>t#Q4IifQ*Io;Z1eG8l#e&WUEO_BXrJ$Jd62bIZ!r z18?*Uz-WsL+L34ii{+YNU*2(!yy0lD=#HJi8bujU6BH=q)Mce{s9`{j@!GqoV&obX zy0F)H*hBfJ_^F6JTOJ4TnkggzfDqym|B0UtrXY}`1M9CB_Md??1H2Ty$Og$fjEB#( z+G!Q}n8gFt>loF(m6a{&6TcN@I^eTN2bZ;b(4zY#mf+XYxn}S^T*eH57p6rRt6}yF zN;%TR*=dxKz{BR5lXKY-tAW@%Zix;chL5{gBwlGko~egXD~;HlI6yU){K8A8p%fe% z({EHS#ex`vs?t1K>ny&Qqddo;s?ZXO9*}p?o=l2e^dKyvEASbZ%q9#M>88Ft zQ}VnyXL~w|X%K9E$eKBBA4a=;5UxeXal3^VklWXFo~9SHfhgxxsx#6I7-@9KCbvaE_t8S#L6j9xKcxI z@_@G8e0GI~M#Y8b758O;z!sVq4<}rQ)ezU;4ydz95CWRL!`y5SdU|C-j`U`~b&|HY zK<1RG+a4aPUy&=4OlTHWi6}DD#C{qvt_#tKmPi6jthfb6-0J(fwN0jk9hqs2xk3kx zFSH$eqRL;Z?RSc@K+^kQ{!#S)0TLu09w0vP@Q{$8i|!9;3K~S40cLI`DY8^~-5iMV zS3&*QpH`OqeK`XNuc($eGcO$d)spi{Hp_=Z-8uxzZwQ$&3=KqS1(zmQo}>3#~xAOv~g?L$l-}?vgh61k&(wRSfzazgs$@d6DMONCR`@J zen%>~AGL~0cMZxOSEQ}Ke?C{V2y(YDszfEWJ>Xqv=)~9lL==%-B*}DVe*vV_lHIRX zecyiEMm%^|$Z+r*D8jcH3pqk*BL2`oP64rA%V=nEXed2vIs zB=PN0f`6hhaAy|Z5kh0W|DVPjf6!RYW{U!I077FI;bo)9X>npk#X57mx`wh_0i5U2 zDz2_jJGtf^x6v|S$srnsYQxCXH6Qrk>-$yHYB=(Q8obZiibz^t%|UZ`_va4$H~)8kY%}vw-xVE6PNkw_F&3&n z2h!02$pv;^Jl2U^~1?+WsEmT9SvB~p1a>w#zMa3-RDQRRU8L~ zl!t~C<*m6jWhmFD6yID|ye43=#O~WeFpb4h4tU9turt&&`r-IVu{|)j_B93alNo$6 z;r(!yVyz7yFnk(a=NNMGg^X1y@=YI@h-h;EYW<8{eV{&%(>=|@sfAW~pXUwTmZkq7 z#>~sv5Gh3LVf>y!S6NAcsMiN!Dy|Q<(^2!qb}oT=K7N3Oklm3MOeK}4bAPb#Z&X~O zx{{?)iSxn)p2(rm2s+!y9U27(uaj?(1!tu~QC3Cu>)Bc5GHtgb2ut2q`g!6>X)2lm82AMko7|6EG7&AGiGxMDl$dW9{` zaA+WnCo82;BI7Ab*o|r`iR%pps%81&-gOqyMV4!ZVOsPHh3AlRz01u%-aKP|dK;Ye z>ET`buZ8(_`o&abRPmooWrQ$wEsBxAe*(wTYLWaCus~&UTDR}pm(k79Pa0};SDuc$ z>TlL)^eB6W>2h}!KZ^)fBWoyFx#fsm_<;f$&*LCOrQpK=jpbfg%puZ7O)SX=*-QN> zlv#V%kLqJ1XUF@&a+|rM_=MSC04yGDCYW0q@;3S?Zm-n)35p6A`L8>A+~XI-#9R78 znw9s&KSy!D60V~u$O^>z>-;O%9%w7s;7H+iXzsZX9+FzpI)_q|;6CFqqr{{M4&QQp zu}b>9r6%nO?N#u4s9GsQMWb4o``29a2v}9dMDNsKRTYL4yc-h}tD|0{_yp;DDO{S1 z1Dn-{%P(yU5y{_xsE0U|^h(4cpFR17foN{oMJm*dlZP3)Xt8R1herJ`rx5$a;ge_A ze2%E}U$V;}`rnu8^+Zuilct1Q|5 zF4!$#JKv9EG;c>EWA>);=@gU7fkHbb>j zrL(M-ieHHVFHaktTUN|9i_TC1A(W=(Ao{6tXAQ(1S~y&pJLJ#k*d4G<0?OhWm>bCjEgf8wKtArWP3 zu${uewSaexTJOeb!5wO%8ATaXo{;DE$KXT_W6!_5S!k%tejx&R3btOJ9j{`9Tpp3H z-mXsB^H^_iF<5(^pVRty+7aCU*dErz5IWrgVLj}-U}Qbqm69Vq;R5gW?Zo(a++6kL z#~65@PQa{THfjdCn27?LCDA8Xl!SSW2sQ1eaEg~Equ8CC*9lEMq#M)^0F_bfryFU# z+^Y&ueLV=R&zlcFHWNg|<&lkPZuUZ1JB+32xuV%hoHA%NK9i*ua$slJbY@?@Jh9&R zWM}1(ATpByTWEBvAy2~YLa2xrEiH>XHGUO~8ROhQ=XB7lAl5}gPUjer_q0eK>}WQQ zRIpIQoaSrLFPPai6Kz#*llSzkUOHvRJ_+8@V0=b zL-Ny&q4&b*l;Z4*8$$?dU#x?7kJb?~SR5}EWJz4e4G^s-K4O{SQ``(nyL!5%+VYYQ zSo(&Qawtz_%4SZSDS*;dN|ug>F1AUQe8onRpX*A6pHnS&d=R(URB0BYVEhtO;(~Yc zDhU0@DW1CuOSadmti(4ZQ#JZaj;n*+{T{+kmR=f3zL%Z$kmK{cA=Tm%^Gii74$#8y z8E74Kv5o6A!NAt@5?5~}*h0Oz2!BFNoeGWy4mAe4O){l7C6VM>Nva`Nw50M_xT9Ak zioK~Dy>)hL;;m!Fd=sS^d;j)nu4pHCnq*wr;}my*VCr8hv=Q`OCzvkkhiR z%};3)3lzH{okNUl_ZAC=t6h<2bt{KVf_4!mUPUbN?BBr4QaVR&&r&SzC)G;w< z2dWspQ6Z&>Hz<1JW)|sE)^=my_pbCNw$7wAO#N<6GxP$3#wfgQ&l9^m zYo>@!gn26uB%7w+y;1!UsYV}s@*t1rmDP#YYj5B|5h(Y@FK%p3vNI^0UoDrZ$WW@Y zFSV2uli9WpC5EzOy=?K0z}VoSf&Z;pN^P)=>fsb367o)5I2`3O{m&^ zVWiYhhEPUMM(3CVoY@&}TZ!yLsBp?p3fzOkzFnkILYE#{B5l&V{12bT2A-apEy1ji z&f^b%6Eb8~WyZblR#Cpp@+vA$OA6p6IVgT^Zq=7I?ON)*na>jt0W5gvyq1#q7>Z=% zmE(NP@<{{sh}F^~h@xzKp&#ZewAru`1`%zGX@Cs48cl9>CCiN%u3_1&_}OO^?Hf&j zm6t>wiy2J^8G4=$mu><^JNV9)uMQkv6a^Q&NXu(}k%r3A&;BJy`vio4v;r?>(`^xe z^>V76r4eQ>m<=>ffDwB)+hnqTll_kgi){5ONC#3{W+DRsXn!Ou2S+zcki*YqBHal=(!QqJ_>Ys7?maN&t7LCt7eym%kt4D;`erH94$9bCE(V1 z0UL>3SC{buWtPpf!tS2R!cN+tCxRJOuzKnvIUOvW41wQgA~My|Ecu14?qat~PId%@ zqsSs_rz#H+lPuKVO=bA$YbMeRf1R^U{x(H(U4q25rT`{y(zhMGlw4DJxohs;$K=Hq zB}bzWW$zUGw2Kl@N2%2ow^uQ8fW@}FCcAY*+Dt_P6m*{E)6_FF_7w=#V~i7@_|~5+ zBy@j2cXU|sVv?I}^+iUI#_ac%HC)s@o1pg+QyWj1nGXlYH9d$CWT^;+oUh(u>`t~F z)+1(7!Rv($S1(N6 zvYPsIUAoLq&WU!H04>@kTcZ+~65_&-4T#NkbqM+UlAn*s>&g6+>r-+(pQ?LS1S{1A zTgE6ICy!@8TyIf(2Hv=fEWvCA559M|^x7D@9IG? z2lN*pw#zJu_8nu+ahGm>ZN7+WCj07-7(A!8USyz2SP#d6upS4mj`UYdSEitpoQy%g zcYe90xYGWIE*Z86PnYf9%Rl_1GQ>ca|FRs?kix?P0J#4lp{b!g$oQqBy_xmfUtBBz zugLbWk@OwGt>td7f)ue5>-FjUUG#Th5||x=xJwmy&a7MPPL25D_@6SM-U-L4ixg?` z8koq;HGFt4=D06>R=or4$hvc&Vzqo?MjydchEwi4D2*$PI3OcBK#Z(qpqrHfhYcc9 zG&S>&gRaMdL)p7Zk*5dWwWTmn^ri4)P(~HU=1wBAV_jqdt5Bn^vuEK8ih^ok6)1Zn zxgsUnArS6rDe2U&WZo3(ZM@?nuQ95iH8>YGZ zVi-8bhuK$syL%jQe~h=;x@wo!dNpCy@Ql?Zk3;-BGEKt_=1h^M*Jhz?u{seDjuDzQ zqYJ}oHG=BfK4r(cCaveuWLuS+-CInS12L60dkb_Mb@(>hM1$2}v0gVtHT2-tECG(0 zgNQmol)_0JC|#{`N+Yp~nU>Z}!-}_<_>c>C|Q^ z_aS=br$q605#yXoS6mwM@9IK?3@pg_*4V~K+1|$1fz`;y9`rNJLe#&1r?!x#i;Oq0 z2w=nQTSK@-k9SeXQ|rsP9NN|JFG9Vo(8@;OX6 z`{lU{UHh+@*5j5mcy8udDdZa~(;~kbWGss17X&(rR48jDGxg+()S}46pX^nbyLzuZjGuF(H>z`Tr}B%BVR=e9gx=m^X!|dS4H~qF&Dx-YiNVJk})TQ z<>|WnA{DTPp>|Z142#~x7)!}+^vF}z8FqWA5Td=+UmNM9JSzT*6~ga7Ou5F|;8(6d zqIT7h+cd{*&`QKA3!Sw2N?Ru%Z;J7=RDM8Ad*}AOUI1PzBXS!0S8{|Qh1yO zz9PLA{*WZ*9f)E~WJZpd0VfX^51nCRR}6cUKu0&5W{yEL3S1=%mrsJNVP%nCR1fN< z;1x>VFFxuxB8Q`G%j5>lEmn-?9`M35I7c}N4~ulOY|Q5bU6m4+`945f6Y4DE@665F z?9cSL*DWruy3jYYRv6Z_E-n9XJ&!bDhdm?c4zkPM0`XtGMc#1hX%S;jD+BP8f;{{V zg)^q@11iK6i-!~_d@fq?_a1C#yxrYwKgq2XIqr?gA15C%|1lT(U6w=BnAJ&Ov+Zk?I@fww^KT+i8ZXlCCmaRDdfr$3)Nyg?jgE=x_~Rv=@++9~q6 z(2&T3uPa5ZV6^~rir(eOf`e$xxO~>)zN018LR3s(?u9?KZNt!zLlr+?5Ue~B88 ztvnvF{K}m-WX^@s2x}=fr?h*+p1?f%!DJf}@7LkT=2BiBNJ?H&= z59fT>_XFN{&oz6`zV=@0+Ved3z1ID#wbhl8kbwYH06G8wpaXz}L&lvD003kZ0DuU9 zj%XNTKx*mvME4-2oDXw@DU!N3vKc5T-21A{0M0?z_V9sqve@o9qa=!snV5|Fw>W)-- zl%zCM2m59j;`!X3_)w2NqB5HYnfU|nP)#lhr7ybg-f8d)JYlTPcB9tePCJcf1J+w+*-OWA-k1`^ zleOipRW*5-T#1HECdKLGtIgDTwc4#GVjX6=9YO>LUspzR4I6+Vs;3w?-eh3EV`t9d zL(<^!ZQ4A(qywLhFm$&FeA{Kfm$vT&M^tW=h}#$kM^A)F_en3)a1%Z~c#xR00Lb(* zBTcRnImSi~#)e3{+RUBAQJt4B;x6YFf@r>G9N<#kzr3r!n!co~l1*n14W ziUp^si7VK_jfeZ^{=fA659Z{*{q>3z6}4Vo>>&za+ylPq~9A6CzfME3HQ(gNk76$ZKK1DRUD_H=HA-RYF_=_$!Fuj6*a+{9*aa&q<&8_^5=@FMi8AA$uy0xD4Z|Hdt%=-nZyl`0STq*J#G3kcbLmTXun(Z*U05@~t-FuzL z1)*viIZ6e61~do_(snF)R$+qZ`5L$0RcKZ&?KuzDHkJgJ(?Dv=Hc^@O_&D#{+YNER8Jfcw>DN?j6I8arU@c5Zd&^YLHj=^9pomM_ zBUzfNu0@50IhEoBTOmPf8L83wDy57C9k<$=2v>H+6AvC^QByv_j!E!sMoFjZ^d}p$ zsufM#@}yEjT1+gF_WgD)APU9X@1suGgqEJ74-L{5hiHrV+cgI#B;j?4qhHf{kaj!i z9ayTZb^EtDSgc?hLnav=gqrNfn(TP6*9?wvcnE9b)h8&Ak{kDyK!7hz(aZZXCA6GW zElHl25Ye@4Ai4!4-jsfO1wVFzL#jSQ9h)?bA;E;e^(n8Nr@HB9y>c7vKwD28Y{SM{ zm3Yub!Fhz3vdeTY^u7{*TT%w!Xy1Fv)x4~3JO3(o3y?q6w%Lj}bqm9a=T=AOcRcw# z@gv_n@nh>R?<8N0Z>DzICO$;yxvj+$ilv1lko591X__cX!M;9fGu^|`$S)D1`-2aH9QZZxxy<%6)Lv zgLMy_%?q2zKEZmoFM6D7jgPeK52b*WCOyrS8 zZ|G%?TBjle?Z$XL`0d;#sE6TUb);cE=psxDQW?_F+)VqD&1&PeReJFR^;L)u&Ez3D zhN2jb4`6cp6CKA{x9kb}k9SvADn4WO-9;DJ8&u`W_sZ^z`$f3ZMh?o;1hS>LZ4_p; z>%dmsr7nlrx)y(MjvT?P)`tdWR^T)JcgQ%I5af-(;erE?s$}px{*0<_Hej&38_%x; z-_P)xlVa!`N=p_2%Y;bcLpkj5^y8cKrv&$w>!!u~$CcQ>2IbX3x?s~|p32TIDP)oT zzQDqTbD=u2O{TemB1IbbnurE3jCOV8R#rAU(3EnvM7Gi=lO~ZKh~zGM z##jJ19CfOaxfLS!8=KlqJkTO5Zy8W)H?L}Xe|W;8Q~Lm0{_(T7JIP6N_GE8Zi-WQV zC{Y$@=t$V1wE?=r3m$?@Ro!e(v)OGdab*OxY3WCiBudeQL*}pJH%2i1VMPd}md*zW z2RmN;-_OERQhF$?F==SCsO>u&B&{qy^hdkz+_FCwG$m=Od-z^}y|c2|#@oE#TJKhF zZX4OYX@r?F%le4ps^j@t!b@f`;pHXa+~U?gA}1pPELl04BFoPu4k=CN=Sekgffs#; z8ywoSV)=41ibUhD`Sz?<5hJA-+dM(i?yqjMAjrAJTLCP*&H`5sinu5%+Bf}>yhl|^ ziAtfg_X=B?sTBiW1QU@dr(u~_9Haf5xL>oEmaL51LkpB`meLFI%N0zMv1CA2q|(ts z--Y@&hLKQtpyr%9jp49=kyiN3R5EkrUEtG)U3BKI6*f)F_grA-%H?tn-~Yu_)K0WT zj;&X(4S)o1E_m8BAGjomR^Nr~i zS?()+3raa-^XR}~)PC(&(%{58qs*tN_{C8H5*|n3GpZ^em*X ziZN~um6}Zj8WHNFSMB*V?L&*D#d)Kli?z_&r4)g5qR2FAU9@BHtyAO)J_|@)^uqG| z9u*Cix5!N zTX<$aD>mD`6Q-gl0&6*y?^PP{XnC{))X4aj(B8AuQG0uCJv*5f^(=(CM(zCGZc8nG zY=>RCT0Z%Ky+g2;w~&Q?2=bEE;jWq+znYOL)8RXH!z%@a@Yg$j>tgp39;7K>LE;_3tlm#hXqiK>74^}A^&N^5d8Ab}6sH6ADpS(L_-$0ac$}d95Y~(R zO6H+~)zmmnnSlHw4`{YDF$j|%ad(1=8Sb|DqUX+EB&gdlde;~Q)evTnuzo-tZ3n(a9DNoO&hV;M zD~_wkS0RdE)`EYC%vxYoj8PSjz+OSl(gCPx>#jgJI5I4Uuj$ygc@{iv@kwY`LP8*U z-+v9$p z4ViMM(+C|JTCtlpjF_yJk;RmW_96?m7BhzbgdM5OIm$qlh0*;u(7K3WH7s+p=ZL}#d8nc%izL4-4kr*N&36Ce$J>zHYWTcmfocnCxOtA=7fTR^!+=X5b^oRAN2; zhcy$sEy1r~*JhOAta-y?8v}qn$nd(6?HezY)Lml0UZe*~T9%V?m1rc3d}ihXrR4%` zL3*~L6h|+a$}^4J3$r1e%{JpVpYmCxYXc~iC`La=4mJXlu@)X_8ME2!=6EgD5WM%9 zL*^2JVxL^NWO3$uwixZwi$o&TM-ToWy)jM$CqJ8%7aK#Wl3~#e4MWd)n8rx0iyNqg zBd9}B*fO(Ai%!GUDl|AeAcvdc#7sVJ5alR1PBdY91k^#e(n-$;2LOUvj;`-m3Ck`W8UaBn^| zir$V$Xj|-i)Xwn%8(|rD)tj4T?ljMX=T#YaU2u|f>#?-XdW9|NG@kH~eZ{ciC)0H0 z<^`dB&AkQt%227sF~ZD`ZO*)OHlK#auA2G%t+kGzLp8bl8H|UNpXlK4wArov6U&sBo8} zs(trlhFx#k<7eK4rZV6HCFV@F0IytMi?}$ZIz}VKm*1%Gp9%V&)AM-_?99Yy#sZ{X z0;?;G)%;h09PCjKHSF0zT5McV;pI;+tSZ^q;(ZxgXi&NbNy8ME=pV}-NYaLEXOAv$ zr0Efjki-eJ+t=_C_8*zEr88sUYVWxyU}{G)P!|}$as{W*0+2Zx_{-{8g7(VG%u)Om zyuPXVX;LKt&TSRUAZU{skj4P|sfk(l5udy1{Rx`^|mmCg_31(3o#g@Bt5+5zG2nUY}x%Q?zF}UOMOlLI_(sf z%)0AXC}0(scE}-Y2`guSv`M)#xSH_{1AANAEMbZG3SJHe3$eYhqQ<%L2w4x0IJ_wF z1^HswGQ%t)+l`0s<>ex&%>*tYmr$G`^Q{ya@5n_`$a|glZ5YleZZH&njj0%imX1!{ zH)k#Z(#lN)yhOP(hD|z6!3qbfemm^M2|0KMi^@oj*d`5=oc*uHtgD$155<0b=yrhM zpb4HZA2>k!d+X=@^3+0DA6zai3XIS3j~aX=e6jL&wIgrgt$C-QB~T)~!F?yj~@*1rf) zF*UB#`v@O(zx}Hyr(1LOiMou?qBLlK6GUUG*rY<66+a(6XMx8a706!r^oV&|15_$? z;Mnxmc{K(zFMc4=EWi(m;kmER2Tu=Mtx&oKLj>OVT(T6j|o!PBx*C&CX z+%C}4ZP?X6j-jX{zj8PHiWGbt8U7f05NRkjyU@P!}_kPJ!3H^;F>Z8yha;8$#KaVs9y}aFaPdwIPPDTaen+ z?E5Zob%AOh>@EQ@xWtmornx&`BB`n>MGqwD5o6VcYcO7u^#=6K*Ct@RO_JE0SB&=I z9XgMtoTw2;aITdw{Df}1@Q+$|YDp9ELa8UO9 zk05iJ83&_us zXSFh>cb_Nk-R`Rkn#y;Q_EpZ|AwBTy(BOGOS?b$SGp%MW_`Ry`2WxmPZ(UE*sm*m@ z{RVc8^^4E@P}2Hk2+Nygb@$<1tCILVi@n+JN3-FQ<<`1!GpP0ok~3PZ!zL6q8_pUh zX_9DPBrRXX_*q4i$D=z5@lV-Jd6R0v+w|li+9QVt{{|e`b}<*Rt^W*MUb70(ha!(%C}Y)!D_3$HLha z{AXA6zx6Tr(D|iksD<(Z!&g+U@QPs*BujPo-xJ>Vb&ZZDi+5J>Z6>g#b4)*gaq$ue ztgUry9kp+L5nRsECiV-d1y>5lFoYmZ6lT1Zu-tB)i{Jq24K%LnRMJUP>op8jS8Go4 zYEXI$dLVsBH$_sL%7|u`mfxa?s3n$HUy}P$(9u#I|7|RDGl-J=%Q=F}<3U0W7bDk! zXL#7z(NSXxY|NI2W@QMpC=r-I8*9FJ)|&$n-r<{bQ*|pk{*> z{7sIOjYIgoTP0^6r~85x6d7$@>43BnO(!gWXC2i)y> zd@}byv`91|@yT83nd{Kbxk52!cY+kK0tt#SUz^p?sG;Q1?4`t~IrXi{Tf#L)#%Bt; zDEb0Q`gJ)3T?jrgJQ7kj@UHvcD{dmjM+7h7*uzJHfBzkOW-c!Og&rJpe{MM`-A;=? zJ6L|etLAujcb#a2kX@I3j~eKJ7M(k?#!wq2 z@kj=VjR7kY^9e%)`Ih4BM5!R%e6r^G9BZ+lQ%f~_(dyLRB`VdAX)(#Q8d(>nG!`@G zLDT{LSlE584(Qp`s2wS~UQ8^0#U!S!()rBxc4{^6<+~YE6q?wO?Tma_QFrb~6q*wA zx9Q;z$w!ptkwYX&`|g)I*fdS%I*9W&-&fSVMcK#2Xs0TKSa!zo7R6?GpNN5<5VH}|(Q_Xe-^qmM|)JUh; zNYJ4A3IrE#w~w=Gk9j)w^DdcLn;Fb#{Q02VmA%6z>|rI2_elEdo)9RByboBs3~6~I zE4P^S(SAcnUE=s1N!#KIHjR<$IP-aA&X`CU#?4jw#!s#A2c8iSx!~&SpWib1*ZlqK z_z&-#s4M@~!C(8||1$h}EP<2c-@4&<4e#~@f17@UuZ-?=2=5yIwOjJr6aaw1MZ^Ey zJGtxUZVCOjCwlDveTcsm)bDz^TZjDZg#q5}gg?#Qs^nb - - io.netty - netty-all - - - - - - com.paradogs - paradogs-common-core - 0.0.1 - - - - org.springframework.boot - spring-boot-starter-test + paradogs-common-server-starter diff --git a/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java b/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java index 998ba7b..81495c4 100644 --- a/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java +++ b/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java @@ -1,8 +1,11 @@ package com.paradogs.master; +import com.paradogs.common.core.utils.SpringUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import java.util.List; + /** * @author: yumi * @date: 2023/7/26 16:46 diff --git a/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java b/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java new file mode 100644 index 0000000..0bb62c9 --- /dev/null +++ b/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java @@ -0,0 +1,25 @@ +package com.paradogs.master.controller; + +import com.paradogs.common.core.annoations.PdgMsg; +import com.paradogs.common.core.annoations.PdgMsgMapping; +import com.paradogs.common.core.message.GCClientInfoMsg; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; + +/** + * @author: yumi + * @date: 2023/8/11 14:26 + * @Description: TODO + */ +@Slf4j +@Controller +@PdgMsgMapping("_init") +public class InitController { + + @PdgMsgMapping("clientInfo") + public GCClientInfoMsg initClientInfo(@PdgMsg GCClientInfoMsg msg) { + log.info("clientInfo >> {}", msg); + return msg; + } + +} diff --git a/paradogs-master/src/main/java/com/paradogs/master/events/EventHandler.java b/paradogs-master/src/main/java/com/paradogs/master/events/EventHandler.java new file mode 100644 index 0000000..1d16a01 --- /dev/null +++ b/paradogs-master/src/main/java/com/paradogs/master/events/EventHandler.java @@ -0,0 +1,22 @@ +package com.paradogs.master.events; + +import com.paradogs.common.core.events.ChannelActiveEvent; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/10 16:02 + * @Description: TODO + */ +@Slf4j +@Component +public class EventHandler { + + @EventListener(ChannelActiveEvent.class) + public void onChannelActiveEvent(ChannelActiveEvent event) { + log.info("a new client connect: [{}]", event.getCtx().channel().remoteAddress().toString()); + } + +} diff --git a/paradogs-master/src/main/resources/application.yml b/paradogs-master/src/main/resources/application.yml deleted file mode 100644 index e733db2..0000000 --- a/paradogs-master/src/main/resources/application.yml +++ /dev/null @@ -1,19 +0,0 @@ -netty: - server: - port: 8002 - gate: - port: 80 - -spring: - datasource: - url: jdbc:mysql://47.102.133.168:3306/netty?useUnicode=true&characterEncoding=utf-8&useSSL=false - driver-class-name: com.mysql.jdbc.Driver - username: root - password: root - -mybatis-plus: - configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - -excel: - folder-path: classpath:excel/ \ No newline at end of file diff --git a/paradogs-master/src/main/resources/config/application.yml b/paradogs-master/src/main/resources/config/application.yml new file mode 100644 index 0000000..2b68b9e --- /dev/null +++ b/paradogs-master/src/main/resources/config/application.yml @@ -0,0 +1,7 @@ +paradogs: + server: + port: 8888 + type: master + name: master-1 + is-master: true + diff --git a/paradogs-master/src/test/java/com/paradogs/master/test/Test11.java b/paradogs-master/src/test/java/com/paradogs/master/test/Test11.java deleted file mode 100644 index 2298267..0000000 --- a/paradogs-master/src/test/java/com/paradogs/master/test/Test11.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.paradogs.master.test; - -import com.paradogs.common.core.events.SyncMsgEvent; -import com.paradogs.common.core.utils.SpringUtils; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -/** - * @author: yumi - * @date: 2023/7/26 16:44 - * @Description: TODO - */ -@SpringBootTest -public class Test11 { - - @Test - public void test1() { - SpringUtils.publishEvent(new SyncMsgEvent(1)); - } -} diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java index 4df5f5f..cf96936 100644 --- a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java @@ -1,17 +1,15 @@ package com.paradogs.test.client; -import com.paradogs.common.client.Client; -import com.paradogs.common.client.ClientLauncher; +import com.paradogs.common.client.clients.ClientLauncher; import com.paradogs.common.core.message.CGTestMsg; -import com.paradogs.common.core.message.MsgHeader; -import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; import com.paradogs.common.core.utils.MsgUtils; import com.paradogs.common.core.utils.SpringUtils; +import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; /** * @author: yumi @@ -24,32 +22,39 @@ public class TestClientApplication { public static void main(String[] args) { SpringApplication.run(TestClientApplication.class, args); - int i = 0; + ClientLauncher clientLauncher = SpringUtils.getBean(ClientLauncher.class); + Channel channel = clientLauncher.getClientMap().get("game").get("Client").getChannel(); + + AtomicInteger atomicInteger = new AtomicInteger(0); long start = System.currentTimeMillis(); - int startI = i; - while (i < 10) { - try { - - CGTestMsg cgTestMsg = new CGTestMsg("hel yumi >> " + ++i); - log.info("send: {}", cgTestMsg); - ClientLauncher clientLauncher = SpringUtils.getBean(ClientLauncher.class); - Map test1 = clientLauncher.getClientMap().get("game"); - Client test2 = test1.get("Client"); - MsgUtils.send(clientLauncher.getClientMap().get("game").get("Client").getChannel(), "game-test.test1", cgTestMsg); + final int[] startI = {atomicInteger.get()}; + + for (int k = 0; k < 1; k++) { + int finalK = k; + final long[] finalStart = {start}; + int finalStartI = startI[0]; + new Thread(() -> { + + while (true) { + try { + + MsgUtils.send(channel, "game-test.test1", new CGTestMsg("hel yumi >> " + atomicInteger.incrementAndGet())); // System.out.println("send " + cgTestMsg); - Thread.sleep(100); - if (System.currentTimeMillis() - start > 1000) { - log.info("每秒发送消息 {} 个,共发送 {} 个", i - startI, i); - startI = i; - start = System.currentTimeMillis(); + Thread.sleep(1); + if (System.currentTimeMillis() - finalStart[0] > 1000 && finalK == 0) { + log.info("每秒发送消息 {} 个,共发送 {} 个", atomicInteger.get() - startI[0], atomicInteger.get()); + startI[0] = atomicInteger.get(); + finalStart[0] = System.currentTimeMillis(); + } + } catch (Exception e) { + e.printStackTrace(); + } } - } catch (Exception e) { - e.printStackTrace(); - } + }).start(); } - ClientLauncher clientLauncher = SpringUtils.getBean(ClientLauncher.class); - clientLauncher.closeAll(); +// ClientLauncher clientLauncher = SpringUtils.getBean(ClientLauncher.class); +// clientLauncher.closeAll(); } } diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java index 14ed94e..dc0f957 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java @@ -1,8 +1,14 @@ package com.paradogs.test.server; +import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.test.server.controller.TestController; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import java.io.IOException; +import java.lang.reflect.Method; +import java.util.List; + /** * @author: yumi * @date: 2023/7/31 23:20 diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java index b175e8f..727a48d 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java @@ -3,6 +3,7 @@ package com.paradogs.test.server.controller; import com.paradogs.common.core.annoations.PdgMsg; import com.paradogs.common.core.annoations.PdgMsgMapping; import com.paradogs.common.core.message.CGTestMsg; +import com.paradogs.common.core.message.GCTestMsg; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; @@ -17,9 +18,10 @@ import org.springframework.stereotype.Controller; public class TestController { @PdgMsgMapping("test1") - public void test1(@PdgMsg CGTestMsg msg) { + public GCTestMsg test1(@PdgMsg CGTestMsg msg) { log.info("receive >> {}", msg); // throw new SerializationException(); + return new GCTestMsg("ok ok ok ..."); } } diff --git a/paradogs-test/paradogs-test-server/src/main/resources/application.yml b/paradogs-test/paradogs-test-server/src/main/resources/application.yml index 7de2e8d..aecb9c2 100644 --- a/paradogs-test/paradogs-test-server/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-server/src/main/resources/application.yml @@ -4,5 +4,8 @@ paradogs: type: test name: test-1 connector: false + masters: + - host: localhost + port: 8888 queue: main-size: 1 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 9f30b84..f6b335f 100644 --- a/pom.xml +++ b/pom.xml @@ -4,12 +4,10 @@ 4.0.0 pom - paradogs-game paradogs-common paradogs-login paradogs-master paradogs-test - paradogs-connector -- Gitee From 847dec88ebcc086f8d22ede355308ed607f74299 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Sun, 20 Aug 2023 12:33:52 +0800 Subject: [PATCH 08/32] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E3=80=81=E5=AE=9E=E7=8E=B0=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=BC=8F=E7=9A=84=20RPC=20=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/client/clients/Client.java | 3 - .../clients/ClientChannelInitializer.java | 3 - .../common/connector/ConnectorMsgHandler.java | 5 + .../core/annoations/EnableParadogs.java | 26 +++++ .../common/core/annoations/PdgRPC.java | 10 +- .../common/core/annoations/PdgRPCMapping.java | 9 ++ .../annoations/resolvers/PdgRpcResolver.java | 54 --------- .../core/annoations/scans/InterfaceScan.java | 54 --------- .../common/core/events/RPCRequestEvent.java | 24 ++++ .../RPCRespEvent.java} | 18 +-- .../core/listeners/MsgSyncListener.java | 15 --- .../paradogs/common/core/message/BaseMsg.java | 8 +- .../core/message/BaseMsg_CmdVersion.java | 5 - .../paradogs/common/core/message/CGMsg.java | 2 + .../common/core/message/MsgContextHolder.java | 3 +- .../common/core/message/MsgHeader.java | 8 ++ .../core/message/route/RouteMsgResolver.java | 17 ++- .../common/core/netty/codec/ServerCodec.java | 2 + .../core/netty/pipelines/BaseMsgHandler.java | 34 ++---- .../paradogs/common/core/pojo/Connection.java | 74 ++++++++++++ .../core/rpc/RPCProxyBeanImportSelector.java | 71 +++++++----- .../common/core/rpc/RPCProxyInterceptor.java | 26 +++-- .../common/core/rpc/RpcResponseResolver.java | 15 ++- .../common/core}/rpc/TestProcess.java | 2 +- .../common/core/utils/ConnectionUtils.java | 78 +++++++++++++ .../common/core/utils/EventUtils.java | 6 +- .../paradogs/common/core/utils/MsgUtils.java | 109 ------------------ .../common/core/utils/ProtoUtils.java | 3 +- .../common/core/utils/RouteUtils.java | 35 ++++++ .../common/core/utils/SpringUtils.java | 21 +++- ...ot.autoconfigure.AutoConfiguration.imports | 11 +- .../paradogs-common-server-starter/pom.xml | 2 +- .../com/paradogs/common/server/Server.java | 2 +- .../common/server/ServerLauncher.java | 7 +- .../paradogs/common/server/ServerManager.java | 26 ----- .../common/server/ServerProperties.java | 10 +- .../events/ServerConnectionInitEvent.java | 17 +++ .../master/MasterChannelInitializer.java | 2 - .../master/{Master.java => MasterClient.java} | 42 ++++--- .../common/server/master/MasterLauncher.java | 27 +++-- .../server/netty}/ServerMsgHandler.java | 33 +++++- .../server}/queue/DBTaskConsumerThread.java | 5 +- .../server}/queue/MainMsgConsumerThread.java | 24 ++-- .../server}/queue/QueueConfiguration.java | 2 +- .../server}/queue/QueueConsumerThread.java | 2 +- .../common/server}/queue/QueueManager.java | 4 +- .../common/server}/queue/QueueProperties.java | 16 +-- .../server/rpc/{InitRpc.java => InitRPC.java} | 8 +- .../common/server/utils/MsgUtils.java | 82 +++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 4 +- .../paradogs/master/MasterApplication.java | 5 +- .../master/controller/InitController.java | 15 ++- .../paradogs/master/events/EventHandler.java | 3 + .../src/main/resources/config/application.yml | 6 +- .../src/main/resources/application.yml | 11 +- .../test/server/TestServerApplication.java | 3 + 56 files changed, 624 insertions(+), 485 deletions(-) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/resolvers/PdgRpcResolver.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/InterfaceScan.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message/GCClientInfoMsg.java => events/RPCRespEvent.java} (42%) delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/MsgSyncListener.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server => paradogs-common-core/src/main/java/com/paradogs/common/core}/rpc/TestProcess.java (94%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java delete mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerManager.java create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerConnectionInitEvent.java rename paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/{Master.java => MasterClient.java} (61%) rename paradogs-common/{paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines => paradogs-common-server-starter/src/main/java/com/paradogs/common/server/netty}/ServerMsgHandler.java (44%) rename paradogs-common/{paradogs-common-core/src/main/java/com/paradogs/common/core/netty => paradogs-common-server-starter/src/main/java/com/paradogs/common/server}/queue/DBTaskConsumerThread.java (74%) rename paradogs-common/{paradogs-common-core/src/main/java/com/paradogs/common/core/netty => paradogs-common-server-starter/src/main/java/com/paradogs/common/server}/queue/MainMsgConsumerThread.java (82%) rename paradogs-common/{paradogs-common-core/src/main/java/com/paradogs/common/core/netty => paradogs-common-server-starter/src/main/java/com/paradogs/common/server}/queue/QueueConfiguration.java (95%) rename paradogs-common/{paradogs-common-core/src/main/java/com/paradogs/common/core/netty => paradogs-common-server-starter/src/main/java/com/paradogs/common/server}/queue/QueueConsumerThread.java (98%) rename paradogs-common/{paradogs-common-core/src/main/java/com/paradogs/common/core/netty => paradogs-common-server-starter/src/main/java/com/paradogs/common/server}/queue/QueueManager.java (95%) rename paradogs-common/{paradogs-common-core/src/main/java/com/paradogs/common/core/netty => paradogs-common-server-starter/src/main/java/com/paradogs/common/server}/queue/QueueProperties.java (51%) rename paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/{InitRpc.java => InitRPC.java} (58%) create mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/utils/MsgUtils.java diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/Client.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/Client.java index 33828fa..bc91fb8 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/Client.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/Client.java @@ -1,13 +1,10 @@ package com.paradogs.common.client.clients; import com.paradogs.common.client.events.ClientStartEvent; -import com.paradogs.common.core.message.GCClientInfoMsg; import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.MsgUtils; import com.paradogs.common.core.utils.SpringUtils; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; -import io.netty.channel.ChannelHandlerContext; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; import lombok.Getter; diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientChannelInitializer.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientChannelInitializer.java index 92315d3..48fb1e8 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientChannelInitializer.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientChannelInitializer.java @@ -1,13 +1,10 @@ package com.paradogs.common.client.clients; import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; -import com.paradogs.common.core.utils.MsgUtils; import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.nio.NioSocketChannel; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java index a995e6d..94b7231 100644 --- a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java +++ b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java @@ -43,4 +43,9 @@ public class ConnectorMsgHandler extends BaseMsgHandler { // log.info("reward test success >>> {}", msg); } + + @Override + protected boolean isEnableQueue() { + return false; + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java new file mode 100644 index 0000000..63f5f6d --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java @@ -0,0 +1,26 @@ +package com.paradogs.common.core.annoations; + +import com.paradogs.common.core.rpc.RPCProxyBeanImportSelector; +import org.springframework.context.annotation.Import; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/8/14 9:45 + * @Description: TODO + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Import(RPCProxyBeanImportSelector.class) +public @interface EnableParadogs { + +// /** +// * 扫描包 +// * @return +// */ +// String[] scanPackages(); +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPC.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPC.java index 5ce23f9..94be315 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPC.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPC.java @@ -1,12 +1,6 @@ package com.paradogs.common.core.annoations; -import com.paradogs.common.core.rpc.RPCProxyBeanImportSelector; -import org.springframework.context.annotation.Import; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; +import java.lang.annotation.*; /** * @author: yumi @@ -15,7 +9,7 @@ import java.lang.annotation.Target; */ @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) -@Import(RPCProxyBeanImportSelector.class) +@Documented public @interface PdgRPC { /** diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPCMapping.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPCMapping.java index 9918759..446371a 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPCMapping.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPCMapping.java @@ -1,5 +1,8 @@ package com.paradogs.common.core.annoations; +import com.paradogs.common.core.message.BaseMsg; +import org.springframework.stereotype.Controller; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -12,6 +15,7 @@ import java.lang.annotation.Target; */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) +@Controller public @interface PdgRPCMapping { /** @@ -19,4 +23,9 @@ public @interface PdgRPCMapping { * @return */ String value(); + + /** + * 返回值类型 + */ + Class returnType(); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/resolvers/PdgRpcResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/resolvers/PdgRpcResolver.java deleted file mode 100644 index 72f18a9..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/resolvers/PdgRpcResolver.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.paradogs.common.core.annoations.resolvers; - -import com.paradogs.common.core.annoations.PdgRPC; -import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.core.io.support.ResourcePatternResolver; -import org.springframework.core.type.MethodMetadata; -import org.springframework.core.type.classreading.MetadataReader; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; -import java.io.IOException; -import java.util.Map; -import java.util.Set; - -/** - * @author: yumi - * @date: 2023/8/12 9:57 - * @Description: TODO - */ -@Component -public class PdgRpcResolver extends ClassPathScanningCandidateComponentProvider { - - @PostConstruct - public void resolveResources() throws IOException { - - long start= System.currentTimeMillis(); - String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + - "com" + '/' + "**/*.class"; - Resource[] resources = new PathMatchingResourcePatternResolver().getResources(packageSearchPath); - for (Resource resource : resources) { - MetadataReader metadataReader = getMetadataReaderFactory().getMetadataReader(resource); - // 获取有指定注解全限定类型的方法集合 - Set annotatedMethods = metadataReader.getAnnotationMetadata().getAnnotatedMethods(PdgRPC.class.getName()); - - for (MethodMetadata method : annotatedMethods) { - // 获取指定注解的参数值 map: 参数名 - 参数值 - Map annotationAttributes = method.getAnnotationAttributes(PdgRPC.class.getName()); - String value = annotationAttributes.get("value").toString(); - - } - - } - System.out.println("耗时:" + (System.currentTimeMillis() - start)); - System.out.println(1); - - } - - public static String getPackage (Class startupClass) { - return startupClass.getPackage().getName(); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/InterfaceScan.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/InterfaceScan.java deleted file mode 100644 index bdeeebe..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/InterfaceScan.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.paradogs.common.core.annoations.scans; - -import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; -import org.springframework.beans.factory.config.BeanDefinitionHolder; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.context.annotation.ClassPathBeanDefinitionScanner; -import org.springframework.core.type.classreading.MetadataReader; - -import java.io.IOException; -import java.util.Set; - -/** - * @author: yumi - * @date: 2023/8/13 9:22 - * @Description: TODO - */ -public class InterfaceScan extends ClassPathBeanDefinitionScanner { - - public InterfaceScan(BeanDefinitionRegistry registry) { - super(registry); - } - - /** - * 扫描出满足条件的类或接口 - * @param basePackages - * @return - */ - @Override - public Set doScan(String... basePackages) { - return super.doScan(basePackages); - } - - /** - * 是否为可添加 bean,返回接口类型 - * 可以用 TypeFilter 加,但 TypeFilter 只能指定类,未知的动态类无法处理 - * @param metadataReader - * @return - * @throws IOException - */ - @Override - protected boolean isCandidateComponent(MetadataReader metadataReader) throws IOException { - return metadataReader.getClassMetadata().isInterface(); - } - - /** - * @param beanDefinition 一个 bean - * @return - */ - @Override - protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) { - return beanDefinition.getClass().isInterface(); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java new file mode 100644 index 0000000..99d891a --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java @@ -0,0 +1,24 @@ +package com.paradogs.common.core.events; + +import com.paradogs.common.core.events.base.AnonEvent; +import com.paradogs.common.core.message.BaseMsg; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.concurrent.CompletableFuture; + +/** + * @author: yumi + * @date: 2023/8/17 10:45 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RPCRequestEvent extends AnonEvent { + private String route; + private T msg; + private Class returnClass; + private CompletableFuture promise; +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCClientInfoMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java similarity index 42% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCClientInfoMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java index b54aa9c..c8e2bf9 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCClientInfoMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java @@ -1,27 +1,21 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.events; +import com.paradogs.common.core.events.base.AnonEvent; +import com.paradogs.common.core.message.BaseMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * @author: yumi - * @date: 2023/8/10 15:33 + * @date: 2023/8/19 23:16 * @Description: TODO */ @Data @AllArgsConstructor @NoArgsConstructor -public class GCClientInfoMsg extends GCMsg { +public class RPCRespEvent extends AnonEvent { - /** - * 服务类型 - */ - private String serverType; - - /** - * 服务名称 - */ - private String serverName; + private T msg; } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/MsgSyncListener.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/MsgSyncListener.java deleted file mode 100644 index 59157a0..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/MsgSyncListener.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.paradogs.common.core.listeners; - -/** - * @author: yumi - * @date: 2023/8/11 9:56 - * @Description: 消息同步监听器,主要用于请求 - 响应模式的消息处理 - */ -public class MsgSyncListener { - -// @EventListener(ReceiveMsgEvent.class) -// public void onReceiveMsgEvent(ReceiveMsgEvent event) { -// EventUtils.getMsgKey(event.getMsg().getMsgHeader().getRoute(), ) -// } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java index 92ec8e5..8d8bad6 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java @@ -1,17 +1,12 @@ package com.paradogs.common.core.message; -import com.baidu.bjf.remoting.protobuf.Codec; import com.baidu.bjf.remoting.protobuf.FieldType; -import com.baidu.bjf.remoting.protobuf.ProtobufProxy; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.paradogs.common.core.utils.BeanUtils; -import com.paradogs.common.core.utils.MsgUtils; import com.paradogs.common.core.utils.ProtoUtils; import io.netty.buffer.ByteBuf; import lombok.Data; -import lombok.experimental.Accessors; -import lombok.extern.slf4j.Slf4j; import java.io.IOException; @@ -63,4 +58,7 @@ public class BaseMsg implements IMsgSerializable { } + public void setMsgHeader(MsgHeader msgHeader) { + this.msgHeader = msgHeader; + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg_CmdVersion.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg_CmdVersion.java index fbad69f..7815d58 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg_CmdVersion.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg_CmdVersion.java @@ -1,17 +1,12 @@ package com.paradogs.common.core.message; -import com.baidu.bjf.remoting.protobuf.Codec; import com.baidu.bjf.remoting.protobuf.FieldType; -import com.baidu.bjf.remoting.protobuf.ProtobufProxy; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.paradogs.common.core.utils.BeanUtils; -import com.paradogs.common.core.utils.MsgUtils; import com.paradogs.common.core.utils.ProtoUtils; import io.netty.buffer.ByteBuf; import lombok.Data; -import lombok.experimental.Accessors; -import lombok.extern.slf4j.Slf4j; import java.io.IOException; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java index f18d1d7..970006e 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java @@ -1,6 +1,7 @@ package com.paradogs.common.core.message; import lombok.Data; +import lombok.ToString; /** @@ -9,6 +10,7 @@ import lombok.Data; * @Description: TODO */ @Data +@ToString(callSuper = true) public abstract class CGMsg extends BaseMsg { private String cgMsgClassTest = "cgMsgClassTest"; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgContextHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgContextHolder.java index 1761845..d7d436e 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgContextHolder.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgContextHolder.java @@ -11,11 +11,9 @@ import lombok.*; @Data public class MsgContextHolder { - @Setter @Getter private static ChannelHandlerContext ctx; - @Setter @Getter private static Long playerId; @@ -30,6 +28,7 @@ public class MsgContextHolder { MsgContextHolder.playerId = snapshot.playId; } + /** * 返回当前上下文快照 */ diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java index 4ac4e5a..51fdacd 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java @@ -9,6 +9,7 @@ import com.google.protobuf.InvalidProtocolBufferException; import com.paradogs.common.core.exceptions.SerializationException; import com.paradogs.common.core.utils.BeanUtils; import com.paradogs.common.core.utils.ProtoUtils; +import com.paradogs.common.core.utils.RouteUtils; import com.paradogs.common.core.utils.SpringUtils; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; @@ -120,4 +121,11 @@ public class MsgHeader implements IMsgSerializable { return this.route.substring(this.route.indexOf("-") + 1); } + public String getServer() { + return this.route.substring(0, this.route.indexOf("-")); + } + + public boolean isResp() { + return this.route.endsWith(RouteUtils.RESPONSE_SUFFIX); + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/RouteMsgResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/RouteMsgResolver.java index 24bf556..6350d93 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/RouteMsgResolver.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/RouteMsgResolver.java @@ -15,6 +15,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Parameter; import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -54,8 +55,6 @@ public class RouteMsgResolver extends MsgTargetResolver { // 保存 Msg 类型和要执行的方法 Class targetMsgClass = null; for (Parameter parameter : method.getParameters()) { - Annotation[] annotations = parameter.getAnnotations(); - System.out.println(annotations.length); if (parameter.getAnnotation(PdgMsg.class) != null) { targetMsgClass = (Class) parameter.getType(); @@ -81,8 +80,8 @@ public class RouteMsgResolver extends MsgTargetResolver { List methods = SpringUtils.getMethodsWithAnnotation(PdgRPCMapping.class); for (Method method : methods) { // 计算路由 - PdgRPCMapping pdgRpc = AnnotationUtils.findAnnotation(method, PdgRPCMapping.class); - String route = pdgRpc.value() + "|resp"; + PdgRPCMapping pdgRPCMapping = AnnotationUtils.findAnnotation(method, PdgRPCMapping.class); + String route = pdgRPCMapping.value() + "|resp"; if (mappingMap.containsKey(route)) { throw new RuntimeException("Duplicate route found: [" + route + "]"); @@ -90,12 +89,18 @@ public class RouteMsgResolver extends MsgTargetResolver { // 保存 Msg 类型和要执行的方法 try { - Class targetMsgClass = (Class) method.getReturnType(); + if (pdgRPCMapping.returnType() == null) { + throw new RuntimeException("rpc[" + pdgRPCMapping.value() + "] returnType is null"); + } + Class targetMsgClass = pdgRPCMapping.returnType(); + if (mappingMap.containsKey(route)) { + throw new RuntimeException("route already exist: " + route); + } mappingMap.put(route, new MsgMapping(targetMsgClass, method)); } catch (Exception e) { - throw new RuntimeException("rpc[" + pdgRpc.value() + "] return must extends BaseMsg(?GCMsg)"); + throw new RuntimeException("rpc[" + pdgRPCMapping.value() + "] return must extends BaseMsg(?GCMsg)"); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java index d6f325e..ff67ca0 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java @@ -13,12 +13,14 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import java.util.List; +import java.util.concurrent.CompletableFuture; /** * @author: yumi * @date: 2023-02-08 11:43 * @Description: TODO * not allowed to be shared !! + * ps: 继承 BaseMsg 的实体类不能加 @slf4j,会被 JProtobuf 解析导致编码失败 */ @Slf4j @Component diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/BaseMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/BaseMsgHandler.java index cee2731..0411a2d 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/BaseMsgHandler.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/BaseMsgHandler.java @@ -6,8 +6,6 @@ import com.paradogs.common.core.events.ReceiveMsgEvent; import com.paradogs.common.core.exceptions.base.GlobalExceptionDispatch; import com.paradogs.common.core.message.BaseMsg; import com.paradogs.common.core.message.MsgContextHolder; -import com.paradogs.common.core.netty.queue.MainMsgConsumerThread; -import com.paradogs.common.core.netty.queue.QueueManager; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.SpringUtils; import io.netty.channel.ChannelHandlerContext; @@ -23,15 +21,6 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public abstract class BaseMsgHandler extends SimpleChannelInboundHandler { - /** - * 队列管理器 - */ - @Getter - private QueueManager queueManager; - - @Getter - private MainMsgConsumerThread handler; - @Getter private GlobalExceptionDispatch globalExceptionDispatch; @@ -39,14 +28,14 @@ public abstract class BaseMsgHandler extends SimpleChannelInb * 开启队列时的消息处理 */ protected void processWithQueue(T msg) throws InterruptedException { - queueManager.pushMainMsg(msg); +// queueManager.pushMainMsg(msg); } /** * 未开启队列时的消息处理 */ protected void processWithoutQueue(T msg) throws Exception { - handler.handle(msg); +// handler.handle(msg); } /** @@ -55,14 +44,19 @@ public abstract class BaseMsgHandler extends SimpleChannelInb protected void setProps(ChannelHandlerContext ctx, T msg) { } + /** + * 是否开启队列 + * @return + */ + protected abstract boolean isEnableQueue(); + /** * 设置消息上下文 * @param ctx * @param msg */ protected void setContext(ChannelHandlerContext ctx, T msg) { - MsgContextHolder.setCtx(ctx); - MsgContextHolder.setPlayerId(msg.getMsgHeader().getPlayerId()); + MsgContextHolder.setContext(ctx, msg.getMsgHeader().getPlayerId()); } @@ -73,17 +67,11 @@ public abstract class BaseMsgHandler extends SimpleChannelInb setContext(ctx, msg); try { - if (queueManager == null) { - this.queueManager = SpringUtils.getBean(QueueManager.class); - } // 开启消息队列时,消息放入队列等待处理,否则直接处理 - if (queueManager.getQueueProperties().isEnable()) { + if (isEnableQueue()) { processWithQueue(msg); } else { - if (handler == null) { - handler = SpringUtils.getBean(MainMsgConsumerThread.class); - } if (globalExceptionDispatch == null) { globalExceptionDispatch = SpringUtils.getBean(GlobalExceptionDispatch.class); } @@ -95,7 +83,7 @@ public abstract class BaseMsgHandler extends SimpleChannelInb globalExceptionDispatch.forward(e); } finally { - EventUtils.publishEvent(new ReceiveMsgEvent(msg)); + EventUtils.publishEvent(new ReceiveMsgEvent<>(msg)); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java new file mode 100644 index 0000000..a728d06 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java @@ -0,0 +1,74 @@ +package com.paradogs.common.core.pojo; + +import io.netty.channel.Channel; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + + +/** + * @author: yumi + * @date: 2023/8/15 15:28 + * @Description: TODO + */ +@Slf4j +@Data +public class Connection { + + /** + * 通道 + */ + private Channel channel; + + /** + * 连接状态 + */ + private State state = State.WAIT_INIT; + + /** + * 目标服务类型 + */ + private String targetServer; + + /** + * 目标服务名称 + */ + private String targetName; + + + public Connection(Channel channel) { + this.channel = channel; + } + + /** + * 初始化连接服务器信息 + * @param targetServer + * @param targetName + */ + public void init(String targetServer, String targetName) { + if (state != State.WAIT_INIT) { + log.warn("masterClient already init: [server: {}, name: {}]", targetServer, targetName); + return; + } + this.targetServer = targetServer; + this.targetName = targetName; + this.state = State.RUNNING; + log.info("init masterClient: {}", targetServer); + } + + + public enum State { + /** + * 等待初始化数据 + */ + WAIT_INIT, + /** + * 正常运行中 + */ + RUNNING, + /** + * 停止 + */ + STOP + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBeanImportSelector.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBeanImportSelector.java index 167637d..c9febc4 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBeanImportSelector.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBeanImportSelector.java @@ -1,19 +1,16 @@ package com.paradogs.common.core.rpc; -import com.paradogs.common.core.annoations.scans.InterfaceScan; import com.paradogs.common.core.annoations.scans.RPCInterfaceScan; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; -import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.config.BeanDefinitionHolder; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.DefaultListableBeanFactory; +import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportSelector; import org.springframework.core.type.AnnotationMetadata; -import org.springframework.util.CollectionUtils; -import java.util.Map; import java.util.Set; /** @@ -21,6 +18,7 @@ import java.util.Set; * @date: 2023/8/13 16:39 * @Description: TODO */ +@Configuration public class RPCProxyBeanImportSelector implements ImportSelector, BeanFactoryAware { private BeanFactory beanFactory; @@ -30,46 +28,59 @@ public class RPCProxyBeanImportSelector implements ImportSelector, BeanFactoryAw this.beanFactory = beanFactory; } + /** + * 解析 rpc 注解,为 interface 创建代理并注册 bean + * selectImports >> 引入时执行的逻辑 + * @param importingClassMetadata + * @return + */ @Override public String[] selectImports(AnnotationMetadata importingClassMetadata) { + // 转换为 DefaultListableBeanFactory 便于操作 DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) beanFactory; - // 获取自定义注解的具体数据信息 - Map annotationAttributes = importingClassMetadata.getAnnotationAttributes(RPCProxyBean.class.getName()); + // 获取被注解的类(启动类)的 Class,以及包路径 + String startupPackage = null; + try { + String startupClassStr = importingClassMetadata.getClassName(); + Class startupClass = Class.forName(startupClassStr); + startupPackage = startupClass.getPackage().getName(); + + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } - if (!CollectionUtils.isEmpty(annotationAttributes)) { - // 获取配置的扫描包路径 - String[] scanPackages = (String[]) annotationAttributes.get("scanPackages"); + // 获取配置的扫描包路径 + String[] scanPackages = {startupPackage, "com.paradogs"}; - // 自定义扫描器,获取 BeanDefinitionHolder - RPCInterfaceScan rpcInterfaceScan = new RPCInterfaceScan(defaultListableBeanFactory); - Set beanDefinitionHolders = rpcInterfaceScan.doScan(scanPackages); + // 自定义扫描器,获取 BeanDefinitionHolder + RPCInterfaceScan rpcInterfaceScan = new RPCInterfaceScan(defaultListableBeanFactory); + Set beanDefinitionHolders = rpcInterfaceScan.doScan(scanPackages); - // 循环处理每个被扫描到的bean对象,创建代理实现类 - for (BeanDefinitionHolder beanDefinitionHolder : beanDefinitionHolders) { + // 循环处理每个被扫描到的bean对象,创建代理实现类 + for (BeanDefinitionHolder beanDefinitionHolder : beanDefinitionHolders) { - // 转换为抽象实现,便于操作具体对象 - AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) beanDefinitionHolder.getBeanDefinition(); + // 转换为抽象实现,便于操作具体对象 + AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) beanDefinitionHolder.getBeanDefinition(); - try { + try { + // 获取当前被扫描到到接口的具体 class name + String beanClassName = beanDefinition.getBeanClassName(); + // 装载 class + Class targetInterface = Class.forName(beanClassName); - // 获取当前被扫描到到接口的具体 class name - String beanClassName = beanDefinition.getBeanClassName(); - // 装载 class - Class targetInterface = Class.forName(beanClassName); + // 为该自定义的代理实现类,提供构造方法所需要的原始接口类型参数 + beanDefinition.getConstructorArgumentValues().addGenericArgumentValue(targetInterface); - // 为该自定义的代理实现类,提供构造方法所需要的原始接口类型参数 - beanDefinition.getConstructorArgumentValues().addGenericArgumentValue(targetInterface); + // 修改被扫描接口到具体实现类型,替换为自定义到代理实现类 + beanDefinition.setBeanClassName(RPCProxyBean.class.getName()); - // 修改被扫描接口到具体实现类型,替换为自定义到代理实现类 - beanDefinition.setBeanClassName(RPCProxyBean.class.getName()); + String beanName = beanDefinitionHolder.getBeanName(); + System.out.println("已修改===>" + beanName); - String beanName = beanDefinitionHolder.getBeanName(); - System.out.println("已修改===>" + beanName); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } + } catch (ClassNotFoundException e) { + e.printStackTrace(); } } return new String[0]; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyInterceptor.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyInterceptor.java index e0cbd5b..8deadef 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyInterceptor.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyInterceptor.java @@ -3,15 +3,16 @@ package com.paradogs.common.core.rpc; import com.paradogs.common.core.annoations.PdgMsg; import com.paradogs.common.core.annoations.PdgRPC; import com.paradogs.common.core.annoations.PdgRPCMapping; +import com.paradogs.common.core.events.RPCRequestEvent; import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.message.MsgContextHolder; -import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.EventUtils; import org.springframework.aop.support.AopUtils; import org.springframework.cglib.proxy.MethodInterceptor; import org.springframework.cglib.proxy.MethodProxy; import org.springframework.core.annotation.AnnotationUtils; import java.lang.reflect.Method; +import java.lang.reflect.Parameter; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.concurrent.CompletableFuture; @@ -51,16 +52,18 @@ public class RPCProxyInterceptor implements MethodInterceptor { // 获得参数消息 BaseMsg requestMsg = null; - for (Object arg : args) { - PdgMsg requestAnnotation = AnnotationUtils.findAnnotation(arg.getClass(), PdgMsg.class); + Parameter[] parameters = method.getParameters(); + for (int i = 0; i < parameters.length; i++) { + PdgMsg requestAnnotation = AnnotationUtils.findAnnotation(parameters[i], PdgMsg.class); if (requestAnnotation != null) { try { - requestMsg = (BaseMsg) arg; + requestMsg = (BaseMsg) args[i]; } catch (Exception e) { throw new RuntimeException("@PdgMsg arg must extends BaseMsg: " + method.getName()); + } finally { + break; } } - } // 获得返回值类型 @@ -83,12 +86,15 @@ public class RPCProxyInterceptor implements MethodInterceptor { } } + CompletableFuture promise = new CompletableFuture<>(); - CompletableFuture promise = MsgUtils.request( - pdgRPC.value() + "." + pdgRPCMapping.value(), + // 解耦 MsgUtils + EventUtils.publishEvent(new RPCRequestEvent( + pdgRPC.value() + "-" + pdgRPCMapping.value(), requestMsg, - returnType - ); + returnType, + promise + )); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RpcResponseResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RpcResponseResolver.java index a6b985b..423cbf6 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RpcResponseResolver.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RpcResponseResolver.java @@ -1,5 +1,6 @@ package com.paradogs.common.core.rpc; +import com.paradogs.common.core.events.RPCRespEvent; import com.paradogs.common.core.events.ReceiveMsgEvent; import com.paradogs.common.core.message.BaseMsg; import com.paradogs.common.core.message.MsgContextHolder; @@ -7,15 +8,12 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.poi.ss.formula.functions.T; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Consumer; -import java.util.function.Function; /** * @author: yumi @@ -37,15 +35,16 @@ public class RpcResponseResolver { * @param event * @param */ - @EventListener(ReceiveMsgEvent.class) - private void onRpcMsgResponse(ReceiveMsgEvent event) { + @EventListener(RPCRespEvent.class) + private void onRpcMsgResponse(RPCRespEvent event) { - if (!event.getMsg().getMsgHeader().getRoute().endsWith("|resp")) { + if (!event.getMsg().getMsgHeader().isResp()) { return; } try { // 执行回调方法 - RespData respInfo = waitRespMap.get(getMsgKey(event.getMsg().getMsgHeader().getRoute(), event.getMsg().getMsgHeader().getReplyMsgId())); + String key = getMsgKey(event.getMsg().getMsgHeader().getRoute(), event.getMsg().getMsgHeader().getReplyMsgId()); + RespData respInfo = waitRespMap.get(key); if (respInfo != null && respInfo.getPromise() != null) { // 设置上下文 MsgContextHolder.setContext(respInfo.getMsgContextHolder()); @@ -70,7 +69,7 @@ public class RpcResponseResolver { } public static String getMsgKey(String route, String id) { - return route + id; + return route.substring(route.indexOf("-") + 1) + id; } public static String getMsgKey(T msg) { diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/TestProcess.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/TestProcess.java similarity index 94% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/TestProcess.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/TestProcess.java index 3388874..938536e 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/TestProcess.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/TestProcess.java @@ -1,4 +1,4 @@ -package com.paradogs.common.server.rpc; +package com.paradogs.common.core.rpc; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.config.BeanDefinition; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java new file mode 100644 index 0000000..4391cf1 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java @@ -0,0 +1,78 @@ +package com.paradogs.common.core.utils; + +import com.paradogs.common.core.events.ChannelActiveEvent; +import com.paradogs.common.core.events.ChannelInactiveEvent; +import com.paradogs.common.core.pojo.Connection; +import io.netty.channel.Channel; +import lombok.Getter; +import lombok.Setter; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author: yumi + * @date: 2023/8/15 15:34 + * @Description: TODO + */ +@Component +public class ConnectionUtils { + + private static Map connectionMap = new ConcurrentHashMap<>(); + /** + * server[channel] + */ + @Setter + @Getter + private static Channel masterChannel; + + + public static Connection saveNewConn(Channel channel) { + Connection conn = new Connection(channel); + connectionMap.put(channel, conn); + return conn; + } + + public static Connection getConn(Channel channel) { return connectionMap.get(channel); } + + public static void removeConn(Channel channel) { + connectionMap.remove(channel); + } + + public static String getServer(Channel channel) { + Connection connection = connectionMap.get(channel); + if (connection != null) { + return connection.getTargetServer(); + } + return null; + } + + /** + * 待优化: O(1) map + * @param server + * @return + */ + public static Channel getChannel(String server) { + for (Connection conn : connectionMap.values()) { + if (conn.getTargetServer().equals(server)) { + return conn.getChannel(); + } + } + return null; + } + + + @EventListener(ChannelActiveEvent.class) + public void onChannelActiveEvent(ChannelActiveEvent event) { + ConnectionUtils.saveNewConn(event.getCtx().channel()); + } + @EventListener(ChannelInactiveEvent.class) + public void onChannelActiveEvent(ChannelInactiveEvent event) { + ConnectionUtils.removeConn(event.getCtx().channel()); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java index d48c581..ca506d6 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java @@ -2,14 +2,12 @@ package com.paradogs.common.core.utils; import com.paradogs.common.core.message.BaseMsg; import com.paradogs.common.core.rpc.RpcResponseResolver; -import org.apache.poi.ss.formula.functions.T; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.stereotype.Component; import java.util.concurrent.CompletableFuture; -import java.util.function.Consumer; /** * @author: yumi @@ -39,7 +37,9 @@ public class EventUtils implements ApplicationEventPublisherAware { * 监听一次 * @param route * @param cgMsgId - * @param callback + * @param returnClass + * @param promise + * @param */ public static void on4Once(String route, String cgMsgId, Class returnClass, CompletableFuture promise) { SpringUtils.getBean(RpcResponseResolver.class).on4Once(route, cgMsgId, returnClass, promise); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java deleted file mode 100644 index 516be70..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.paradogs.common.core.utils; - -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.message.CGMsg; -import com.paradogs.common.core.message.MsgContextHolder; -import com.paradogs.common.core.message.MsgHeader; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.concurrent.CompletableFuture; - - -/** - * @author: yumi - * @date: 2023/7/27 10:33 - * @Description: TODO - */ -@Slf4j -@Component -public class MsgUtils { - - public static void send(Channel channel, String route, BaseMsg msg) { - if (msg.getMsgHeader() == null) { - msg.setMsgHeader(new MsgHeader()); - } - msg.getMsgHeader().setRoute(route); - channel.writeAndFlush(msg); - } - - /** - * 发起 rpc 请求 - * @param channel - * @param route 路由地址 - * @param msg 发送数据 - * @param returnClass 返回结果的消息类型 - * @param - */ - public static CompletableFuture request(Channel channel, String route, T msg, Class returnClass) { - CompletableFuture promise = new CompletableFuture<>(); - // 发起请求 - MsgUtils.send(channel, route, msg); - // 开启响应监听 - EventUtils.on4Once(route + "|resp", msg.getMsgHeader().getId(), returnClass, promise); - return promise; - } - - public static CompletableFuture request(String route, T msg, Class returnClass) { - return request(MsgContextHolder.getCtx().channel(), route, msg, returnClass); - } - -// /** -// * 消息 cmd - 消息类型 -// */ -// private static Map msgMappingByCmdMap = new TreeMap<>(); -// -// private static Map msgMappingByRouteMap = new TreeMap<>(); - -// @Value("${paradogs.server.cmd:false}") -// private Boolean cmd; - - - -// /** -// * 加载映射和消息 cmd,Bean 注册完成后执行 -// * @param bean -// * @param beanName -// * @return -// * @throws BeansException -// */ -// @Override -// public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { -// Class beanClass = bean.getClass(); -// Method[] methods = beanClass.getDeclaredMethods(); -// for (Method method : methods) { -// if (!method.isAnnotationPresent(PdgMsgMapping.class)) { -// continue; -// } -// -// PdgMsgMapping pdgMsgMapping = method.getAnnotation(PdgMsgMapping.class); -// PdgMsg pdgMsg = pdgMsgMapping.value().getDeclaredAnnotation(PdgMsg.class); -// -// if (pdgMsg == null) { -// log.error("@PdgMsgMapping class [{}] no has @PdgMsg", pdgMsgMapping.value()); -// throw new RuntimeException("@PdgMsgMapping class [{" + pdgMsgMapping.value() + "}] no has @PdgMsg"); -// } -// if (msgMappingByCmdMap.get(pdgMsg.value()) != null) { -// log.error("cmd [{}] already exists", pdgMsgMapping.value()); -// throw new RuntimeException("cmd [" + pdgMsgMapping.value() + "] already exists"); -// } -// msgMappingByCmdMap.put(pdgMsg.value(), new MsgMapping(pdgMsgMapping.value(), method)); -// } -// -// return bean; -// } -// -// public static boolean containsKey(int cmd) { -// return msgMappingMap.containsKey(cmd); -// } -// -// public static Class getMsgClass(int cmd) { -// return Optional.ofNullable(msgMappingMap.get(cmd)).map(MsgMapping::getMsgClass).orElse(null); -// } -// -// public static Method getMsgMethod(int cmd) { -// return Optional.ofNullable(msgMappingMap.get(cmd)).map(MsgMapping::getMethod).orElse(null); -// } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java index 09b388f..e3b94b3 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java @@ -33,7 +33,8 @@ public class ProtoUtils { } try { - return codecMap.get(obj.getClass()).encode(obj); + Codec codec = codecMap.get(obj.getClass()); + return codec.encode(obj); } catch (IOException e) { e.printStackTrace(); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java new file mode 100644 index 0000000..d171054 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java @@ -0,0 +1,35 @@ +package com.paradogs.common.core.utils; + +import com.paradogs.common.core.message.BaseMsg; + +/** + * @author: yumi + * @date: 2023/8/15 16:07 + * @Description: 路由解析工具 + */ +public class RouteUtils { + + /** + * 响应路由后缀 + */ + public static final String RESPONSE_SUFFIX = "|resp"; + + /** + * 生成请求路由的响应路由 + * @param route 请求路由 + * @param server 响应路由 key + * @return + */ + public static String genRespRoute(String route, String server) { + return server + "-" + RouteUtils.getPath(route) + RESPONSE_SUFFIX; + } + + public static String getServer(String route) { + return route.substring(0, route.indexOf(".")); + } + + public static String getPath(String route) { + return route.substring(route.indexOf("-") + 1); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java index a92aea9..4bcd321 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java @@ -2,6 +2,7 @@ package com.paradogs.common.core.utils; import com.paradogs.common.core.annoations.PdgLoop; import com.paradogs.common.core.annoations.PdgMsgMapping; +import lombok.Getter; import org.springframework.aop.framework.AopContext; import org.springframework.aop.support.AopUtils; import org.springframework.beans.BeansException; @@ -9,9 +10,7 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.cache.annotation.Cacheable; -import org.springframework.context.ApplicationEvent; -import org.springframework.context.ApplicationEventPublisher; -import org.springframework.context.ApplicationEventPublisherAware; +import org.springframework.context.*; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; @@ -20,6 +19,7 @@ import org.springframework.core.type.classreading.MetadataReader; import org.springframework.core.type.classreading.MetadataReaderFactory; import org.springframework.core.type.filter.AnnotationTypeFilter; import org.springframework.core.type.filter.TypeFilter; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import org.springframework.util.ClassUtils; @@ -36,11 +36,15 @@ import java.util.Map; * @author ruoyi */ @Component -public final class SpringUtils implements BeanFactoryPostProcessor +public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationContextAware { /** Spring应用上下文环境 */ + @Getter private static ConfigurableListableBeanFactory beanFactory; + @Getter + private static ApplicationContext applicationContext; + @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException @@ -48,6 +52,11 @@ public final class SpringUtils implements BeanFactoryPostProcessor SpringUtils.beanFactory = beanFactory; } + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringUtils.applicationContext = applicationContext; + } + /** * 获取对象 * @@ -78,11 +87,11 @@ public final class SpringUtils implements BeanFactoryPostProcessor public static Map getBeans(Class clz) throws BeansException { - return beanFactory.getBeansOfType(clz); + return SpringUtils.beanFactory.getBeansOfType(clz); } public static Map getBeansWithAnnotation(Class clz) { - return beanFactory.getBeansWithAnnotation(clz); + return SpringUtils.beanFactory.getBeansWithAnnotation(clz); } /** diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 8086fee..01ed1a9 100644 --- a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,6 +1,6 @@ com.paradogs.common.core.utils.SpringUtils com.paradogs.common.core.utils.EventUtils -com.paradogs.common.core.utils.MsgUtils +com.paradogs.common.server.utils.MsgUtils com.paradogs.common.core.listeners.PdgEventListener com.paradogs.common.core.message.route.RouteMsgResolver @@ -9,16 +9,11 @@ com.paradogs.common.core.rpc.RpcResponseResolver com.paradogs.common.core.netty.codec.CodecConfiguration -com.paradogs.common.core.netty.queue.QueueConfiguration +com.paradogs.common.server.queue.QueueConfiguration com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper -com.paradogs.common.core.netty.pipelines.ServerMsgHandler +com.paradogs.common.server.netty.ServerMsgHandler com.paradogs.common.core.netty.protocol.ProtocolProperties com.paradogs.common.core.exceptions.base.GlobalExceptionDispatch - -com.paradogs.common.core.annoations.resolvers.PdgRpcResolver - - - diff --git a/paradogs-common/paradogs-common-server-starter/pom.xml b/paradogs-common/paradogs-common-server-starter/pom.xml index d9c7c84..cc9f3e8 100644 --- a/paradogs-common/paradogs-common-server-starter/pom.xml +++ b/paradogs-common/paradogs-common-server-starter/pom.xml @@ -19,7 +19,7 @@ com.paradogs - paradogs-common-client-starter + paradogs-common-core diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java index f796e2f..d2811d0 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java @@ -58,7 +58,7 @@ public class Server { .childHandler(SpringUtils.getBean(ServerChannelInitializer.class)); this.channel = this.server.bind(properties.getPort()).sync().channel(); - log.info("[{} localhost:{}] start success", properties.getName(), properties.getPort()); + log.info("start success: [{} localhost:{}]", properties.getName(), properties.getPort()); EventUtils.publishEvent(new ServerStartEvent(System.currentTimeMillis() - startTime)); channel.closeFuture().addListener(future -> { diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java index 66bce2a..167e3f2 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java @@ -1,13 +1,9 @@ package com.paradogs.common.server; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.message.CGTestMsg; -import com.paradogs.common.core.netty.queue.QueueManager; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; -import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Component; /** @@ -24,6 +20,8 @@ public class ServerLauncher implements ApplicationRunner { @Autowired private ServerProperties serverProperties; + + @Override public void run(ApplicationArguments args) throws Exception { /** @@ -33,4 +31,5 @@ public class ServerLauncher implements ApplicationRunner { this.server.start(); } + } diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerManager.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerManager.java deleted file mode 100644 index 2dffa86..0000000 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerManager.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.paradogs.common.server; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -import java.nio.channels.Channel; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023/8/10 15:01 - * @Description: TODO - */ -@Slf4j -@Component -public class ServerManager { - -// private Map -// -// @EventListener -// public void onChannelActiveEvent() { -// -// } - -} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java index 7021664..1ea6bba 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java @@ -1,6 +1,10 @@ package com.paradogs.common.server; +import com.paradogs.common.core.message.CGMsg; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Value; @@ -15,10 +19,12 @@ import java.util.UUID; * @Description: TODO */ @Data -@Slf4j @Component +@AllArgsConstructor +@NoArgsConstructor +@ToString(callSuper = true) @ConfigurationProperties("paradogs.server") -public class ServerProperties { +public class ServerProperties extends CGMsg { /** * 端口 diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerConnectionInitEvent.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerConnectionInitEvent.java new file mode 100644 index 0000000..8f46c0e --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerConnectionInitEvent.java @@ -0,0 +1,17 @@ +package com.paradogs.common.server.events; + +import com.paradogs.common.core.events.base.AnonEvent; +import com.paradogs.common.core.pojo.Connection; +import lombok.Data; + +/** + * @author: yumi + * @date: 2023/8/16 16:53 + * @Description: 服务器客户端连接初始化事件 + */ +@Data +public class ServerConnectionInitEvent extends AnonEvent { + + private Connection connection; + +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterChannelInitializer.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterChannelInitializer.java index c37e88a..dcf9980 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterChannelInitializer.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterChannelInitializer.java @@ -1,8 +1,6 @@ package com.paradogs.common.server.master; -import com.paradogs.common.core.message.GCClientInfoMsg; import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; -import com.paradogs.common.core.utils.MsgUtils; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/Master.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterClient.java similarity index 61% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/Master.java rename to paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterClient.java index bc78b11..26c375d 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/Master.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterClient.java @@ -1,12 +1,10 @@ package com.paradogs.common.server.master; -import com.paradogs.common.client.clients.ClientChannelInitializer; -import com.paradogs.common.client.events.ClientStartEvent; -import com.paradogs.common.core.message.GCClientInfoMsg; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.pojo.Connection; +import com.paradogs.common.core.utils.ConnectionUtils; import com.paradogs.common.core.utils.SpringUtils; import com.paradogs.common.server.ServerProperties; +import com.paradogs.common.server.rpc.InitRPC; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.nio.NioEventLoopGroup; @@ -20,7 +18,7 @@ import lombok.extern.slf4j.Slf4j; * @Description: 用于连接 master 服务器 */ @Slf4j -public class Master { +public class MasterClient { private Bootstrap master; @@ -31,14 +29,14 @@ public class Master { private MasterProperties.MasterConfig properties; - public Master(MasterProperties.MasterConfig masterConfig) { + public MasterClient(MasterProperties.MasterConfig masterConfig) { this.properties = masterConfig; } /** * 启动 netty 服务器 */ - public Master start() { + public MasterClient start() { try { long startTime = System.currentTimeMillis(); @@ -47,21 +45,33 @@ public class Master { this.master = new Bootstrap() .group(worker) .channel(NioSocketChannel.class) - .handler(SpringUtils.getBean(ClientChannelInitializer.class)); + .handler(SpringUtils.getBean(MasterChannelInitializer.class)); this.channel = master.connect(properties.getHost(), properties.getPort()).sync().channel(); // 连接成功 - EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); +// EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); + // 初始化数据 - ServerProperties serverProperties = SpringUtils.getBean(ServerProperties.class); - MsgUtils.request(this.channel, - "_init.clientInfo", - new GCClientInfoMsg(serverProperties.getType(), serverProperties.getName()), - GCClientInfoMsg.class - ).thenAccept(msg -> log.info("resp >> {}", msg)); + InitRPC initRPC = SpringUtils.getBean(InitRPC.class); + ConnectionUtils.setMasterChannel(this.channel); + Connection connection = ConnectionUtils.saveNewConn(this.channel); + connection.init("master", "master-1"); + + int test = 0; + while (test == 0) { + initRPC.getClientInfo(SpringUtils.getBean(ServerProperties.class)) + .thenAccept(serverProperties -> log.info("receive reply >> {}", serverProperties)); + Thread.sleep(1000); + } + +// MsgUtils.request(this.channel, +// "_init.clientInfo", +// new GCClientInfoMsg(serverProperties.getType(), serverProperties.getName()), +// GCClientInfoMsg.class +// ).thenAccept(msg -> log.info("resp >> {}", msg)); channel.closeFuture().addListener(future -> { log.info("[{}] server stop", this.properties.getName()); diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java index 8447c4f..7986625 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java @@ -1,5 +1,7 @@ package com.paradogs.common.server.master; +import com.paradogs.common.core.pojo.Connection; +import com.paradogs.common.core.utils.ConnectionUtils; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -23,12 +25,8 @@ public class MasterLauncher implements ApplicationRunner { @Autowired private MasterProperties masterProperties; - /** - * name[master] - */ - private Map masterMap = new HashMap<>(); + private MasterClient masterClient; - @Override public void run(ApplicationArguments args) { @@ -37,13 +35,16 @@ public class MasterLauncher implements ApplicationRunner { // throw new RuntimeException("no found masterProperties: null"); } + /** + * 待优化:master 集群,目前只有单 master + */ for (MasterProperties.MasterConfig masterConfig : masterProperties.getMasters()) { - if (masterMap.get(masterConfig.getName()) != null) { - log.error("master name dup"); - throw new RuntimeException("master 名称重复"); - } - masterMap.put(masterConfig.getName(), new Master(masterConfig).start()); - log.info("[{} /{}:{}] connect master success", masterConfig.getName(), masterConfig.getHost(), masterConfig.getPort()); +// if (masterMap.get(masterConfig.getName()) != null) { +// log.error("master name duplicate"); +// throw new RuntimeException("master 名称重复"); +// } + this.masterClient = new MasterClient(masterConfig).start(); + log.info("connect master success: [{} /{}:{}]", masterConfig.getName(), masterConfig.getHost(), masterConfig.getPort()); } @@ -53,9 +54,7 @@ public class MasterLauncher implements ApplicationRunner { * 关闭所有 master 连接 */ public void closeAll() { - for (Master master : masterMap.values()) { - master.closeSync(); - } + this.masterClient.closeSync(); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/netty/ServerMsgHandler.java similarity index 44% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java rename to paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/netty/ServerMsgHandler.java index 89462db..31b56c9 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/netty/ServerMsgHandler.java @@ -1,8 +1,13 @@ -package com.paradogs.common.core.netty.pipelines; +package com.paradogs.common.server.netty; import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; +import com.paradogs.common.server.queue.MainMsgConsumerThread; +import com.paradogs.common.server.queue.QueueManager; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; +import lombok.Getter; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.stereotype.Component; @@ -16,6 +21,17 @@ import org.springframework.stereotype.Component; @ChannelHandler.Sharable public class ServerMsgHandler extends BaseMsgHandler { + /** + * 队列管理器 + */ + @Getter + @Autowired + private QueueManager queueManager; + + @Getter + @Autowired + private MainMsgConsumerThread handler; + /** * 设置相关参数 * @param ctx @@ -25,4 +41,19 @@ public class ServerMsgHandler extends BaseMsgHandler { protected void setProps(ChannelHandlerContext ctx, BaseMsg msg) { msg.getMsgHeader().setCtx(ctx); } + + @Override + protected boolean isEnableQueue() { + return queueManager.getQueueProperties().isEnable(); + } + + @Override + protected void processWithQueue(BaseMsg msg) throws InterruptedException { + queueManager.pushMainMsg(msg); + } + + @Override + protected void processWithoutQueue(BaseMsg msg) throws Exception { + handler.handle(msg); + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/DBTaskConsumerThread.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/DBTaskConsumerThread.java similarity index 74% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/DBTaskConsumerThread.java rename to paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/DBTaskConsumerThread.java index a989495..2f7c775 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/DBTaskConsumerThread.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/DBTaskConsumerThread.java @@ -1,10 +1,7 @@ -package com.paradogs.common.core.netty.queue; +package com.paradogs.common.server.queue; import com.paradogs.common.core.message.DBTask; -import com.paradogs.common.core.netty.codec.ServerCodec; import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/MainMsgConsumerThread.java similarity index 82% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java rename to paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/MainMsgConsumerThread.java index 5a6c689..5376eec 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/MainMsgConsumerThread.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/MainMsgConsumerThread.java @@ -1,13 +1,15 @@ -package com.paradogs.common.core.netty.queue; +package com.paradogs.common.server.queue; +import com.paradogs.common.core.events.RPCRespEvent; import com.paradogs.common.core.message.*; import com.paradogs.common.core.message.route.MsgMapping; import com.paradogs.common.core.message.route.base.MsgTargetResolver; import com.paradogs.common.core.netty.events.MainLoopEvent; -import com.paradogs.common.core.utils.BeanUtils; import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.RouteUtils; import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.common.server.utils.MsgUtils; +import com.paradogs.common.core.utils.ConnectionUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; @@ -46,6 +48,14 @@ public class MainMsgConsumerThread extends QueueConsumerThread { return; } + /** + * 响应处理 + */ + if (msg.getMsgHeader().isResp()) { + EventUtils.publishEvent(new RPCRespEvent<>(msg)); + return; + } + Method method = msgMapping.getMethod(); Object pdgController = SpringUtils.getBean(method.getDeclaringClass()); @@ -85,7 +95,7 @@ public class MainMsgConsumerThread extends QueueConsumerThread { BaseMsg gcMsg = (BaseMsg) result; MsgHeader header = new MsgHeader(); header.setPlayerId(msg.getMsgHeader().getPlayerId()); - header.setRoute(msg.getMsgHeader().getRouteMethod() + "|resp"); + header.setRoute(RouteUtils.genRespRoute(msg.getMsgHeader().getRoute(), ConnectionUtils.getServer(MsgUtils.getCurChannel()))); header.setReplyMsgId(msg.getMsgHeader().getId()); header.setCtx(msg.getMsgHeader().getCtx()); gcMsg.setMsgHeader(header); @@ -94,11 +104,11 @@ public class MainMsgConsumerThread extends QueueConsumerThread { * 返回值作为消息返回给请求者 */ MsgUtils.send( - msg.getMsgHeader().getCtx().channel(), - msg.getMsgHeader().getRouteMethod(), +// msg.getMsgHeader().getCtx().channel(), + msg.getMsgHeader().getRoute(), gcMsg ); - log.info("reply >> {}", msg.getMsgHeader()); + log.debug("reply >> {}", msg.getMsgHeader()); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConfiguration.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueConfiguration.java similarity index 95% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConfiguration.java rename to paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueConfiguration.java index 39335a7..b1dafe4 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConfiguration.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueConfiguration.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty.queue; +package com.paradogs.common.server.queue; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueConsumerThread.java similarity index 98% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java rename to paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueConsumerThread.java index 39ed398..e23a0f4 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueConsumerThread.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueConsumerThread.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty.queue; +package com.paradogs.common.server.queue; import com.paradogs.common.core.exceptions.base.GlobalExceptionDispatch; import lombok.Getter; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueManager.java similarity index 95% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java rename to paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueManager.java index a012fa0..c0c6a5f 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueManager.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueManager.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty.queue; +package com.paradogs.common.server.queue; import com.paradogs.common.core.message.BaseMsg; import com.paradogs.common.core.utils.SpringUtils; @@ -6,12 +6,10 @@ import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; import java.util.*; import java.util.concurrent.BlockingQueue; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueProperties.java similarity index 51% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java rename to paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueProperties.java index b69f15c..fc0c467 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/queue/QueueProperties.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueProperties.java @@ -1,24 +1,10 @@ -package com.paradogs.common.core.netty.queue; +package com.paradogs.common.server.queue; -import com.paradogs.common.core.annoations.PdgMsg; -import com.paradogs.common.core.annoations.PdgMsgMapping; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.netty.codec.ServerCodec; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; - /** * @author: yumi * @date: 2023/7/27 19:16 diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRpc.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRPC.java similarity index 58% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRpc.java rename to paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRPC.java index d9f17a0..1b0990a 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRpc.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRPC.java @@ -3,7 +3,7 @@ package com.paradogs.common.server.rpc; import com.paradogs.common.core.annoations.PdgMsg; import com.paradogs.common.core.annoations.PdgRPC; import com.paradogs.common.core.annoations.PdgRPCMapping; -import com.paradogs.common.core.message.GCClientInfoMsg; +import com.paradogs.common.server.ServerProperties; import java.util.concurrent.CompletableFuture; @@ -13,9 +13,9 @@ import java.util.concurrent.CompletableFuture; * @Description: TODO */ @PdgRPC("master") -public interface InitRpc { +public interface InitRPC { - @PdgRPCMapping("_init.clientInfo") - CompletableFuture getClientInfo(@PdgMsg GCClientInfoMsg msg); + @PdgRPCMapping(value = "_init.clientInfo", returnType = ServerProperties.class) + CompletableFuture getClientInfo(@PdgMsg ServerProperties msg); } diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/utils/MsgUtils.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/utils/MsgUtils.java new file mode 100644 index 0000000..69375c9 --- /dev/null +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/utils/MsgUtils.java @@ -0,0 +1,82 @@ +package com.paradogs.common.server.utils; + +import com.paradogs.common.core.events.RPCRequestEvent; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.message.MsgContextHolder; +import com.paradogs.common.core.message.MsgHeader; +import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.RouteUtils; +import com.paradogs.common.core.utils.ConnectionUtils; +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +import java.util.concurrent.CompletableFuture; + + +/** + * @author: yumi + * @date: 2023/7/27 10:33 + * @Description: TODO + */ +@Slf4j +@Component +public class MsgUtils { + + public static void send(String route, BaseMsg msg) { + if (msg.getMsgHeader() == null) { + msg.setMsgHeader(new MsgHeader()); + } + msg.getMsgHeader().setRoute(route); + Channel channel = ConnectionUtils.getChannel(msg.getMsgHeader().getServer()); + if (channel != null) { + channel.writeAndFlush(msg); + log.info("send msg to >> {}", msg.getMsgHeader().getRoute()); + } else { + log.warn("channel is null, route: {}", route); + } + } + + /** + * 发起 rpc 请求 + * @param route 路由地址 + * @param msg 发送数据 + * @param returnClass 返回结果的消息类型 + * @param + */ + public static CompletableFuture request(String route, T msg, Class returnClass, CompletableFuture promise) { + // 发起请求 + MsgUtils.send(route, msg); + // 开启响应监听 + EventUtils.on4Once(route + RouteUtils.RESPONSE_SUFFIX, msg.getMsgHeader().getId(), returnClass, promise); + return promise; + } + public static CompletableFuture request(String route, T msg, Class returnClass) { + CompletableFuture promise = new CompletableFuture<>(); + request(route, msg, returnClass, promise); + return promise; + } + + /** + * 获取当前发送消息的 Ctx + */ + public static ChannelHandlerContext getCurCtx() { + return MsgContextHolder.getCtx(); + } + + /** + * 获取当前发送消息的 Channel + */ + public static Channel getCurChannel() { + if (MsgContextHolder.getCtx() == null) {return null;} + return MsgContextHolder.getCtx().channel(); + } + + @EventListener(RPCRequestEvent.class) + public void onRPCRequestEvent(RPCRequestEvent event) { + MsgUtils.request(event.getRoute(), event.getMsg(), event.getReturnClass(), event.getPromise()); + } + +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 452161a..0aa5620 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -3,10 +3,10 @@ com.paradogs.common.server.ServerProperties com.paradogs.common.server.ServerLauncher com.paradogs.common.server.ServerChannelInitializer -com.paradogs.common.server.master.Master +com.paradogs.common.server.master.MasterClient com.paradogs.common.server.master.MasterProperties com.paradogs.common.server.master.MasterLauncher com.paradogs.common.server.master.MasterChannelInitializer -com.paradogs.common.server.rpc.TestProcess +com.paradogs.common.core.rpc.TestProcess diff --git a/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java b/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java index 81495c4..bcbe0c7 100644 --- a/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java +++ b/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java @@ -1,16 +1,17 @@ package com.paradogs.master; +import com.paradogs.common.core.annoations.EnableParadogs; import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.common.server.rpc.InitRPC; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import java.util.List; - /** * @author: yumi * @date: 2023/7/26 16:46 * @Description: TODO */ +@EnableParadogs @SpringBootApplication public class MasterApplication { public static void main(String[] args) { diff --git a/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java b/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java index 0bb62c9..0ae7a81 100644 --- a/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java +++ b/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java @@ -2,7 +2,10 @@ package com.paradogs.master.controller; import com.paradogs.common.core.annoations.PdgMsg; import com.paradogs.common.core.annoations.PdgMsgMapping; -import com.paradogs.common.core.message.GCClientInfoMsg; +import com.paradogs.common.server.utils.MsgUtils; +import com.paradogs.common.server.ServerProperties; +import com.paradogs.common.core.pojo.Connection; +import com.paradogs.common.core.utils.ConnectionUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; @@ -16,9 +19,15 @@ import org.springframework.stereotype.Controller; @PdgMsgMapping("_init") public class InitController { + /** + * 初始化记录连接的服务器数据 + * @param msg + * @return + */ @PdgMsgMapping("clientInfo") - public GCClientInfoMsg initClientInfo(@PdgMsg GCClientInfoMsg msg) { - log.info("clientInfo >> {}", msg); + public ServerProperties initClientInfo(@PdgMsg ServerProperties msg) { + Connection conn = ConnectionUtils.getConn(MsgUtils.getCurChannel()); + conn.init(msg.getType(), msg.getName()); return msg; } diff --git a/paradogs-master/src/main/java/com/paradogs/master/events/EventHandler.java b/paradogs-master/src/main/java/com/paradogs/master/events/EventHandler.java index 1d16a01..23ca86c 100644 --- a/paradogs-master/src/main/java/com/paradogs/master/events/EventHandler.java +++ b/paradogs-master/src/main/java/com/paradogs/master/events/EventHandler.java @@ -1,6 +1,8 @@ package com.paradogs.master.events; import com.paradogs.common.core.events.ChannelActiveEvent; +import com.paradogs.common.core.pojo.Connection; +import com.paradogs.common.core.utils.ConnectionUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; @@ -16,6 +18,7 @@ public class EventHandler { @EventListener(ChannelActiveEvent.class) public void onChannelActiveEvent(ChannelActiveEvent event) { + ConnectionUtils.saveNewConn(event.getCtx().channel()); log.info("a new client connect: [{}]", event.getCtx().channel().remoteAddress().toString()); } diff --git a/paradogs-master/src/main/resources/config/application.yml b/paradogs-master/src/main/resources/config/application.yml index 2b68b9e..3693706 100644 --- a/paradogs-master/src/main/resources/config/application.yml +++ b/paradogs-master/src/main/resources/config/application.yml @@ -4,4 +4,8 @@ paradogs: type: master name: master-1 is-master: true - +# 日志级别配置 +logging: + level: + # 指定的包路径 + com.paradogs: debug \ No newline at end of file diff --git a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml b/paradogs-test/paradogs-test-connector/src/main/resources/application.yml index 863c440..82724ae 100644 --- a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-connector/src/main/resources/application.yml @@ -1,11 +1,4 @@ paradogs: - server: - port: 80 - type: test - name: test-1 - connector: false - clients: + masters: - host: localhost - port: 8001 - server: game - name: game-server-1 \ No newline at end of file + port: 8888 diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java index dc0f957..63373c4 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java @@ -1,9 +1,11 @@ package com.paradogs.test.server; +import com.paradogs.common.core.annoations.EnableParadogs; import com.paradogs.common.core.utils.SpringUtils; import com.paradogs.test.server.controller.TestController; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableAsync; import java.io.IOException; import java.lang.reflect.Method; @@ -14,6 +16,7 @@ import java.util.List; * @date: 2023/7/31 23:20 * @Description: TODO */ +@EnableParadogs @SpringBootApplication public class TestServerApplication { public static void main(String[] args) { -- Gitee From f4f9d22daf979fb0f70cb3a89de9e9e39e2123f4 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Thu, 24 Aug 2023 17:57:17 +0800 Subject: [PATCH 09/32] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=20Master=20=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E8=BF=9E=E6=8E=A5=EF=BC=8C=E4=B8=8B=E4=B8=80=E6=AD=A5?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A1=86=E6=9E=B6=E6=8E=A5=E5=8F=A3=E7=9A=84?= =?UTF-8?q?=E5=85=A5=E5=8F=82=E5=92=8C=E5=87=BA=E5=8F=82=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E4=B8=8D=E7=BB=A7=E6=89=BF=20BaseMsg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../paradogs-common-client-starter/pom.xml | 1 + .../Master.java => netty/Client.java} | 28 +- .../ClientChannelInitializer.java | 2 +- .../client/netty/ClientContextHolder.java | 13 + .../{clients => netty}/ClientLauncher.java | 3 +- .../common/client/netty/ClientMsgHandler.java | 26 + .../{clients => netty}/ClientProperties.java | 2 +- .../common/client/utils/ClientUtils.java | 21 + ...ot.autoconfigure.AutoConfiguration.imports | 13 +- .../paradogs-common-connector-starter/pom.xml | 4 - .../common/connector/ConnectorMsgHandler.java | 36 +- .../common/connector/EventHandler.java | 16 +- .../common/core/message/CGTestMsg.java | 1 + .../common/core/message/MsgHeader.java | 12 +- .../paradogs/common/core/pojo/Connection.java | 2 +- .../paradogs/common/core/rpc/TestProcess.java | 31 - .../common/core/utils/ConnectionUtils.java | 12 +- .../common/core/utils/RouteUtils.java | 4 +- ...ot.autoconfigure.AutoConfiguration.imports | 4 +- .../com/paradogs/common/server/Server.java | 2 +- .../common/server/ServerProperties.java | 4 +- .../common/server/master/MasterClient.java | 16 +- .../common/server/master/MasterLauncher.java | 2 +- .../common/server/netty/ServerMsgHandler.java | 2 +- .../server/queue/MainMsgConsumerThread.java | 20 +- .../common/server/utils/MsgUtils.java | 18 +- ...ot.autoconfigure.AutoConfiguration.imports | 7 +- .../pom.xml | 26 + .../paradogs/common/masterClient}/Client.java | 6 +- .../ClientChannelInitializer.java} | 17 +- .../masterClient/ClientContextHolder.java | 13 + .../common/masterClient/ClientLauncher.java} | 37 +- .../common/masterClient/ClientMsgHandler.java | 26 + .../masterClient/ClientProperties.java} | 10 +- .../events/ClientStartEvent.java | 2 +- ...ot.autoconfigure.AutoConfiguration.imports | 7 + .../src/main/resources/config/application.yml | 0 paradogs-common/pom.xml | 3 +- paradogs-login/pom.xml | 82 -- .../com/paradogs/login/client/GateClient.java | 37 - .../login/handler/CGLoginMsgHandler.java | 57 - .../handler/GCLoginSuccessMsgHandler.java | 23 - .../paradogs/login/mapper/PlayerMapper.java | 14 - .../paradogs/login/message/CGLoginMsg.java | 24 - .../paradogs/login/message/GCLoginMsg.java | 25 - .../paradogs/login/pojo/blob/BaseBlob.java | 24 - .../login/pojo/blob/PlayerCurrency.java | 27 - .../paradogs/login/pojo/entity/Player.java | 41 - .../com/paradogs/login/proto/ProtoMsg.java | 1135 ----------------- .../paradogs/login/server/ServerRunner.java | 29 - .../paradogs/login/service/PlayerService.java | 13 - .../login/service/impl/PlayerServiceImpl.java | 16 - paradogs-login/src/main/proto/Entity.proto | 11 - .../src/main/resources/application.yml | 16 - .../java/com/paradogs/login/LoginTest.java | 27 - paradogs-master/pom.xml | 2 +- .../paradogs/master/MasterApplication.java | 1 + .../master/controller/InitController.java | 11 +- .../master/controller/MasterController.java | 28 + .../src/main/resources/config/application.yml | 2 +- .../test/client/TestClientApplication.java | 11 +- .../src/main/resources/application.yml | 2 +- .../connector/TestConnectorApplication.java | 2 + .../src/main/resources/application.yml | 5 + paradogs-test/paradogs-test-login/pom.xml | 26 + .../test}/login/LoginApplication.java | 13 +- .../src/main/resources/application.yml | 11 + .../server/controller/TestController.java | 1 + paradogs-test/pom.xml | 1 + pom.xml | 9 +- 70 files changed, 378 insertions(+), 1797 deletions(-) rename paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/{masters/Master.java => netty/Client.java} (66%) rename paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/{clients => netty}/ClientChannelInitializer.java (93%) create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientContextHolder.java rename paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/{clients => netty}/ClientLauncher.java (94%) create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientMsgHandler.java rename paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/{clients => netty}/ClientProperties.java (95%) create mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java rename paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ClientMisc.java => paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java (31%) delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/TestProcess.java create mode 100644 paradogs-common/paradogs-common-serverClient-starter/pom.xml rename paradogs-common/{paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients => paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient}/Client.java (92%) rename paradogs-common/{paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterChannelInitializer.java => paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientChannelInitializer.java} (54%) create mode 100644 paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientContextHolder.java rename paradogs-common/{paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterLauncher.java => paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientLauncher.java} (40%) create mode 100644 paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientMsgHandler.java rename paradogs-common/{paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterProperties.java => paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientProperties.java} (81%) rename paradogs-common/{paradogs-common-client-starter/src/main/java/com/paradogs/common/client => paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient}/events/ClientStartEvent.java (83%) create mode 100644 paradogs-common/paradogs-common-serverClient-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 paradogs-common/paradogs-common-serverClient-starter/src/main/resources/config/application.yml delete mode 100644 paradogs-login/pom.xml delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/client/GateClient.java delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/handler/CGLoginMsgHandler.java delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/handler/GCLoginSuccessMsgHandler.java delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/mapper/PlayerMapper.java delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/message/CGLoginMsg.java delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/message/GCLoginMsg.java delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/pojo/blob/BaseBlob.java delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/pojo/blob/PlayerCurrency.java delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/pojo/entity/Player.java delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/proto/ProtoMsg.java delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/server/ServerRunner.java delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/service/PlayerService.java delete mode 100644 paradogs-login/src/main/java/com/paradogs/login/service/impl/PlayerServiceImpl.java delete mode 100644 paradogs-login/src/main/proto/Entity.proto delete mode 100644 paradogs-login/src/main/resources/application.yml delete mode 100644 paradogs-login/src/test/java/com/paradogs/login/LoginTest.java create mode 100644 paradogs-master/src/main/java/com/paradogs/master/controller/MasterController.java create mode 100644 paradogs-test/paradogs-test-login/pom.xml rename {paradogs-login/src/main/java/com/paradogs => paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test}/login/LoginApplication.java (54%) create mode 100644 paradogs-test/paradogs-test-login/src/main/resources/application.yml diff --git a/paradogs-common/paradogs-common-client-starter/pom.xml b/paradogs-common/paradogs-common-client-starter/pom.xml index d28b00b..748d980 100644 --- a/paradogs-common/paradogs-common-client-starter/pom.xml +++ b/paradogs-common/paradogs-common-client-starter/pom.xml @@ -20,6 +20,7 @@ com.paradogs paradogs-common-core + 0.0.1 diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/Master.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/Client.java similarity index 66% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/Master.java rename to paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/Client.java index b283cf5..fbd41ff 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/Master.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/Client.java @@ -1,7 +1,5 @@ -package com.paradogs.common.client.masters; +package com.paradogs.common.client.netty; -import com.paradogs.common.client.clients.ClientChannelInitializer; -import com.paradogs.common.client.events.ClientStartEvent; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.SpringUtils; import io.netty.bootstrap.Bootstrap; @@ -17,19 +15,19 @@ import lombok.extern.slf4j.Slf4j; * @Description: TODO */ @Slf4j -public class Master { +public class Client { - private Bootstrap master; + private Bootstrap client; @Getter private Channel channel; private NioEventLoopGroup worker; - private MasterProperties.MasterConfig properties; + private ClientProperties.ClientConfig properties; - public Master(MasterProperties.MasterConfig masterConfig) { - this.properties = masterConfig; + public Client(ClientProperties.ClientConfig clientConfig) { + this.properties = clientConfig; } /** @@ -38,24 +36,24 @@ public class Master { public void start() { try { - long startTime = System.currentTimeMillis(); this.worker = new NioEventLoopGroup(); - this.master = new Bootstrap() + this.client = new Bootstrap() .group(worker) .channel(NioSocketChannel.class) .handler(SpringUtils.getBean(ClientChannelInitializer.class)); - this.channel = master.connect(properties.getHost(), properties.getPort()).sync().channel(); + this.channel = client.connect(properties.getHost(), properties.getPort()).sync().channel(); - log.info("{}:{} connect success", properties.getHost(), properties.getPort()); - EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); + + log.info("{}:{} Connect success", properties.getHost(), properties.getPort()); channel.closeFuture().addListener(future -> { log.info("[{}] server stop", this.properties.getName()); }); + } catch (Exception e) { log.error("server error:[{}]", e.getMessage(), e); this.closeSync(); @@ -70,10 +68,10 @@ public class Master { */ public boolean closeSync() { try { - if (this.channel != null && this.channel.isOpen()) { + if (this.channel.isOpen()) { channel.close().sync(); } - if (worker != null && !worker.isShutdown()) { + if (!worker.isShutdown()) { worker.shutdownGracefully(); } return true; diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientChannelInitializer.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientChannelInitializer.java similarity index 93% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientChannelInitializer.java rename to paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientChannelInitializer.java index 48fb1e8..40ba267 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientChannelInitializer.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientChannelInitializer.java @@ -1,4 +1,4 @@ -package com.paradogs.common.client.clients; +package com.paradogs.common.client.netty; import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; import io.netty.channel.ChannelHandler; diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientContextHolder.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientContextHolder.java new file mode 100644 index 0000000..a7a1957 --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientContextHolder.java @@ -0,0 +1,13 @@ +package com.paradogs.common.client.netty; + +/** + * @author: yumi + * @date: 2023/8/20 20:33 + * @Description: TODO + * 目前客户端仅连接一个,就是玩家连接 connector,所以一个上下文 Client 够了 + */ +public class ClientContextHolder { + + public static Client client; + +} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientLauncher.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientLauncher.java similarity index 94% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientLauncher.java rename to paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientLauncher.java index 3f80a4b..55973a5 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientLauncher.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientLauncher.java @@ -1,4 +1,4 @@ -package com.paradogs.common.client.clients; +package com.paradogs.common.client.netty; import lombok.Getter; import lombok.extern.slf4j.Slf4j; @@ -47,6 +47,7 @@ public class ClientLauncher implements ApplicationRunner { for (Map clientTypeList : clientMap.values()) { for (Client client : clientTypeList.values()) { client.start(); + ClientContextHolder.client = client; } } diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientMsgHandler.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientMsgHandler.java new file mode 100644 index 0000000..6a6c62a --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientMsgHandler.java @@ -0,0 +1,26 @@ +package com.paradogs.common.client.netty; + +import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; +import io.netty.channel.ChannelHandlerContext; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/20 20:47 + * @Description: TODO + */ +@Slf4j +@Component +public class ClientMsgHandler extends BaseMsgHandler { + + @Override + protected boolean isEnableQueue() { + return false; + } + + @Override + protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception { + log.info("receive msg >> {}", msg); + } +} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientProperties.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientProperties.java similarity index 95% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientProperties.java rename to paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientProperties.java index 9c14cf2..9ac5e43 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/ClientProperties.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientProperties.java @@ -1,4 +1,4 @@ -package com.paradogs.common.client.clients; +package com.paradogs.common.client.netty; import com.paradogs.common.core.utils.StringUtils; import lombok.Data; diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java new file mode 100644 index 0000000..513d118 --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java @@ -0,0 +1,21 @@ +package com.paradogs.common.client.utils; + +import com.paradogs.common.client.netty.ClientContextHolder; +import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.message.MsgHeader; + +/** + * @author: yumi + * @date: 2023/8/20 20:33 + * @Description: TODO + */ +public class ClientUtils { + + public static void send(String route, BaseMsg msg) { + MsgHeader header = new MsgHeader(); + header.setRoute(route); + msg.setMsgHeader(header); + ClientContextHolder.client.getChannel().writeAndFlush(msg); + } + +} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 81c1fd5..fde7f69 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,10 +1,7 @@ -com.paradogs.common.client.clients.Client -com.paradogs.common.client.clients.ClientProperties -com.paradogs.common.client.clients.ClientLauncher -com.paradogs.common.client.clients.ClientChannelInitializer - -com.paradogs.common.client.masters.Master -com.paradogs.common.client.masters.MasterProperties -com.paradogs.common.client.masters.MasterLauncher +com.paradogs.common.client.netty.Client +com.paradogs.common.client.netty.ClientProperties +com.paradogs.common.client.netty.ClientLauncher +com.paradogs.common.client.netty.ClientChannelInitializer +com.paradogs.common.client.netty.ClientMsgHandler diff --git a/paradogs-common/paradogs-common-connector-starter/pom.xml b/paradogs-common/paradogs-common-connector-starter/pom.xml index c035757..a83f10f 100644 --- a/paradogs-common/paradogs-common-connector-starter/pom.xml +++ b/paradogs-common/paradogs-common-connector-starter/pom.xml @@ -21,10 +21,6 @@ com.paradogs paradogs-common-server-starter - - com.paradogs - paradogs-common-client-starter - \ No newline at end of file diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java index 94b7231..beafedd 100644 --- a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java +++ b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java @@ -1,15 +1,16 @@ package com.paradogs.common.connector; -import com.paradogs.common.client.clients.Client; -import com.paradogs.common.client.clients.ClientLauncher; +import com.paradogs.common.core.message.BaseMsg; import com.paradogs.common.core.message.ByteBodyMsg; import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; +import com.paradogs.common.server.queue.MainMsgConsumerThread; +import com.paradogs.common.server.utils.MsgUtils; import io.netty.channel.ChannelHandler; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.Map; import java.util.Random; /** @@ -20,27 +21,30 @@ import java.util.Random; @Slf4j @Component @ChannelHandler.Sharable -public class ConnectorMsgHandler extends BaseMsgHandler { +public class ConnectorMsgHandler extends BaseMsgHandler { + @Getter @Autowired - private ClientLauncher clientLauncher; + private MainMsgConsumerThread handler; private Random random = new Random(); @Override - protected void processWithoutQueue(ByteBodyMsg msg) throws Exception { - // 转发消息到指定服务 - String route = msg.getMsgHeader().getServerWithRoute(); - Map clientMap = clientLauncher.getClientMap().get(route); + protected void processWithoutQueue(BaseMsg msg) throws Exception { + + // 不为要转发的消息则直接处理 + System.out.println(msg.getClass()); + System.out.println(ByteBodyMsg.class); + System.out.println(msg.getClass().isAssignableFrom(ByteBodyMsg.class)); + if (!msg.getClass().isAssignableFrom(ByteBodyMsg.class)) { + handler.handle(msg); + return; + } - Client client = clientMap.values() - .stream() - .skip(random.nextInt(clientMap.size())) - .findFirst() - .orElse(null); + // 转发消息到指定服务 + MsgUtils.send(msg.getMsgHeader().getRoute(), msg); - client.getChannel().writeAndFlush(msg); -// log.info("reward test success >>> {}", msg); + log.info("Reward success >> {}", msg); } diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ClientMisc.java b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java similarity index 31% rename from paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ClientMisc.java rename to paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java index 4b5520b..748b770 100644 --- a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ClientMisc.java +++ b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java @@ -1,22 +1,24 @@ -package com.paradogs.test.client.demo; +package com.paradogs.common.connector; -import com.paradogs.common.client.events.ClientStartEvent; +import com.paradogs.common.core.events.ChannelActiveEvent; +import com.paradogs.common.core.utils.ConnectionUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; /** * @author: yumi - * @date: 2023/8/7 11:45 + * @date: 2023/8/20 20:50 * @Description: TODO */ @Slf4j @Component -public class ClientMisc { - - @EventListener(ClientStartEvent.class) - public void clientStart() { +public class EventHandler { + @EventListener(ChannelActiveEvent.class) + public void onChannelActiveEvent(ChannelActiveEvent event) { + ConnectionUtils.saveNewConn(event.getCtx().channel()); + log.info("a new client connect: [{}]", event.getCtx().channel().remoteAddress().toString()); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java index 59a0def..0a539e8 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java @@ -12,6 +12,7 @@ import lombok.*; @Data @AllArgsConstructor @NoArgsConstructor +@ToString(callSuper = true) public class CGTestMsg extends CGMsg { private String str; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java index 51fdacd..a280bc1 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java @@ -74,13 +74,19 @@ public class MsgHeader implements IMsgSerializable { private String replyMsgId; /** - * >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 额外 Props + * 回调时发送的路由地址 */ + @Protobuf(fieldType = FieldType.STRING, order = 6, required = false) + private String callbackRoute; /** - * Channel 上下文 + * >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 额外 Props */ - private ChannelHandlerContext ctx; + +// /** +// * Channel 上下文 +// */ +// private ChannelHandlerContext ctx; public MsgHeader() { // diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java index a728d06..54fe40f 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java @@ -52,7 +52,7 @@ public class Connection { this.targetServer = targetServer; this.targetName = targetName; this.state = State.RUNNING; - log.info("init masterClient: {}", targetServer); + log.info("Init masterClient: {}", targetServer); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/TestProcess.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/TestProcess.java deleted file mode 100644 index 938536e..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/TestProcess.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.paradogs.common.core.rpc; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; -import org.springframework.stereotype.Component; - -import java.util.Set; - - -/** - * @author: yumi - * @date: 2023/8/11 17:46 - * @Description: TODO - */ -@Slf4j -@Component -public class TestProcess extends ClassPathScanningCandidateComponentProvider { - - public TestProcess() { - super(false); - } - - - - @Override - public Set findCandidateComponents(String basePackage) { - System.out.println(">>>>>>>>>>>>>>>>>"); - return super.findCandidateComponents(basePackage); - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java index 4391cf1..168b58f 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java @@ -6,11 +6,11 @@ import com.paradogs.common.core.pojo.Connection; import io.netty.channel.Channel; import lombok.Getter; import lombok.Setter; +import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.List; +import java.util.Collection; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -19,6 +19,7 @@ import java.util.concurrent.ConcurrentHashMap; * @date: 2023/8/15 15:34 * @Description: TODO */ +@Slf4j @Component public class ConnectionUtils { @@ -33,11 +34,18 @@ public class ConnectionUtils { public static Connection saveNewConn(Channel channel) { Connection conn = new Connection(channel); + if (connectionMap.containsKey(channel)) { + log.warn("connection is already exists: {}", channel); + } connectionMap.put(channel, conn); return conn; } public static Connection getConn(Channel channel) { return connectionMap.get(channel); } + public static Collection getConns() { + return connectionMap.values(); + } + public static void removeConn(Channel channel) { connectionMap.remove(channel); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java index d171054..5149a9a 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java @@ -1,7 +1,5 @@ package com.paradogs.common.core.utils; -import com.paradogs.common.core.message.BaseMsg; - /** * @author: yumi * @date: 2023/8/15 16:07 @@ -25,7 +23,7 @@ public class RouteUtils { } public static String getServer(String route) { - return route.substring(0, route.indexOf(".")); + return route.substring(0, route.indexOf("-")); } public static String getPath(String route) { diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 01ed1a9..fdf05e6 100644 --- a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,6 +1,5 @@ com.paradogs.common.core.utils.SpringUtils com.paradogs.common.core.utils.EventUtils -com.paradogs.common.server.utils.MsgUtils com.paradogs.common.core.listeners.PdgEventListener com.paradogs.common.core.message.route.RouteMsgResolver @@ -9,10 +8,9 @@ com.paradogs.common.core.rpc.RpcResponseResolver com.paradogs.common.core.netty.codec.CodecConfiguration -com.paradogs.common.server.queue.QueueConfiguration com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper -com.paradogs.common.server.netty.ServerMsgHandler + com.paradogs.common.core.netty.protocol.ProtocolProperties diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java index d2811d0..c1e8649 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java @@ -58,7 +58,7 @@ public class Server { .childHandler(SpringUtils.getBean(ServerChannelInitializer.class)); this.channel = this.server.bind(properties.getPort()).sync().channel(); - log.info("start success: [{} localhost:{}]", properties.getName(), properties.getPort()); + log.info("Start success: [{} localhost:{}]", properties.getName(), properties.getPort()); EventUtils.publishEvent(new ServerStartEvent(System.currentTimeMillis() - startTime)); channel.closeFuture().addListener(future -> { diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java index 1ea6bba..2db402b 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import java.util.UUID; @@ -20,6 +21,7 @@ import java.util.UUID; */ @Data @Component +@Scope("prototype") @AllArgsConstructor @NoArgsConstructor @ToString(callSuper = true) @@ -47,7 +49,7 @@ public class ServerProperties extends CGMsg { /** * 是否为 master,用于判断 master 不连接自身 */ - private boolean isMaster = false; + private boolean master = false; public String getName() { if (StringUtils.isNotBlank(this.name)) { diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterClient.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterClient.java index 26c375d..20b6de1 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterClient.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterClient.java @@ -53,25 +53,15 @@ public class MasterClient { // 连接成功 // EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); - // 初始化数据 InitRPC initRPC = SpringUtils.getBean(InitRPC.class); ConnectionUtils.setMasterChannel(this.channel); Connection connection = ConnectionUtils.saveNewConn(this.channel); connection.init("master", "master-1"); - int test = 0; - while (test == 0) { - initRPC.getClientInfo(SpringUtils.getBean(ServerProperties.class)) - .thenAccept(serverProperties -> log.info("receive reply >> {}", serverProperties)); - Thread.sleep(1000); - } - -// MsgUtils.request(this.channel, -// "_init.clientInfo", -// new GCClientInfoMsg(serverProperties.getType(), serverProperties.getName()), -// GCClientInfoMsg.class -// ).thenAccept(msg -> log.info("resp >> {}", msg)); + // 发送服务信息 + initRPC.getClientInfo(SpringUtils.getBean(ServerProperties.class)) + .thenAccept(serverProperties -> log.info("receive reply >> {}", serverProperties)); channel.closeFuture().addListener(future -> { log.info("[{}] server stop", this.properties.getName()); diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java index 7986625..5384422 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java @@ -44,7 +44,7 @@ public class MasterLauncher implements ApplicationRunner { // throw new RuntimeException("master 名称重复"); // } this.masterClient = new MasterClient(masterConfig).start(); - log.info("connect master success: [{} /{}:{}]", masterConfig.getName(), masterConfig.getHost(), masterConfig.getPort()); + log.info("Connect master success: [{} /{}:{}]", masterConfig.getName(), masterConfig.getHost(), masterConfig.getPort()); } diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/netty/ServerMsgHandler.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/netty/ServerMsgHandler.java index 31b56c9..a607d7a 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/netty/ServerMsgHandler.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/netty/ServerMsgHandler.java @@ -39,7 +39,7 @@ public class ServerMsgHandler extends BaseMsgHandler { */ @Override protected void setProps(ChannelHandlerContext ctx, BaseMsg msg) { - msg.getMsgHeader().setCtx(ctx); +// msg.getMsgHeader().setCtx(ctx); } @Override diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/MainMsgConsumerThread.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/MainMsgConsumerThread.java index 5376eec..1440eda 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/MainMsgConsumerThread.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/MainMsgConsumerThread.java @@ -5,11 +5,8 @@ import com.paradogs.common.core.message.*; import com.paradogs.common.core.message.route.MsgMapping; import com.paradogs.common.core.message.route.base.MsgTargetResolver; import com.paradogs.common.core.netty.events.MainLoopEvent; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.RouteUtils; -import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.common.core.utils.*; import com.paradogs.common.server.utils.MsgUtils; -import com.paradogs.common.core.utils.ConnectionUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; @@ -74,30 +71,21 @@ public class MainMsgConsumerThread extends QueueConsumerThread { .toArray() ); - if (result == null) { + if (result == null || StringUtils.isBlank(msg.getMsgHeader().getCallbackRoute())) { return; } if (!(result instanceof BaseMsg)) { log.warn("{} return no extends BaseMsg", method.getName()); return; } - if (msg.getMsgHeader().getCtx() == null) { - log.warn("msgHeader no have ctx: {}", msg); - return; - } - if (msg.getMsgHeader().getCtx().channel() == null) { - log.warn("msgHeader no have ctx.channel: {}", msg); - return; - } // !! 如果把请求参数返回,返回值的类会和请求参数地址一样,英文就是 msg == gcMsg // 准备返回消息 BaseMsg gcMsg = (BaseMsg) result; MsgHeader header = new MsgHeader(); header.setPlayerId(msg.getMsgHeader().getPlayerId()); - header.setRoute(RouteUtils.genRespRoute(msg.getMsgHeader().getRoute(), ConnectionUtils.getServer(MsgUtils.getCurChannel()))); + header.setRoute(msg.getMsgHeader().getCallbackRoute()); header.setReplyMsgId(msg.getMsgHeader().getId()); - header.setCtx(msg.getMsgHeader().getCtx()); gcMsg.setMsgHeader(header); /** @@ -108,7 +96,7 @@ public class MainMsgConsumerThread extends QueueConsumerThread { msg.getMsgHeader().getRoute(), gcMsg ); - log.debug("reply >> {}", msg.getMsgHeader()); + log.info("reply >> {}", msg.getMsgHeader()); } diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/utils/MsgUtils.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/utils/MsgUtils.java index 69375c9..a3f335e 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/utils/MsgUtils.java +++ b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/utils/MsgUtils.java @@ -7,9 +7,11 @@ import com.paradogs.common.core.message.MsgHeader; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.RouteUtils; import com.paradogs.common.core.utils.ConnectionUtils; +import com.paradogs.common.server.ServerProperties; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; @@ -25,15 +27,23 @@ import java.util.concurrent.CompletableFuture; @Component public class MsgUtils { + private static ServerProperties serverProperties; + + @Autowired + public void setServerProperties(ServerProperties serverProperties) { + MsgUtils.serverProperties = serverProperties; + } + public static void send(String route, BaseMsg msg) { if (msg.getMsgHeader() == null) { msg.setMsgHeader(new MsgHeader()); } + Channel channel = serverProperties.isMaster() ? ConnectionUtils.getChannel(RouteUtils.getServer(route)) : ConnectionUtils.getMasterChannel(); msg.getMsgHeader().setRoute(route); - Channel channel = ConnectionUtils.getChannel(msg.getMsgHeader().getServer()); + if (channel != null) { channel.writeAndFlush(msg); - log.info("send msg to >> {}", msg.getMsgHeader().getRoute()); + log.info("Send msg to >> {}", msg.getMsgHeader().getRoute()); } else { log.warn("channel is null, route: {}", route); } @@ -47,6 +57,10 @@ public class MsgUtils { * @param */ public static CompletableFuture request(String route, T msg, Class returnClass, CompletableFuture promise) { + if (msg.getMsgHeader() == null) { + msg.setMsgHeader(new MsgHeader()); + } + msg.getMsgHeader().setCallbackRoute(RouteUtils.genRespRoute(route, serverProperties.getType())); // 发起请求 MsgUtils.send(route, msg); // 开启响应监听 diff --git a/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 0aa5620..911edc3 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -8,5 +8,10 @@ com.paradogs.common.server.master.MasterProperties com.paradogs.common.server.master.MasterLauncher com.paradogs.common.server.master.MasterChannelInitializer -com.paradogs.common.core.rpc.TestProcess +com.paradogs.common.server.queue.QueueConfiguration +com.paradogs.common.server.netty.ServerMsgHandler +com.paradogs.common.server.utils.MsgUtils + + + diff --git a/paradogs-common/paradogs-common-serverClient-starter/pom.xml b/paradogs-common/paradogs-common-serverClient-starter/pom.xml new file mode 100644 index 0000000..9d2ab36 --- /dev/null +++ b/paradogs-common/paradogs-common-serverClient-starter/pom.xml @@ -0,0 +1,26 @@ + + + + paradogs-common + com.paradogs + 0.0.1 + + 4.0.0 + + paradogs-common-serverClient-starter + + + 8 + 8 + + + + + com.paradogs + paradogs-common-core + + + + \ No newline at end of file diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/Client.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/Client.java similarity index 92% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/Client.java rename to paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/Client.java index bc91fb8..a9832b4 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/clients/Client.java +++ b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/Client.java @@ -1,6 +1,6 @@ -package com.paradogs.common.client.clients; +package com.paradogs.common.masterClient; -import com.paradogs.common.client.events.ClientStartEvent; +import com.paradogs.common.masterClient.events.ClientStartEvent; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.SpringUtils; import io.netty.bootstrap.Bootstrap; @@ -49,7 +49,7 @@ public class Client { this.channel = client.connect(properties.getHost(), properties.getPort()).sync().channel(); - log.info("{}:{} connect success", properties.getHost(), properties.getPort()); + log.info("{}:{} Connect success", properties.getHost(), properties.getPort()); EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); channel.closeFuture().addListener(future -> { diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterChannelInitializer.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientChannelInitializer.java similarity index 54% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterChannelInitializer.java rename to paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientChannelInitializer.java index 9f12ba6..48cb1e1 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterChannelInitializer.java +++ b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientChannelInitializer.java @@ -1,12 +1,10 @@ -package com.paradogs.common.client.masters; +package com.paradogs.common.masterClient; import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.nio.NioSocketChannel; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** @@ -17,25 +15,16 @@ import org.springframework.stereotype.Component; @Slf4j @Component @ChannelHandler.Sharable -public class MasterChannelInitializer extends BaseChannelInitializer { +public class ClientChannelInitializer extends BaseChannelInitializer { - @Value("${paradogs.server.type}") - private String serverType; - - @Value("${paradogs.server.name}") - private String serverName; @Override protected void initPipeline2(ChannelPipeline pipeline) { +// pipeline.addLast() } @Override protected void initAfter(NioSocketChannel channel) { } - @Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - super.channelActive(ctx); - } - } \ No newline at end of file diff --git a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientContextHolder.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientContextHolder.java new file mode 100644 index 0000000..780ceed --- /dev/null +++ b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientContextHolder.java @@ -0,0 +1,13 @@ +package com.paradogs.common.masterClient; + +/** + * @author: yumi + * @date: 2023/8/20 20:33 + * @Description: TODO + * 目前客户端仅连接一个,就是玩家连接 connector,所以一个上下文 Client 够了 + */ +public class ClientContextHolder { + + public static Client client; + +} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterLauncher.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientLauncher.java similarity index 40% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterLauncher.java rename to paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientLauncher.java index cc66c3b..d7eb9e6 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterLauncher.java +++ b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientLauncher.java @@ -1,4 +1,4 @@ -package com.paradogs.common.client.masters; +package com.paradogs.common.masterClient; import lombok.Getter; import lombok.extern.slf4j.Slf4j; @@ -18,44 +18,45 @@ import java.util.Map; @Slf4j @Getter @Component -public class MasterLauncher implements ApplicationRunner { +public class ClientLauncher implements ApplicationRunner { @Autowired - private MasterProperties masterProperties; + private ClientProperties clientProperties; /** - * server[name[master]] + * server[name[client]] */ - private Map> masterMap = new HashMap<>(); + private Map> clientMap = new HashMap<>(); + - @Override public void run(ApplicationArguments args) { - if (masterProperties == null || masterProperties.getMasters() == null) { + if (clientProperties == null || clientProperties.getClients() == null) { return; -// throw new RuntimeException("no found masterProperties: null"); +// throw new RuntimeException("no found clientProperties: null"); } - for (MasterProperties.MasterConfig masterConfig : masterProperties.getMasters()) { - if (masterMap.get(masterConfig.getServer()) == null) { - masterMap.put(masterConfig.getServer(), new HashMap<>()); + for (ClientProperties.ClientConfig clientConfig : clientProperties.getClients()) { + if (clientMap.get(clientConfig.getServer()) == null) { + clientMap.put(clientConfig.getServer(), new HashMap<>()); } - masterMap.get(masterConfig.getServer()).put(masterConfig.getName(), new Master(masterConfig)); + clientMap.get(clientConfig.getServer()).put(clientConfig.getName(), new Client(clientConfig)); } - for (Map masterTypeList : masterMap.values()) { - for (Master master : masterTypeList.values()) { - master.start(); + for (Map clientTypeList : clientMap.values()) { + for (Client client : clientTypeList.values()) { + client.start(); + ClientContextHolder.client = client; } } } public void closeAll() { - for (Map masterTypeList : masterMap.values()) { - for (Master master : masterTypeList.values()) { - master.closeSync(); + for (Map clientTypeList : clientMap.values()) { + for (Client client : clientTypeList.values()) { + client.closeSync(); } } } diff --git a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientMsgHandler.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientMsgHandler.java new file mode 100644 index 0000000..341cbc9 --- /dev/null +++ b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientMsgHandler.java @@ -0,0 +1,26 @@ +package com.paradogs.common.masterClient; + +import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; +import io.netty.channel.ChannelHandlerContext; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/20 20:47 + * @Description: TODO + */ +@Slf4j +@Component +public class ClientMsgHandler extends BaseMsgHandler { + + @Override + protected boolean isEnableQueue() { + return false; + } + + @Override + protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception { + log.info("receive msg >> {}", msg); + } +} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterProperties.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientProperties.java similarity index 81% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterProperties.java rename to paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientProperties.java index fdbe003..a16dc43 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/masters/MasterProperties.java +++ b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientProperties.java @@ -1,4 +1,4 @@ -package com.paradogs.common.client.masters; +package com.paradogs.common.masterClient; import com.paradogs.common.core.utils.StringUtils; import lombok.Data; @@ -15,13 +15,13 @@ import java.util.List; @Data @Component @ConfigurationProperties("paradogs") -public class MasterProperties { +public class ClientProperties { - private List masters; + private List clients; @Data @Component - public static class MasterConfig { + public static class ClientConfig { /** * 主机 ip */ @@ -44,7 +44,7 @@ public class MasterProperties { public String getName() { if (StringUtils.isBlank(this.name)) { - this.name = "Master"; + this.name = "Client"; } return name; } diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/events/ClientStartEvent.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/events/ClientStartEvent.java similarity index 83% rename from paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/events/ClientStartEvent.java rename to paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/events/ClientStartEvent.java index efe4532..d0182ce 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/events/ClientStartEvent.java +++ b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/events/ClientStartEvent.java @@ -1,4 +1,4 @@ -package com.paradogs.common.client.events; +package com.paradogs.common.masterClient.events; import com.paradogs.common.core.events.base.BaseEvent; diff --git a/paradogs-common/paradogs-common-serverClient-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-serverClient-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..a8d3bfe --- /dev/null +++ b/paradogs-common/paradogs-common-serverClient-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,7 @@ +com.paradogs.common.masterClient.Client +com.paradogs.common.masterClient.ClientProperties +com.paradogs.common.masterClient.ClientLauncher +com.paradogs.common.masterClient.ClientChannelInitializer +com.paradogs.common.masterClient.ClientMsgHandler + + diff --git a/paradogs-common/paradogs-common-serverClient-starter/src/main/resources/config/application.yml b/paradogs-common/paradogs-common-serverClient-starter/src/main/resources/config/application.yml new file mode 100644 index 0000000..e69de29 diff --git a/paradogs-common/pom.xml b/paradogs-common/pom.xml index 42a3ac8..488f124 100644 --- a/paradogs-common/pom.xml +++ b/paradogs-common/pom.xml @@ -14,8 +14,9 @@ paradogs-common-core paradogs-common-redis paradogs-common-server-starter - paradogs-common-client-starter + paradogs-common-serverClient-starter paradogs-common-connector-starter + paradogs-common-client-starter diff --git a/paradogs-login/pom.xml b/paradogs-login/pom.xml deleted file mode 100644 index 4284a24..0000000 --- a/paradogs-login/pom.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - paradogs - com.paradogs - 0.0.1-SNAPSHOT - - 4.0.0 - - paradogs-login - - - - - com.paradogs - paradogs-common - - - - org.springframework.boot - spring-boot-starter-test - - - - org.springframework.boot - spring-boot-starter-data-redis - - - - com.baomidou - mybatis-plus-boot-starter - - - - com.paradogs - paradogs-game - - - - - - - - kr.motd.maven - os-maven-plugin - 1.4.1.Final - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.xolstice.maven.plugins - protobuf-maven-plugin - 0.5.0 - - - com.google.protobuf:protoc:3.1.0:exe:${os.detected.classifier} - - grpc-java - - io.grpc:protoc-gen-grpc-java:1.29.0:exe:${os.detected.classifier} - - - - - - compile - compile-custom - - - - - - - - - \ No newline at end of file diff --git a/paradogs-login/src/main/java/com/paradogs/login/client/GateClient.java b/paradogs-login/src/main/java/com/paradogs/login/client/GateClient.java deleted file mode 100644 index b7ffac0..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/client/GateClient.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.paradogs.login.client; - -import com.paradogs.common.misc.GameChannelInitializer; -import io.netty.bootstrap.Bootstrap; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.nio.NioSocketChannel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-02-24 16:54 - * @Description: TODO - */ -@Slf4j -@Component -public class GateClient { - - @Value("${netty.gate.port}") - private Integer port; - - private Bootstrap client; - - public void start() { - - this.client = new Bootstrap() - .group(new NioEventLoopGroup()) - .channel(NioSocketChannel.class) - .handler(new GameChannelInitializer()); - - this.client.connect("localhost", port); - - - } - -} diff --git a/paradogs-login/src/main/java/com/paradogs/login/handler/CGLoginMsgHandler.java b/paradogs-login/src/main/java/com/paradogs/login/handler/CGLoginMsgHandler.java deleted file mode 100644 index b45361a..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/handler/CGLoginMsgHandler.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.paradogs.login.handler; - -import com.paradogs.common.handler.BaseHandler; -import com.paradogs.common.utils.Wrap; -import com.paradogs.game.message.CGLoginSuccessMsg; -import com.paradogs.login.message.CGLoginMsg; -import com.paradogs.login.message.GCLoginMsg; -import com.paradogs.login.pojo.entity.Player; -import com.paradogs.login.service.PlayerService; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/2/25 12:44 - * @Description: TODO - */ -@Slf4j -@Component -public class CGLoginMsgHandler implements BaseHandler { - - @Autowired - private PlayerService playerService; - - @Override - public void handler(Channel channel, CGLoginMsg msg) { - log.info("receive msg [{}]", msg); - - Player player = playerService.getOne(Wrap.lbq() - .eq(Player::getAccount, msg.getAccount()) - .eq(Player::getPwd, msg.getPwd()) - ); - - - // 登录失败 - if (player == null) { - GCLoginMsg gcLoginMsg = msg.buildGC().setReason(false); - channel.writeAndFlush(gcLoginMsg); - log.info("send GCLoginMsg [{}]", gcLoginMsg); - return; - } - - // 向游戏服发送登录请求 - CGLoginSuccessMsg cgLoginSuccessMsg = new CGLoginSuccessMsg(player.getId()); - cgLoginSuccessMsg.getMsgHeader().setChannelId(msg.getMsgHeader().getChannelId()); - channel.writeAndFlush(cgLoginSuccessMsg); - log.info("send CGLoginSuccessMsg [{}]", cgLoginSuccessMsg); - -// // 登录成功 - GCLoginMsg gcLoginMsg = msg.buildGC().setReason(true); - channel.writeAndFlush(gcLoginMsg); - log.info("send GCLoginMsg [{}]", gcLoginMsg); - - } -} diff --git a/paradogs-login/src/main/java/com/paradogs/login/handler/GCLoginSuccessMsgHandler.java b/paradogs-login/src/main/java/com/paradogs/login/handler/GCLoginSuccessMsgHandler.java deleted file mode 100644 index bd1e545..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/handler/GCLoginSuccessMsgHandler.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.paradogs.login.handler; - -import com.paradogs.common.handler.BaseHandler; -import com.paradogs.game.message.GCLoginSuccessMsg; -import io.netty.channel.Channel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-03-06 16:08 - * @Description: 游戏服登录成功响应 - */ -@Slf4j -@Component -public class GCLoginSuccessMsgHandler implements BaseHandler { - - @Override - public void handler(Channel channel, GCLoginSuccessMsg msg) { - log.info("receive msg [{}]", msg); - } - -} diff --git a/paradogs-login/src/main/java/com/paradogs/login/mapper/PlayerMapper.java b/paradogs-login/src/main/java/com/paradogs/login/mapper/PlayerMapper.java deleted file mode 100644 index 0a656be..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/mapper/PlayerMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.paradogs.login.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.paradogs.login.pojo.entity.Player; -import org.apache.ibatis.annotations.Mapper; - -/** - * @author: yumi - * @date: 2023/2/18 14:55 - * @Description: TODO - */ -@Mapper -public interface PlayerMapper extends BaseMapper { -} diff --git a/paradogs-login/src/main/java/com/paradogs/login/message/CGLoginMsg.java b/paradogs-login/src/main/java/com/paradogs/login/message/CGLoginMsg.java deleted file mode 100644 index 9f6c780..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/message/CGLoginMsg.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.paradogs.login.message; - -import com.paradogs.common.message.CGMessage; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023/2/25 12:30 - * @Description: TODO - */ -@Data -public class CGLoginMsg extends CGMessage { - - /** - * 账号 - */ - private String account; - - /** - * 密码 - */ - private String pwd; - -} diff --git a/paradogs-login/src/main/java/com/paradogs/login/message/GCLoginMsg.java b/paradogs-login/src/main/java/com/paradogs/login/message/GCLoginMsg.java deleted file mode 100644 index 6d4fdb5..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/message/GCLoginMsg.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.paradogs.login.message; - -import com.paradogs.common.message.GCMessage; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; - -/** - * @author: yumi - * @date: 2023/2/25 12:39 - * @Description: TODO - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@Accessors(chain = true) -public class GCLoginMsg extends GCMessage { - - /** - * 登录是否成功 - */ - private Boolean reason; - -} diff --git a/paradogs-login/src/main/java/com/paradogs/login/pojo/blob/BaseBlob.java b/paradogs-login/src/main/java/com/paradogs/login/pojo/blob/BaseBlob.java deleted file mode 100644 index 1b77369..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/pojo/blob/BaseBlob.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.paradogs.login.pojo.blob; - -import lombok.Data; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectOutputStream; -import java.io.Serializable; - -/** - * @author: yumi - * @date: 2023/2/19 10:24 - * @Description: TODO - */ -@Data -public class BaseBlob implements Serializable { - - public byte[] toByteArray() throws IOException { - ByteArrayOutputStream bo = new ByteArrayOutputStream(); - ObjectOutputStream oos = new ObjectOutputStream(bo); - oos.writeObject(this); - return bo.toByteArray(); - } -} diff --git a/paradogs-login/src/main/java/com/paradogs/login/pojo/blob/PlayerCurrency.java b/paradogs-login/src/main/java/com/paradogs/login/pojo/blob/PlayerCurrency.java deleted file mode 100644 index d09c911..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/pojo/blob/PlayerCurrency.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.paradogs.login.pojo.blob; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author: yumi - * @date: 2023-02-28 11:45 - * @Description: TODO - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class PlayerCurrency extends BaseBlob { - - /** - * 金币 - */ - private Long gold; - - /** - * 木材 - */ - private Long wood; - -} diff --git a/paradogs-login/src/main/java/com/paradogs/login/pojo/entity/Player.java b/paradogs-login/src/main/java/com/paradogs/login/pojo/entity/Player.java deleted file mode 100644 index de02291..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/pojo/entity/Player.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.paradogs.login.pojo.entity; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.paradogs.login.pojo.blob.PlayerCurrency; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * 登陆器仅用于登录的玩家对象,也可以提高效率, - * 避免 blob 加载错误(可以引用 game 的 entity 模块解决,暂无) - * @author: yumi - * @date: 2023/2/18 12:16 - * @Description: TODO - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -@TableName(value = "player", autoResultMap = true) -public class Player implements Serializable { - - @TableId(type = IdType.AUTO) - private Long id; - - @TableField("account") - private String account; - - @TableField("pwd") - private String pwd; - - public Player(String account, String pwd, PlayerCurrency currency) { - this.account = account; - this.pwd = pwd; - } - -} diff --git a/paradogs-login/src/main/java/com/paradogs/login/proto/ProtoMsg.java b/paradogs-login/src/main/java/com/paradogs/login/proto/ProtoMsg.java deleted file mode 100644 index 173448c..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/proto/ProtoMsg.java +++ /dev/null @@ -1,1135 +0,0 @@ -package com.paradogs.login.proto;// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: Entity.proto - -public final class ProtoMsg { - private ProtoMsg() {} - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistryLite registry) { - } - - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistry registry) { - registerAllExtensions( - (com.google.protobuf.ExtensionRegistryLite) registry); - } - public interface CGLoginMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:CGLoginMsg) - com.google.protobuf.MessageOrBuilder { - - /** - * optional string account = 1; - */ - String getAccount(); - /** - * optional string account = 1; - */ - com.google.protobuf.ByteString - getAccountBytes(); - - /** - * optional string pwd = 2; - */ - String getPwd(); - /** - * optional string pwd = 2; - */ - com.google.protobuf.ByteString - getPwdBytes(); - } - /** - * Protobuf type {@code CGLoginMsg} - */ - public static final class CGLoginMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:CGLoginMsg) - CGLoginMsgOrBuilder { - // Use CGLoginMsg.newBuilder() to construct. - private CGLoginMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private CGLoginMsg() { - account_ = ""; - pwd_ = ""; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private CGLoginMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 10: { - String s = input.readStringRequireUtf8(); - - account_ = s; - break; - } - case 18: { - String s = input.readStringRequireUtf8(); - - pwd_ = s; - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGLoginMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGLoginMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGLoginMsg.class, Builder.class); - } - - public static final int ACCOUNT_FIELD_NUMBER = 1; - private volatile Object account_; - /** - * optional string account = 1; - */ - public String getAccount() { - Object ref = account_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - account_ = s; - return s; - } - } - /** - * optional string account = 1; - */ - public com.google.protobuf.ByteString - getAccountBytes() { - Object ref = account_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - account_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - public static final int PWD_FIELD_NUMBER = 2; - private volatile Object pwd_; - /** - * optional string pwd = 2; - */ - public String getPwd() { - Object ref = pwd_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - pwd_ = s; - return s; - } - } - /** - * optional string pwd = 2; - */ - public com.google.protobuf.ByteString - getPwdBytes() { - Object ref = pwd_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - pwd_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (!getAccountBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, account_); - } - if (!getPwdBytes().isEmpty()) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 2, pwd_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (!getAccountBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, account_); - } - if (!getPwdBytes().isEmpty()) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, pwd_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof CGLoginMsg)) { - return super.equals(obj); - } - CGLoginMsg other = (CGLoginMsg) obj; - - boolean result = true; - result = result && getAccount() - .equals(other.getAccount()); - result = result && getPwd() - .equals(other.getPwd()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + ACCOUNT_FIELD_NUMBER; - hash = (53 * hash) + getAccount().hashCode(); - hash = (37 * hash) + PWD_FIELD_NUMBER; - hash = (53 * hash) + getPwd().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static CGLoginMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGLoginMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGLoginMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static CGLoginMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static CGLoginMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGLoginMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static CGLoginMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static CGLoginMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static CGLoginMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static CGLoginMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(CGLoginMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code CGLoginMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:CGLoginMsg) - CGLoginMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_CGLoginMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_CGLoginMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - CGLoginMsg.class, Builder.class); - } - - // Construct using ProtoMsg.CGLoginMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - account_ = ""; - - pwd_ = ""; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_CGLoginMsg_descriptor; - } - - public CGLoginMsg getDefaultInstanceForType() { - return CGLoginMsg.getDefaultInstance(); - } - - public CGLoginMsg build() { - CGLoginMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public CGLoginMsg buildPartial() { - CGLoginMsg result = new CGLoginMsg(this); - result.account_ = account_; - result.pwd_ = pwd_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof CGLoginMsg) { - return mergeFrom((CGLoginMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(CGLoginMsg other) { - if (other == CGLoginMsg.getDefaultInstance()) return this; - if (!other.getAccount().isEmpty()) { - account_ = other.account_; - onChanged(); - } - if (!other.getPwd().isEmpty()) { - pwd_ = other.pwd_; - onChanged(); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - CGLoginMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (CGLoginMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private Object account_ = ""; - /** - * optional string account = 1; - */ - public String getAccount() { - Object ref = account_; - if (!(ref instanceof String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - account_ = s; - return s; - } else { - return (String) ref; - } - } - /** - * optional string account = 1; - */ - public com.google.protobuf.ByteString - getAccountBytes() { - Object ref = account_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - account_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string account = 1; - */ - public Builder setAccount( - String value) { - if (value == null) { - throw new NullPointerException(); - } - - account_ = value; - onChanged(); - return this; - } - /** - * optional string account = 1; - */ - public Builder clearAccount() { - - account_ = getDefaultInstance().getAccount(); - onChanged(); - return this; - } - /** - * optional string account = 1; - */ - public Builder setAccountBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - account_ = value; - onChanged(); - return this; - } - - private Object pwd_ = ""; - /** - * optional string pwd = 2; - */ - public String getPwd() { - Object ref = pwd_; - if (!(ref instanceof String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - pwd_ = s; - return s; - } else { - return (String) ref; - } - } - /** - * optional string pwd = 2; - */ - public com.google.protobuf.ByteString - getPwdBytes() { - Object ref = pwd_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (String) ref); - pwd_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * optional string pwd = 2; - */ - public Builder setPwd( - String value) { - if (value == null) { - throw new NullPointerException(); - } - - pwd_ = value; - onChanged(); - return this; - } - /** - * optional string pwd = 2; - */ - public Builder clearPwd() { - - pwd_ = getDefaultInstance().getPwd(); - onChanged(); - return this; - } - /** - * optional string pwd = 2; - */ - public Builder setPwdBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - pwd_ = value; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:CGLoginMsg) - } - - // @@protoc_insertion_point(class_scope:CGLoginMsg) - private static final CGLoginMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new CGLoginMsg(); - } - - public static CGLoginMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public CGLoginMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new CGLoginMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public CGLoginMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface GCLoginMsgOrBuilder extends - // @@protoc_insertion_point(interface_extends:GCLoginMsg) - com.google.protobuf.MessageOrBuilder { - - /** - * optional bool reason = 1; - */ - boolean getReason(); - } - /** - * Protobuf type {@code GCLoginMsg} - */ - public static final class GCLoginMsg extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:GCLoginMsg) - GCLoginMsgOrBuilder { - // Use GCLoginMsg.newBuilder() to construct. - private GCLoginMsg(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private GCLoginMsg() { - reason_ = false; - } - - @Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return com.google.protobuf.UnknownFieldSet.getDefaultInstance(); - } - private GCLoginMsg( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - int mutable_bitField0_ = 0; - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!input.skipField(tag)) { - done = true; - } - break; - } - case 8: { - - reason_ = input.readBool(); - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCLoginMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCLoginMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCLoginMsg.class, Builder.class); - } - - public static final int REASON_FIELD_NUMBER = 1; - private boolean reason_; - /** - * optional bool reason = 1; - */ - public boolean getReason() { - return reason_; - } - - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (reason_ != false) { - output.writeBool(1, reason_); - } - } - - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (reason_ != false) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(1, reason_); - } - memoizedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof GCLoginMsg)) { - return super.equals(obj); - } - GCLoginMsg other = (GCLoginMsg) obj; - - boolean result = true; - result = result && (getReason() - == other.getReason()); - return result; - } - - @Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptorForType().hashCode(); - hash = (37 * hash) + REASON_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getReason()); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static GCLoginMsg parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCLoginMsg parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCLoginMsg parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static GCLoginMsg parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static GCLoginMsg parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCLoginMsg parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static GCLoginMsg parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static GCLoginMsg parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static GCLoginMsg parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static GCLoginMsg parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(GCLoginMsg prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @Override - protected Builder newBuilderForType( - BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code GCLoginMsg} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:GCLoginMsg) - GCLoginMsgOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return ProtoMsg.internal_static_GCLoginMsg_descriptor; - } - - protected FieldAccessorTable - internalGetFieldAccessorTable() { - return ProtoMsg.internal_static_GCLoginMsg_fieldAccessorTable - .ensureFieldAccessorsInitialized( - GCLoginMsg.class, Builder.class); - } - - // Construct using ProtoMsg.GCLoginMsg.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - public Builder clear() { - super.clear(); - reason_ = false; - - return this; - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return ProtoMsg.internal_static_GCLoginMsg_descriptor; - } - - public GCLoginMsg getDefaultInstanceForType() { - return GCLoginMsg.getDefaultInstance(); - } - - public GCLoginMsg build() { - GCLoginMsg result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public GCLoginMsg buildPartial() { - GCLoginMsg result = new GCLoginMsg(this); - result.reason_ = reason_; - onBuilt(); - return result; - } - - public Builder clone() { - return (Builder) super.clone(); - } - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.setField(field, value); - } - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return (Builder) super.clearField(field); - } - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return (Builder) super.clearOneof(oneof); - } - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, Object value) { - return (Builder) super.setRepeatedField(field, index, value); - } - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - Object value) { - return (Builder) super.addRepeatedField(field, value); - } - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof GCLoginMsg) { - return mergeFrom((GCLoginMsg)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(GCLoginMsg other) { - if (other == GCLoginMsg.getDefaultInstance()) return this; - if (other.getReason() != false) { - setReason(other.getReason()); - } - onChanged(); - return this; - } - - public final boolean isInitialized() { - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - GCLoginMsg parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (GCLoginMsg) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private boolean reason_ ; - /** - * optional bool reason = 1; - */ - public boolean getReason() { - return reason_; - } - /** - * optional bool reason = 1; - */ - public Builder setReason(boolean value) { - - reason_ = value; - onChanged(); - return this; - } - /** - * optional bool reason = 1; - */ - public Builder clearReason() { - - reason_ = false; - onChanged(); - return this; - } - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return this; - } - - - // @@protoc_insertion_point(builder_scope:GCLoginMsg) - } - - // @@protoc_insertion_point(class_scope:GCLoginMsg) - private static final GCLoginMsg DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new GCLoginMsg(); - } - - public static GCLoginMsg getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - public GCLoginMsg parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new GCLoginMsg(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - public GCLoginMsg getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_CGLoginMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_CGLoginMsg_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_GCLoginMsg_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_GCLoginMsg_fieldAccessorTable; - - public static com.google.protobuf.Descriptors.FileDescriptor - getDescriptor() { - return descriptor; - } - private static com.google.protobuf.Descriptors.FileDescriptor - descriptor; - static { - String[] descriptorData = { - "\n\014Entity.proto\"*\n\nCGLoginMsg\022\017\n\007account\030" + - "\001 \001(\t\022\013\n\003pwd\030\002 \001(\t\"\034\n\nGCLoginMsg\022\016\n\006reas" + - "on\030\001 \001(\010B\nB\010ProtoMsgb\006proto3" - }; - com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = - new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { - public com.google.protobuf.ExtensionRegistry assignDescriptors( - com.google.protobuf.Descriptors.FileDescriptor root) { - descriptor = root; - return null; - } - }; - com.google.protobuf.Descriptors.FileDescriptor - .internalBuildGeneratedFileFrom(descriptorData, - new com.google.protobuf.Descriptors.FileDescriptor[] { - }, assigner); - internal_static_CGLoginMsg_descriptor = - getDescriptor().getMessageTypes().get(0); - internal_static_CGLoginMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_CGLoginMsg_descriptor, - new String[] { "Account", "Pwd", }); - internal_static_GCLoginMsg_descriptor = - getDescriptor().getMessageTypes().get(1); - internal_static_GCLoginMsg_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_GCLoginMsg_descriptor, - new String[] { "Reason", }); - } - - // @@protoc_insertion_point(outer_class_scope) -} diff --git a/paradogs-login/src/main/java/com/paradogs/login/server/ServerRunner.java b/paradogs-login/src/main/java/com/paradogs/login/server/ServerRunner.java deleted file mode 100644 index 08ac344..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/server/ServerRunner.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.paradogs.login.server; - -import com.paradogs.common.server.netty.server.ParadogsServer; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023-02-24 14:36 - * @Description: TODO - */ -@Slf4j -@Component -public class ServerRunner implements ApplicationRunner { - - @Autowired - private ParadogsServer loginServer; - - @Override - public void run(ApplicationArguments args) throws Exception { - - loginServer.start(); - log.info("login start"); - - } -} diff --git a/paradogs-login/src/main/java/com/paradogs/login/service/PlayerService.java b/paradogs-login/src/main/java/com/paradogs/login/service/PlayerService.java deleted file mode 100644 index 8aea927..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/service/PlayerService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.paradogs.login.service; - - -import com.baomidou.mybatisplus.extension.service.IService; -import com.paradogs.login.pojo.entity.Player; - -/** - * @author: yumi - * @date: 2023/2/18 14:55 - * @Description: TODO - */ -public interface PlayerService extends IService { -} diff --git a/paradogs-login/src/main/java/com/paradogs/login/service/impl/PlayerServiceImpl.java b/paradogs-login/src/main/java/com/paradogs/login/service/impl/PlayerServiceImpl.java deleted file mode 100644 index bc87c4a..0000000 --- a/paradogs-login/src/main/java/com/paradogs/login/service/impl/PlayerServiceImpl.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.paradogs.login.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.paradogs.login.mapper.PlayerMapper; -import com.paradogs.login.pojo.entity.Player; -import com.paradogs.login.service.PlayerService; -import org.springframework.stereotype.Service; - -/** - * @author: yumi - * @date: 2023/2/18 15:00 - * @Description: TODO - */ -@Service -public class PlayerServiceImpl extends ServiceImpl implements PlayerService { -} diff --git a/paradogs-login/src/main/proto/Entity.proto b/paradogs-login/src/main/proto/Entity.proto deleted file mode 100644 index 4c0497b..0000000 --- a/paradogs-login/src/main/proto/Entity.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; -option java_outer_classname = "ProtoMsg"; - -message CGLoginMsg { - string account = 1; - string pwd = 2; -} - -message GCLoginMsg { - bool reason = 1; -} \ No newline at end of file diff --git a/paradogs-login/src/main/resources/application.yml b/paradogs-login/src/main/resources/application.yml deleted file mode 100644 index b5b6843..0000000 --- a/paradogs-login/src/main/resources/application.yml +++ /dev/null @@ -1,16 +0,0 @@ -netty: - server: - port: 8001 - gate: - port: 80 - -spring: - datasource: - url: jdbc:mysql://47.102.133.168:3306/netty?useUnicode=true&characterEncoding=utf-8&useSSL=false - driver-class-name: com.mysql.jdbc.Driver - username: root - password: root - -mybatis-plus: - configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl \ No newline at end of file diff --git a/paradogs-login/src/test/java/com/paradogs/login/LoginTest.java b/paradogs-login/src/test/java/com/paradogs/login/LoginTest.java deleted file mode 100644 index 3cde8c3..0000000 --- a/paradogs-login/src/test/java/com/paradogs/login/LoginTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.paradogs.login; - - -import com.paradogs.login.service.PlayerService; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -/** - * @author: yumi - * @date: 2023/2/24 20:07 - * @Description: TODO - */ -@SpringBootTest -public class LoginTest { - - @Autowired - private PlayerService playerService; - - @Test - void test1() { - - playerService.list().forEach(System.out::println); - - } - -} diff --git a/paradogs-master/pom.xml b/paradogs-master/pom.xml index fe1d5e1..d515570 100644 --- a/paradogs-master/pom.xml +++ b/paradogs-master/pom.xml @@ -20,7 +20,7 @@ com.paradogs - paradogs-common-server-starter + paradogs-common-connector-starter diff --git a/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java b/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java index bcbe0c7..a3c8b73 100644 --- a/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java +++ b/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java @@ -2,6 +2,7 @@ package com.paradogs.master; import com.paradogs.common.core.annoations.EnableParadogs; import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.common.server.ServerProperties; import com.paradogs.common.server.rpc.InitRPC; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java b/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java index 0ae7a81..7541ea9 100644 --- a/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java +++ b/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java @@ -1,5 +1,6 @@ package com.paradogs.master.controller; +import com.paradogs.common.core.annoations.PdgController; import com.paradogs.common.core.annoations.PdgMsg; import com.paradogs.common.core.annoations.PdgMsgMapping; import com.paradogs.common.server.utils.MsgUtils; @@ -9,13 +10,15 @@ import com.paradogs.common.core.utils.ConnectionUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; +import java.util.Collection; + /** * @author: yumi * @date: 2023/8/11 14:26 * @Description: TODO */ @Slf4j -@Controller +@PdgController @PdgMsgMapping("_init") public class InitController { @@ -28,6 +31,12 @@ public class InitController { public ServerProperties initClientInfo(@PdgMsg ServerProperties msg) { Connection conn = ConnectionUtils.getConn(MsgUtils.getCurChannel()); conn.init(msg.getType(), msg.getName()); + + Collection conns = ConnectionUtils.getConns(); + for (Connection connection : conns) { + log.info("{}", connection); + } + return msg; } diff --git a/paradogs-master/src/main/java/com/paradogs/master/controller/MasterController.java b/paradogs-master/src/main/java/com/paradogs/master/controller/MasterController.java new file mode 100644 index 0000000..d17b0b4 --- /dev/null +++ b/paradogs-master/src/main/java/com/paradogs/master/controller/MasterController.java @@ -0,0 +1,28 @@ +package com.paradogs.master.controller; + +import com.paradogs.common.core.annoations.PdgController; +import com.paradogs.common.core.annoations.PdgMsgMapping; +import com.paradogs.common.core.pojo.Connection; +import com.paradogs.common.core.utils.ConnectionUtils; +import com.paradogs.common.server.ServerProperties; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author: yumi + * @date: 2023/8/24 17:45 + * @Description: TODO + */ +@PdgController +@PdgMsgMapping("info") +public class MasterController { + + @PdgMsgMapping("getServerInfo") + public List getServerInfo(String serverType) { + Collection conns = ConnectionUtils.getConns(); + return conns.stream().filter(conn -> conn.getTargetServer().equals(serverType)).collect(Collectors.toList()); + } +} diff --git a/paradogs-master/src/main/resources/config/application.yml b/paradogs-master/src/main/resources/config/application.yml index 3693706..5447101 100644 --- a/paradogs-master/src/main/resources/config/application.yml +++ b/paradogs-master/src/main/resources/config/application.yml @@ -3,7 +3,7 @@ paradogs: port: 8888 type: master name: master-1 - is-master: true + master: true # 日志级别配置 logging: level: diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java index cf96936..3901bff 100644 --- a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java @@ -1,10 +1,7 @@ package com.paradogs.test.client; -import com.paradogs.common.client.clients.ClientLauncher; +import com.paradogs.common.client.utils.ClientUtils; import com.paradogs.common.core.message.CGTestMsg; -import com.paradogs.common.core.utils.MsgUtils; -import com.paradogs.common.core.utils.SpringUtils; -import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -22,8 +19,6 @@ public class TestClientApplication { public static void main(String[] args) { SpringApplication.run(TestClientApplication.class, args); - ClientLauncher clientLauncher = SpringUtils.getBean(ClientLauncher.class); - Channel channel = clientLauncher.getClientMap().get("game").get("Client").getChannel(); AtomicInteger atomicInteger = new AtomicInteger(0); long start = System.currentTimeMillis(); @@ -38,9 +33,9 @@ public class TestClientApplication { while (true) { try { - MsgUtils.send(channel, "game-test.test1", new CGTestMsg("hel yumi >> " + atomicInteger.incrementAndGet())); + ClientUtils.send("test-test.test1", new CGTestMsg("hel yumi >> " + atomicInteger.incrementAndGet())); // System.out.println("send " + cgTestMsg); - Thread.sleep(1); + Thread.sleep(100); if (System.currentTimeMillis() - finalStart[0] > 1000 && finalK == 0) { log.info("每秒发送消息 {} 个,共发送 {} 个", atomicInteger.get() - startI[0], atomicInteger.get()); startI[0] = atomicInteger.get(); diff --git a/paradogs-test/paradogs-test-client/src/main/resources/application.yml b/paradogs-test/paradogs-test-client/src/main/resources/application.yml index 8165a1d..075ac95 100644 --- a/paradogs-test/paradogs-test-client/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-client/src/main/resources/application.yml @@ -2,4 +2,4 @@ paradogs: clients: - host: localhost port: 80 - server: game \ No newline at end of file + server: connector \ No newline at end of file diff --git a/paradogs-test/paradogs-test-connector/src/main/java/com/paradogs/test/connector/TestConnectorApplication.java b/paradogs-test/paradogs-test-connector/src/main/java/com/paradogs/test/connector/TestConnectorApplication.java index b74ba29..c107e84 100644 --- a/paradogs-test/paradogs-test-connector/src/main/java/com/paradogs/test/connector/TestConnectorApplication.java +++ b/paradogs-test/paradogs-test-connector/src/main/java/com/paradogs/test/connector/TestConnectorApplication.java @@ -1,5 +1,6 @@ package com.paradogs.test.connector; +import com.paradogs.common.core.annoations.EnableParadogs; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -8,6 +9,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @date: 2023/8/7 17:32 * @Description: TODO */ +@EnableParadogs @SpringBootApplication public class TestConnectorApplication { public static void main(String[] args) { diff --git a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml b/paradogs-test/paradogs-test-connector/src/main/resources/application.yml index 82724ae..3044fba 100644 --- a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-connector/src/main/resources/application.yml @@ -1,4 +1,9 @@ paradogs: + server: + port: 80 + type: connector + name: connector-1 + connector: false masters: - host: localhost port: 8888 diff --git a/paradogs-test/paradogs-test-login/pom.xml b/paradogs-test/paradogs-test-login/pom.xml new file mode 100644 index 0000000..d704036 --- /dev/null +++ b/paradogs-test/paradogs-test-login/pom.xml @@ -0,0 +1,26 @@ + + + + paradogs-test + com.paradogs + 0.0.1 + + 4.0.0 + + paradogs-test-login + + + 8 + 8 + + + + + com.paradogs + paradogs-common-server-starter + + + + \ No newline at end of file diff --git a/paradogs-login/src/main/java/com/paradogs/login/LoginApplication.java b/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/LoginApplication.java similarity index 54% rename from paradogs-login/src/main/java/com/paradogs/login/LoginApplication.java rename to paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/LoginApplication.java index 417115e..a4216ab 100644 --- a/paradogs-login/src/main/java/com/paradogs/login/LoginApplication.java +++ b/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/LoginApplication.java @@ -1,19 +1,16 @@ -package com.paradogs.login; +package com.paradogs.test.login; +import com.paradogs.common.core.annoations.EnableParadogs; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.scheduling.annotation.EnableAsync; /** * @author: yumi - * @date: 2023-02-24 14:22 + * @date: 2023/8/24 16:47 * @Description: TODO */ -@SpringBootApplication( - scanBasePackageClasses = {LoginApplication.class}, - scanBasePackages = {"com.mini.common"} -) -@EnableAsync +@EnableParadogs +@SpringBootApplication public class LoginApplication { public static void main(String[] args) { SpringApplication.run(LoginApplication.class, args); diff --git a/paradogs-test/paradogs-test-login/src/main/resources/application.yml b/paradogs-test/paradogs-test-login/src/main/resources/application.yml new file mode 100644 index 0000000..593a4f7 --- /dev/null +++ b/paradogs-test/paradogs-test-login/src/main/resources/application.yml @@ -0,0 +1,11 @@ +paradogs: + server: + port: 8080 + type: login + name: login-1 + master: false +# 日志级别配置 +logging: + level: + # 指定的包路径 + com.paradogs: debug \ No newline at end of file diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java index 727a48d..8eeb8c7 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java @@ -21,6 +21,7 @@ public class TestController { public GCTestMsg test1(@PdgMsg CGTestMsg msg) { log.info("receive >> {}", msg); // throw new SerializationException(); + // GC要特制,改成对 player 回复 !!! return new GCTestMsg("ok ok ok ..."); } diff --git a/paradogs-test/pom.xml b/paradogs-test/pom.xml index 8dcee64..ae98e2d 100644 --- a/paradogs-test/pom.xml +++ b/paradogs-test/pom.xml @@ -15,6 +15,7 @@ paradogs-test-server paradogs-test-client paradogs-test-connector + paradogs-test-login diff --git a/pom.xml b/pom.xml index f6b335f..237a6d2 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,6 @@ pom paradogs-common - paradogs-login paradogs-master paradogs-test @@ -130,7 +129,7 @@ com.paradogs - paradogs-common-client-starter + paradogs-common-serverClient-starter 0.0.1 @@ -140,6 +139,12 @@ 0.0.1 + + com.paradogs + paradogs-common-client-starter + 0.0.1 + + -- Gitee From 402d27377df647e363b5fc4109fb9eaf257dc07f Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Wed, 30 Aug 2023 11:14:42 +0800 Subject: [PATCH 10/32] =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/client/netty/ClientMsgHandler.java | 11 +- .../common/client/utils/ClientUtils.java | 8 + .../paradogs-common-connector-starter/pom.xml | 2 +- .../common/connector/ConnectorMsgHandler.java | 48 ++-- .../common/connector/ConnectorStarter.java | 19 ++ ...ot.autoconfigure.AutoConfiguration.imports | 3 +- .../src/resources/config/application.yml | 5 +- paradogs-common/paradogs-common-core/pom.xml | 26 +- .../com/paradogs/common/core/CoreStarter.java | 19 ++ .../core/annoations/EnableParadogs.java | 11 +- .../annoations/base/BaseImportSelector.java | 94 +++++++ .../core/annoations/base/BaseScanner.java | 55 ++++ .../{ => exception}/PdgExceptionHandler.java | 4 +- .../PdgExceptionHandlerClass.java | 2 +- .../{PdgLoop.java => loop/PdgIdleLoop.java} | 4 +- .../{ => request}/PdgController.java | 3 +- .../core/annoations/{ => request}/PdgMsg.java | 2 +- .../{ => request}/PdgMsgMapping.java | 4 +- .../annoations/request/PdgRequestHolder.java | 19 ++ .../request/PdgRequestInterfaceSelector.java | 95 +++++++ .../annoations/request/PdgRequestScanner.java | 46 +++ .../core/annoations/{ => rpc}/PdgRPC.java | 2 +- .../core/annoations/rpc/PdgRPCHolder.java | 19 ++ .../annoations/{ => rpc}/PdgRPCMapping.java | 6 +- .../rpc/PdgRPCProxyBeanImportSelector.java} | 116 +++++--- .../RPCInterfaceScanner.java} | 25 +- .../{ => annoations}/rpc/RPCProxyBean.java | 2 +- .../rpc/RPCProxyInterceptor.java | 8 +- .../rpc/RpcResponseResolver.java | 7 +- .../common/core/aspect/ControllerAspect.java | 49 ---- .../config/MasterClientConfiguration.java | 32 +++ .../core/config/NettyConfiguration.java | 40 +++ .../common/core/config/RPCConfiguration.java | 19 ++ .../core/config/ServerConfiguration.java | 35 +++ .../core/config/UtilsConfiguration.java | 36 +++ .../paradogs/common/core/enums/ExCode.java | 12 - .../common/core/events/RPCRequestEvent.java | 2 +- .../common/core/events/RPCRespEvent.java | 2 +- .../common/core/events/ReceiveMsgEvent.java | 2 +- .../events/ServerConnectionInitEvent.java | 2 +- .../common/core}/events/ServerStartEvent.java | 2 +- .../common/core/events/base/BaseEvent.java | 1 - .../{base => }/GlobalExceptionDispatch.java | 8 +- .../base/BaseUncheckedException.java | 4 +- .../core/listeners/PdgEventListener.java | 9 +- .../core/masterClient}/MasterClient.java | 18 +- .../MasterClientChannelInitializer.java} | 17 +- .../core/masterClient/MasterClientHolder.java | 13 + .../masterClient/MasterClientLauncher.java} | 35 ++- .../core/masterClient}/MasterProperties.java | 2 +- .../masterClient/state/MasterClientState.java | 98 +++++++ .../core/message/route/CmdMsgResolver.java | 17 -- .../core/message/route/RouteMsgResolver.java | 132 --------- .../message/route/base/MsgTargetResolver.java | 35 --- .../common/core/{message => msg}/BaseMsg.java | 2 +- .../{message => msg}/BaseMsg_CmdVersion.java | 2 +- .../core/{message => msg}/ByteBodyMsg.java | 4 +- .../common/core/{message => msg}/CGMsg.java | 2 +- .../core/{message => msg}/CGTestMsg.java | 3 +- .../{message => msg}/CommonController.java | 6 +- .../common/core/{message => msg}/DBTask.java | 2 +- .../common/core/{message => msg}/GCMsg.java | 2 +- .../core/{message => msg}/GCTestMsg.java | 2 +- .../{message => msg}/IMsgSerializable.java | 3 +- .../{message => msg}/MsgContextHolder.java | 10 +- .../core/{message => msg}/MsgHeader.java | 8 +- .../com/paradogs/common/core/msg/VoidMsg.java | 9 + .../{message => msg}/route/MsgMapping.java | 4 +- .../core/netty/codec/ConnectorCodec.java | 11 +- .../common/core/netty/codec/ServerCodec.java | 28 +- .../initializer/BaseChannelInitializer.java | 8 +- .../ClientChannelInitializer.java | 21 +- .../ServerChannelInitializer.java | 17 +- .../core/netty/pipelines/BaseMsgHandler.java | 51 +--- .../netty/pipelines/ClientMsgHandler.java | 40 +++ .../netty/pipelines/ForwardMsgHandler.java | 38 +++ .../netty/pipelines/MsgHeaderWrapper.java | 2 - .../netty/pipelines/ServerMsgHandler.java | 41 +++ .../paradogs/common/core/pojo/Connection.java | 3 +- .../paradogs/common/core}/rpc/InitRPC.java | 10 +- .../paradogs/common/core}/server/Server.java | 22 +- .../common/core/server/ServerHolder.java | 25 ++ .../common/core}/server/ServerLauncher.java | 14 +- .../common/core}/server/ServerProperties.java | 5 +- .../common/core/server/state/ServerState.java | 57 ++++ .../paradogs/common/core/utils/BeanUtils.java | 4 - .../common/core/utils/ConnectionUtils.java | 2 +- .../common/core/utils/EventUtils.java | 4 +- .../paradogs/common/core}/utils/MsgUtils.java | 103 ++++++- .../common/core/utils/ProtoUtils.java | 1 - .../common/core/utils/SpringUtils.java | 13 - .../paradogs/common/core/utils/TimeUtils.java | 22 ++ .../com/paradogs/common/core/utils/Wrap.java | 21 -- .../excel/ExcelDataTransformListener.java | 62 ---- .../common/core/utils/excel/ExcelUtils.java | 51 ---- ...ot.autoconfigure.AutoConfiguration.imports | 18 +- .../src/main/resources/config/application.yml | 0 .../pom.xml | 0 .../game/config/NettyConfiguration.java | 22 ++ .../game/config}/QueueConfiguration.java | 6 +- .../game}/queue/DBTaskConsumerThread.java | 4 +- .../game/queue/MainMsgConsumerThread.java | 41 +++ .../game}/queue/QueueConsumerThread.java | 6 +- .../common/game}/queue/QueueManager.java | 8 +- .../common/game}/queue/QueueProperties.java | 7 +- .../game/server/GameServerMsgHandler.java | 29 ++ ...ot.autoconfigure.AutoConfiguration.imports | 7 + .../src/main/resources/config/application.yml | 0 .../pom.xml | 2 +- .../paradogs/common/master/MasterStarter.java | 27 ++ .../config/ControllerConfiguration.java | 26 ++ .../master/controller/InitController.java | 13 +- .../master/controller/MasterController.java | 12 +- .../common}/master/events/EventHandler.java | 3 +- .../master/master/MasterServerMsgHandler.java | 47 ++++ ...ot.autoconfigure.AutoConfiguration.imports | 7 + .../src/main/resources/config/application.yml | 0 paradogs-common/paradogs-common-redis/pom.xml | 33 --- .../config/FastJson2JsonRedisSerializer.java | 50 ---- .../common/redis/config/RedisConfig.java | 43 --- .../common/redis/service/RedisService.java | 265 ------------------ .../common/server/netty/ServerMsgHandler.java | 59 ---- .../server/queue/MainMsgConsumerThread.java | 110 -------- ...ot.autoconfigure.AutoConfiguration.imports | 17 -- .../paradogs/common/masterClient/Client.java | 87 ------ .../masterClient/ClientContextHolder.java | 13 - .../common/masterClient/ClientLauncher.java | 64 ----- .../common/masterClient/ClientMsgHandler.java | 26 -- .../common/masterClient/ClientProperties.java | 53 ---- .../masterClient/events/ClientStartEvent.java | 14 - ...ot.autoconfigure.AutoConfiguration.imports | 7 - paradogs-common/pom.xml | 90 +----- .../test/client/TestClientApplication.java | 49 ++-- .../src/main/resources/application.yml | 6 + .../paradogs-test-master}/pom.xml | 8 +- .../test}/master/MasterApplication.java | 7 +- .../src/main/resources}/application.yml | 0 .../test/server/TestServerApplication.java | 7 - .../server/controller/TestController.java | 8 +- .../exceptions/GobalExceptionHandler.java | 5 +- .../src/main/resources/application.yml | 8 +- paradogs-test/pom.xml | 1 + pom.xml | 14 +- 143 files changed, 1593 insertions(+), 1758 deletions(-) create mode 100644 paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorStarter.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/CoreStarter.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseScanner.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/{ => exception}/PdgExceptionHandler.java (80%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/{ => exception}/PdgExceptionHandlerClass.java (88%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/{PdgLoop.java => loop/PdgIdleLoop.java} (78%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/{ => request}/PdgController.java (80%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/{ => request}/PdgMsg.java (90%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/{ => request}/PdgMsgMapping.java (83%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestHolder.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestScanner.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/{ => rpc}/PdgRPC.java (85%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/{ => rpc}/PdgRPCMapping.java (76%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{rpc/RPCProxyBeanImportSelector.java => annoations/rpc/PdgRPCProxyBeanImportSelector.java} (32%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/{scans/RPCInterfaceScan.java => rpc/RPCInterfaceScanner.java} (66%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{ => annoations}/rpc/RPCProxyBean.java (96%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{ => annoations}/rpc/RPCProxyInterceptor.java (93%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{ => annoations}/rpc/RpcResponseResolver.java (93%) delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/aspect/ControllerAspect.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/MasterClientConfiguration.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/ServerConfiguration.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/enums/ExCode.java rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server => paradogs-common-core/src/main/java/com/paradogs/common/core}/events/ServerConnectionInitEvent.java (88%) rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server => paradogs-common-core/src/main/java/com/paradogs/common/core}/events/ServerStartEvent.java (89%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/{base => }/GlobalExceptionDispatch.java (88%) rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master => paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient}/MasterClient.java (71%) rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterChannelInitializer.java => paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientChannelInitializer.java} (62%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientHolder.java rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java => paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientLauncher.java} (46%) rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master => paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient}/MasterProperties.java (95%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/state/MasterClientState.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/CmdMsgResolver.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/RouteMsgResolver.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/base/MsgTargetResolver.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/BaseMsg.java (97%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/BaseMsg_CmdVersion.java (97%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/ByteBodyMsg.java (78%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/CGMsg.java (86%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/CGTestMsg.java (71%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/CommonController.java (63%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/DBTask.java (94%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/GCMsg.java (84%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/GCTestMsg.java (84%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/IMsgSerializable.java (74%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/MsgContextHolder.java (80%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/MsgHeader.java (91%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{message => msg}/route/MsgMapping.java (78%) rename paradogs-common/{paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient => paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer}/ClientChannelInitializer.java (44%) rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server => paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer}/ServerChannelInitializer.java (47%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ClientMsgHandler.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ForwardMsgHandler.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server => paradogs-common-core/src/main/java/com/paradogs/common/core}/rpc/InitRPC.java (55%) rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common => paradogs-common-core/src/main/java/com/paradogs/common/core}/server/Server.java (77%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerHolder.java rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common => paradogs-common-core/src/main/java/com/paradogs/common/core}/server/ServerLauncher.java (57%) rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common => paradogs-common-core/src/main/java/com/paradogs/common/core}/server/ServerProperties.java (91%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/state/ServerState.java rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server => paradogs-common-core/src/main/java/com/paradogs/common/core}/utils/MsgUtils.java (46%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/TimeUtils.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/Wrap.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelDataTransformListener.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelUtils.java rename paradogs-common/{paradogs-common-server-starter => paradogs-common-core}/src/main/resources/config/application.yml (100%) rename paradogs-common/{paradogs-common-server-starter => paradogs-common-game-starter}/pom.xml (100%) create mode 100644 paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue => paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config}/QueueConfiguration.java (77%) rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server => paradogs-common-game-starter/src/main/java/com/paradogs/common/game}/queue/DBTaskConsumerThread.java (88%) create mode 100644 paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/MainMsgConsumerThread.java rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server => paradogs-common-game-starter/src/main/java/com/paradogs/common/game}/queue/QueueConsumerThread.java (94%) rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server => paradogs-common-game-starter/src/main/java/com/paradogs/common/game}/queue/QueueManager.java (93%) rename paradogs-common/{paradogs-common-server-starter/src/main/java/com/paradogs/common/server => paradogs-common-game-starter/src/main/java/com/paradogs/common/game}/queue/QueueProperties.java (76%) create mode 100644 paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java create mode 100644 paradogs-common/paradogs-common-game-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename paradogs-common/{paradogs-common-serverClient-starter => paradogs-common-game-starter}/src/main/resources/config/application.yml (100%) rename paradogs-common/{paradogs-common-serverClient-starter => paradogs-common-master-starter}/pom.xml (92%) create mode 100644 paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java create mode 100644 paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/config/ControllerConfiguration.java rename {paradogs-master/src/main/java/com/paradogs => paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common}/master/controller/InitController.java (70%) rename {paradogs-master/src/main/java/com/paradogs => paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common}/master/controller/MasterController.java (56%) rename {paradogs-master/src/main/java/com/paradogs => paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common}/master/events/EventHandler.java (88%) create mode 100644 paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/master/MasterServerMsgHandler.java create mode 100644 paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 paradogs-common/paradogs-common-master-starter/src/main/resources/config/application.yml delete mode 100644 paradogs-common/paradogs-common-redis/pom.xml delete mode 100644 paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/FastJson2JsonRedisSerializer.java delete mode 100644 paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/RedisConfig.java delete mode 100644 paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/service/RedisService.java delete mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/netty/ServerMsgHandler.java delete mode 100644 paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/MainMsgConsumerThread.java delete mode 100644 paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/Client.java delete mode 100644 paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientContextHolder.java delete mode 100644 paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientLauncher.java delete mode 100644 paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientMsgHandler.java delete mode 100644 paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientProperties.java delete mode 100644 paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/events/ClientStartEvent.java delete mode 100644 paradogs-common/paradogs-common-serverClient-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename {paradogs-master => paradogs-test/paradogs-test-master}/pom.xml (80%) rename {paradogs-master/src/main/java/com/paradogs => paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test}/master/MasterApplication.java (75%) rename {paradogs-master/src/main/resources/config => paradogs-test/paradogs-test-master/src/main/resources}/application.yml (100%) diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientMsgHandler.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientMsgHandler.java index 6a6c62a..6b69b4e 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientMsgHandler.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientMsgHandler.java @@ -1,7 +1,7 @@ package com.paradogs.common.client.netty; +import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; -import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -12,15 +12,10 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component -public class ClientMsgHandler extends BaseMsgHandler { +public class ClientMsgHandler extends com.paradogs.common.core.netty.pipelines.ClientMsgHandler { @Override - protected boolean isEnableQueue() { - return false; - } - - @Override - protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception { + protected void processMsg(BaseMsg msg) { log.info("receive msg >> {}", msg); } } diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java index 513d118..ead4719 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java @@ -18,4 +18,12 @@ public class ClientUtils { ClientContextHolder.client.getChannel().writeAndFlush(msg); } + public static void send(String route) { + MsgHeader header = new MsgHeader(); + BaseMsg msg = new BaseMsg(); + header.setRoute(route); + msg.setMsgHeader(header); + ClientContextHolder.client.getChannel().writeAndFlush(msg); + } + } diff --git a/paradogs-common/paradogs-common-connector-starter/pom.xml b/paradogs-common/paradogs-common-connector-starter/pom.xml index a83f10f..738afe9 100644 --- a/paradogs-common/paradogs-common-connector-starter/pom.xml +++ b/paradogs-common/paradogs-common-connector-starter/pom.xml @@ -19,7 +19,7 @@ com.paradogs - paradogs-common-server-starter + paradogs-common-core diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java index beafedd..87ec07f 100644 --- a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java +++ b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java @@ -1,17 +1,17 @@ package com.paradogs.common.connector; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.message.ByteBodyMsg; -import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; -import com.paradogs.common.server.queue.MainMsgConsumerThread; -import com.paradogs.common.server.utils.MsgUtils; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.ByteBodyMsg; +import com.paradogs.common.core.netty.pipelines.ForwardMsgHandler; +import com.paradogs.common.core.server.ServerProperties; +import com.paradogs.common.core.utils.MsgUtils; import io.netty.channel.ChannelHandler; -import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; -import java.util.Random; +import java.lang.reflect.InvocationTargetException; /** * @author: yumi @@ -20,36 +20,34 @@ import java.util.Random; */ @Slf4j @Component +@Primary @ChannelHandler.Sharable -public class ConnectorMsgHandler extends BaseMsgHandler { +public class ConnectorMsgHandler extends ForwardMsgHandler { - @Getter @Autowired - private MainMsgConsumerThread handler; - - private Random random = new Random(); + private ServerProperties serverProperties; @Override - protected void processWithoutQueue(BaseMsg msg) throws Exception { - - // 不为要转发的消息则直接处理 - System.out.println(msg.getClass()); - System.out.println(ByteBodyMsg.class); - System.out.println(msg.getClass().isAssignableFrom(ByteBodyMsg.class)); - if (!msg.getClass().isAssignableFrom(ByteBodyMsg.class)) { - handler.handle(msg); + protected void processMsg(BaseMsg msg) throws InvocationTargetException, IllegalAccessException { + + // 发给自己的消息直接处理 + System.out.println(msg.getMsgHeader().getServer()); + if (msg.getMsgHeader().getServer().equals(serverProperties.getType())) { + MsgUtils.adapterHandle(msg); return; } + // 其他消息 Master 进行转发 + MsgUtils.forward(msg); - // 转发消息到指定服务 - MsgUtils.send(msg.getMsgHeader().getRoute(), msg); + } - log.info("Reward success >> {}", msg); + @Override + protected void directProcess(BaseMsg msg) { } @Override - protected boolean isEnableQueue() { - return false; + protected boolean directProcessCondition(BaseMsg msg) { + return msg.getMsgHeader().getServer().equals(serverProperties.getType()); } } diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorStarter.java b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorStarter.java new file mode 100644 index 0000000..f82aa0d --- /dev/null +++ b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorStarter.java @@ -0,0 +1,19 @@ +package com.paradogs.common.connector; + +import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; +import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +/** + * @author: yumi + * @date: 2023/8/28 17:53 + * @Description: TODO + */ +@Import({ + PdgRPCProxyBeanImportSelector.class, + PdgRequestInterfaceSelector.class +}) +@Configuration +public class ConnectorStarter { +} diff --git a/paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 8d743b0..129dfe3 100644 --- a/paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,2 +1 @@ -com.paradogs.common.connector.ConnectorMsgHandler - +com.paradogs.common.connector.ConnectorMsgHandler \ No newline at end of file diff --git a/paradogs-common/paradogs-common-connector-starter/src/resources/config/application.yml b/paradogs-common/paradogs-common-connector-starter/src/resources/config/application.yml index 475adb4..cfc460e 100644 --- a/paradogs-common/paradogs-common-connector-starter/src/resources/config/application.yml +++ b/paradogs-common/paradogs-common-connector-starter/src/resources/config/application.yml @@ -1,3 +1,6 @@ paradogs: queue: - enable: false \ No newline at end of file + enable: false + main-size: 1 + db-size: 1 + diff --git a/paradogs-common/paradogs-common-core/pom.xml b/paradogs-common/paradogs-common-core/pom.xml index c52be02..e447521 100644 --- a/paradogs-common/paradogs-common-core/pom.xml +++ b/paradogs-common/paradogs-common-core/pom.xml @@ -17,42 +17,32 @@ - - org.projectlombok - lombok - - com.baidu - jprotobuf + io.netty + netty-all - io.netty - netty-all + org.projectlombok + lombok - org.springframework.boot spring-boot-starter - com.alibaba - easyexcel + commons-lang + commons-lang - org.springframework.boot - spring-boot-starter-aop + com.baidu + jprotobuf - - - - - \ No newline at end of file diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/CoreStarter.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/CoreStarter.java new file mode 100644 index 0000000..d2ee95f --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/CoreStarter.java @@ -0,0 +1,19 @@ +package com.paradogs.common.core; + +import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; +import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +/** + * @author: yumi + * @date: 2023/8/28 17:56 + * @Description: TODO + */ +@Import({ + PdgRPCProxyBeanImportSelector.class, + PdgRequestInterfaceSelector.class +}) +@Configuration +public class CoreStarter { +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java index 63f5f6d..786abd5 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java @@ -1,6 +1,8 @@ package com.paradogs.common.core.annoations; -import com.paradogs.common.core.rpc.RPCProxyBeanImportSelector; +import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; +import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; +import com.paradogs.common.core.server.ServerLauncher; import org.springframework.context.annotation.Import; import java.lang.annotation.ElementType; @@ -15,7 +17,12 @@ import java.lang.annotation.Target; */ @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) -@Import(RPCProxyBeanImportSelector.class) +@Import({ + // 等同于使用 META-INF.spring,看 @Import 注释,主要区别在于 @Import 可以手动注册,META-INF 为导入依赖自动注册 + PdgRPCProxyBeanImportSelector.class, + PdgRequestInterfaceSelector.class, + ServerLauncher.class +}) public @interface EnableParadogs { // /** diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java new file mode 100644 index 0000000..d327e8a --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java @@ -0,0 +1,94 @@ +package com.paradogs.common.core.annoations.base; + +import com.paradogs.common.core.utils.TimeUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.ImportSelector; +import org.springframework.core.type.AnnotationMetadata; + +import java.util.Set; + +/** + * @author: yumi + * @date: 2023/8/25 16:56 + * @Description: TODO + */ +@Slf4j +public abstract class BaseImportSelector implements ImportSelector, BeanFactoryAware { + + private BeanFactory beanFactory; + + @Override + public void setBeanFactory(BeanFactory beanFactory) throws BeansException { + this.beanFactory = beanFactory; + } + + /** + * 使用 @Import 引入时执行的逻辑 + * @param importingClassMetadata + * @return + */ + @Override + public String[] selectImports(AnnotationMetadata importingClassMetadata) { + + long startTime = System.currentTimeMillis(); + + // 设置扫描路径,扫描出符合条件的 bean (接口、类等) + String[] scanPackages = getScanPackages(importingClassMetadata); + + // 获取扫描类 + BaseScanner scanner = getScanner(importingClassMetadata, beanFactory); + + // 扫描出符合条件的 bean + Set beanDefinitions = scanner.isNeedRegister() ? + scanner.findAndRegisterComponents(scanPackages) : + scanner.findCandidateComponents(scanPackages); + + // 循环处理每个被扫描到的bean对象 + for (BeanDefinition beanDefinition : beanDefinitions) { + handle(beanDefinition); + } + + log.debug("Scan {}: [{}] ms, path: {}", this.getClass().getSimpleName(), TimeUtils.calcDuration(startTime), scanPackages); + + return new String[0]; + } + + /** + * 设置扫描的路径 + * @param importingClassMetadata + * @return + */ + public String[] getScanPackages(AnnotationMetadata importingClassMetadata) { + try { + // 获取被注解的类(启动类)的 Class,以及包路径 + String startupClassStr = importingClassMetadata.getClassName(); + Class startupClass = Class.forName(startupClassStr); + String startupPackage = startupClass.getPackage().getName(); + + String[] result = new String[]{startupPackage}; + + return result; + + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + + /** + * 设置要扫描的 Scanner + * @param importingClassMetadata + * @param beanFactory + * @return + */ + public abstract BaseScanner getScanner(AnnotationMetadata importingClassMetadata, BeanFactory beanFactory); + + /** + * 处理扫描到的 Bean + * @param beanDefinition + */ + public abstract void handle(BeanDefinition beanDefinition); +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseScanner.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseScanner.java new file mode 100644 index 0000000..a5d7a23 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseScanner.java @@ -0,0 +1,55 @@ +package com.paradogs.common.core.annoations.base; + +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.beans.factory.config.BeanDefinitionHolder; +import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.context.annotation.ClassPathBeanDefinitionScanner; + +import java.util.HashSet; +import java.util.Set; + +/** + * @author: yumi + * @date: 2023/8/25 17:00 + * @Description: TODO + */ +public abstract class BaseScanner extends ClassPathBeanDefinitionScanner { + + public BaseScanner(BeanDefinitionRegistry registry) { + super(registry); + } + + /** + * 扫描出满足条件的类或接口 + * @param basePackages + * @return + */ + public Set findCandidateComponents(String... basePackages) { + Set candidateComponents = new HashSet<>(); + for (String basePackage : basePackages) { + candidateComponents.addAll(findCandidateComponents(basePackage)); + } + return candidateComponents; + } + + /** + * 扫描并注册未注册的 Bean + * *ps: 使用 super.doScan() 时,已经注册到 Spring 的 Bean 不会被扫描到,super.doScan() 在扫描后会做注册操作 + * 该方法一般接口做代理注册时使用 + * @param basePackages + * @return 注册成功的 Bean (已存在但仍注册的 Bean 不会返回) + */ + public Set findAndRegisterComponents(String... basePackages) { + Set beanDefinitionHolders = super.doScan(basePackages); + Set beanDefinitions = new HashSet<>(); + for (BeanDefinitionHolder beanDefinitionHolder : beanDefinitionHolders) { + beanDefinitions.add(beanDefinitionHolder.getBeanDefinition()); + } + return beanDefinitions; + } + + public boolean isNeedRegister() { + return false; + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java similarity index 80% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandler.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java index 4e62a40..92c3fac 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandler.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java @@ -1,6 +1,4 @@ -package com.paradogs.common.core.annoations; - -import org.apache.poi.ss.formula.functions.T; +package com.paradogs.common.core.annoations.exception; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandlerClass.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java similarity index 88% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandlerClass.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java index 7a7f3dd..c670599 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgExceptionHandlerClass.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations; +package com.paradogs.common.core.annoations.exception; import org.springframework.stereotype.Component; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgLoop.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/loop/PdgIdleLoop.java similarity index 78% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgLoop.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/loop/PdgIdleLoop.java index a6cb865..6f52552 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgLoop.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/loop/PdgIdleLoop.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations; +package com.paradogs.common.core.annoations.loop; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -12,5 +12,5 @@ import java.lang.annotation.Target; */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) -public @interface PdgLoop { +public @interface PdgIdleLoop { } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgController.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgController.java similarity index 80% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgController.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgController.java index 40b8edf..686b10a 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgController.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgController.java @@ -1,6 +1,5 @@ -package com.paradogs.common.core.annoations; +package com.paradogs.common.core.annoations.request; -import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; import java.lang.annotation.ElementType; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsg.java similarity index 90% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsg.java index 5755da5..23ff504 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations; +package com.paradogs.common.core.annoations.request; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsgMapping.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java similarity index 83% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsgMapping.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java index 268ddd4..e63882b 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgMsgMapping.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java @@ -1,6 +1,4 @@ -package com.paradogs.common.core.annoations; - -import com.paradogs.common.core.message.BaseMsg; +package com.paradogs.common.core.annoations.request; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestHolder.java new file mode 100644 index 0000000..3097046 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestHolder.java @@ -0,0 +1,19 @@ +package com.paradogs.common.core.annoations.request; + +import com.paradogs.common.core.msg.route.MsgMapping; +import lombok.Getter; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author: yumi + * @date: 2023/8/25 17:28 + * @Description: TODO + */ +public class PdgRequestHolder { + + @Getter + private static Map mappingMap = new HashMap<>(); + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java new file mode 100644 index 0000000..dc19024 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java @@ -0,0 +1,95 @@ +package com.paradogs.common.core.annoations.request; + +import com.paradogs.common.core.annoations.base.BaseImportSelector; +import com.paradogs.common.core.annoations.base.BaseScanner; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.route.MsgMapping; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.beans.factory.support.DefaultListableBeanFactory; +import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.core.type.AnnotationMetadata; + +import java.lang.annotation.Annotation; +import java.lang.reflect.AnnotatedType; +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @author: yumi + * @date: 2023/8/25 16:15 + * @Description: TODO + */ +@Slf4j +public class PdgRequestInterfaceSelector extends BaseImportSelector { + + @Override + public BaseScanner getScanner(AnnotationMetadata importingClassMetadata, BeanFactory beanFactory) { + + DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) beanFactory; + + // 获取被注解的类(启动类)的 Class,以及包路径 + String startupPackage; + try { + String startupClassStr = importingClassMetadata.getClassName(); + Class startupClass = Class.forName(startupClassStr); + startupPackage = startupClass.getPackage().getName(); + + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + + return new PdgRequestScanner(defaultListableBeanFactory); + } + + @Override + public void handle(BeanDefinition beanDefinition) { + + try { + Class beanClass = Class.forName(beanDefinition.getBeanClassName()); + + // 扫描方法 + Method[] methods = beanClass.getDeclaredMethods(); + for (Method method : methods) { + + // 计算路由 + PdgMsgMapping parentRouteMapping = AnnotationUtils.findAnnotation(method.getDeclaringClass(), PdgMsgMapping.class); + PdgMsgMapping pdgMsgMapping = AnnotationUtils.findAnnotation(method, PdgMsgMapping.class); + if (pdgMsgMapping == null) { + return; + } + String route = (parentRouteMapping != null ? parentRouteMapping.value() : "") + (pdgMsgMapping.value().startsWith("/") ? "" : ".") + pdgMsgMapping.value(); + if (PdgRequestHolder.getMappingMap().containsKey(route)) { + throw new RuntimeException("Duplicate route found: [" + route + "]"); + } + + // 保存 Msg 类型和要执行的方法 + Class targetMsgClass = null; + for (Parameter parameter : method.getParameters()) { + if (parameter.getAnnotation(PdgMsg.class) != null) { + targetMsgClass = (Class) parameter.getType(); + + } else { + // 如果只有一个 BaseMsg 参数,自动优化添加,等于加了 PdgMsg + List baseMsgList = Stream.of(method.getParameters()).filter(param -> param.getType().isAssignableFrom(BaseMsg.class)).collect(Collectors.toList()); + if (baseMsgList.size() == 1) { + targetMsgClass = (Class) parameter.getType(); + } + + } + } + PdgRequestHolder.getMappingMap().put(route, new MsgMapping(targetMsgClass, method)); + log.debug("Register RequestMapping: [{}]", route); + } + + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestScanner.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestScanner.java new file mode 100644 index 0000000..c239401 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestScanner.java @@ -0,0 +1,46 @@ +package com.paradogs.common.core.annoations.request; + +import com.paradogs.common.core.annoations.base.BaseScanner; +import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; +import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.core.type.classreading.MetadataReader; +import org.springframework.stereotype.Controller; + +import java.io.IOException; + +/** + * @author: yumi + * @date: 2023/8/25 15:54 + * @Description: TODO + */ +public class PdgRequestScanner extends BaseScanner { + + public PdgRequestScanner(BeanDefinitionRegistry registry) { + super(registry); + } + + /** + * 是否为可添加 bean,返回接口类型 + * 可以用 TypeFilter 加,但 TypeFilter 只能指定类,未知的动态类无法处理 + * hasMetaAnnotation() 可以读到注解中的注解信息,hasAnnotation() 只能读取当前 Class 上的注解 + * @param metadataReader + * @return + * @throws IOException + */ + @Override + protected boolean isCandidateComponent(MetadataReader metadataReader) { + return metadataReader.getAnnotationMetadata().hasMetaAnnotation(Controller.class.getName()); + } + + /** + * @param beanDefinition 一个 bean + * @return + */ + @Override + protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) { + return !beanDefinition.getMetadata().isInterface() + && !beanDefinition.getMetadata().isAnnotation() + && beanDefinition.getMetadata().hasMetaAnnotation(Controller.class.getName()); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPC.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java similarity index 85% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPC.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java index 94be315..01e573d 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPC.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations; +package com.paradogs.common.core.annoations.rpc; import java.lang.annotation.*; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java new file mode 100644 index 0000000..4aac54f --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java @@ -0,0 +1,19 @@ +package com.paradogs.common.core.annoations.rpc; + +import com.paradogs.common.core.msg.route.MsgMapping; +import lombok.Getter; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author: yumi + * @date: 2023/8/25 17:33 + * @Description: TODO + */ +public class PdgRPCHolder { + + @Getter + private static Map mappingMap = new HashMap<>(); + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPCMapping.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java similarity index 76% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPCMapping.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java index 446371a..02ba1fc 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/PdgRPCMapping.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java @@ -1,7 +1,6 @@ -package com.paradogs.common.core.annoations; +package com.paradogs.common.core.annoations.rpc; -import com.paradogs.common.core.message.BaseMsg; -import org.springframework.stereotype.Controller; +import com.paradogs.common.core.msg.BaseMsg; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -15,7 +14,6 @@ import java.lang.annotation.Target; */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) -@Controller public @interface PdgRPCMapping { /** diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBeanImportSelector.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java similarity index 32% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBeanImportSelector.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java index c9febc4..b105acf 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBeanImportSelector.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java @@ -1,68 +1,94 @@ -package com.paradogs.common.core.rpc; +package com.paradogs.common.core.annoations.rpc; -import com.paradogs.common.core.annoations.scans.RPCInterfaceScan; -import org.springframework.beans.BeansException; +import com.paradogs.common.core.annoations.base.BaseImportSelector; +import com.paradogs.common.core.annoations.base.BaseScanner; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.route.MsgMapping; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.BeanFactoryAware; -import org.springframework.beans.factory.config.BeanDefinitionHolder; -import org.springframework.beans.factory.support.AbstractBeanDefinition; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.support.DefaultListableBeanFactory; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.ImportSelector; +import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.type.AnnotationMetadata; -import java.util.Set; +import java.lang.reflect.Method; /** * @author: yumi * @date: 2023/8/13 16:39 * @Description: TODO */ -@Configuration -public class RPCProxyBeanImportSelector implements ImportSelector, BeanFactoryAware { +@Slf4j +public class PdgRPCProxyBeanImportSelector extends BaseImportSelector { - private BeanFactory beanFactory; + @Override + public BaseScanner getScanner(AnnotationMetadata importingClassMetadata, BeanFactory beanFactory) { + // 转换为 DefaultListableBeanFactory 便于操作 + DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) beanFactory; + // 自定义扫描器,获取 BeanDefinitionHolder + RPCInterfaceScanner scanner = new RPCInterfaceScanner(defaultListableBeanFactory); + return scanner; + } @Override - public void setBeanFactory(BeanFactory beanFactory) throws BeansException { - this.beanFactory = beanFactory; + public void handle(BeanDefinition beanDefinition) { + + registerRPCMapping(beanDefinition); + + registerProxyBean(beanDefinition); + } /** - * 解析 rpc 注解,为 interface 创建代理并注册 bean - * selectImports >> 引入时执行的逻辑 - * @param importingClassMetadata - * @return + * 注册 RPC 响应映射 + * @param beanDefinition */ - @Override - public String[] selectImports(AnnotationMetadata importingClassMetadata) { - - // 转换为 DefaultListableBeanFactory 便于操作 - DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) beanFactory; + private void registerRPCMapping(BeanDefinition beanDefinition) { - // 获取被注解的类(启动类)的 Class,以及包路径 - String startupPackage = null; try { - String startupClassStr = importingClassMetadata.getClassName(); - Class startupClass = Class.forName(startupClassStr); - startupPackage = startupClass.getPackage().getName(); + Class beanClass = Class.forName(beanDefinition.getBeanClassName()); + Method[] methods = beanClass.getDeclaredMethods(); + + for (Method method : methods) { + // 计算路由 + PdgRPCMapping pdgRPCMapping = AnnotationUtils.findAnnotation(method, PdgRPCMapping.class); + String route = pdgRPCMapping.value() + "|resp"; + + if (PdgRPCHolder.getMappingMap().containsKey(route)) { + throw new RuntimeException("Duplicate route found: [" + route + "]"); + } + + // 保存 Msg 类型和要执行的方法 + try { + if (pdgRPCMapping.returnType() == null) { + throw new RuntimeException("rpc[" + pdgRPCMapping.value() + "] returnType is null"); + } + Class targetMsgClass = pdgRPCMapping.returnType(); + + if (PdgRPCHolder.getMappingMap().containsKey(route)) { + throw new RuntimeException("route already exist: " + route); + } + PdgRPCHolder.getMappingMap().put(route, new MsgMapping(targetMsgClass, method)); + log.debug("Register RPC callback mapping: [{}]", route); + + } catch (Exception e) { + throw new RuntimeException("rpc[" + pdgRPCMapping.value() + "] return must extends BaseMsg(?GCMsg)"); + } + } - } catch (ClassNotFoundException e) { + + } catch (Exception e) { throw new RuntimeException(e); } - // 获取配置的扫描包路径 - String[] scanPackages = {startupPackage, "com.paradogs"}; - - // 自定义扫描器,获取 BeanDefinitionHolder - RPCInterfaceScan rpcInterfaceScan = new RPCInterfaceScan(defaultListableBeanFactory); - Set beanDefinitionHolders = rpcInterfaceScan.doScan(scanPackages); - - // 循环处理每个被扫描到的bean对象,创建代理实现类 - for (BeanDefinitionHolder beanDefinitionHolder : beanDefinitionHolders) { + } - // 转换为抽象实现,便于操作具体对象 - AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) beanDefinitionHolder.getBeanDefinition(); + /** + * 注册代理 + * @param beanDefinition + */ + private void registerProxyBean(BeanDefinition beanDefinition) { + try { try { // 获取当前被扫描到到接口的具体 class name @@ -74,15 +100,19 @@ public class RPCProxyBeanImportSelector implements ImportSelector, BeanFactoryAw beanDefinition.getConstructorArgumentValues().addGenericArgumentValue(targetInterface); // 修改被扫描接口到具体实现类型,替换为自定义到代理实现类 + String originBeanName = beanDefinition.getBeanClassName(); beanDefinition.setBeanClassName(RPCProxyBean.class.getName()); - String beanName = beanDefinitionHolder.getBeanName(); - System.out.println("已修改===>" + beanName); + log.debug("Proxy RPC interface: [{}]", originBeanName); } catch (ClassNotFoundException e) { e.printStackTrace(); } + + } catch (Exception e) { + throw new RuntimeException(e); } - return new String[0]; } + + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/RPCInterfaceScan.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCInterfaceScanner.java similarity index 66% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/RPCInterfaceScan.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCInterfaceScanner.java index bf71d70..1c78447 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/scans/RPCInterfaceScan.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCInterfaceScanner.java @@ -1,36 +1,23 @@ -package com.paradogs.common.core.annoations.scans; +package com.paradogs.common.core.annoations.rpc; -import com.paradogs.common.core.annoations.PdgRPC; +import com.paradogs.common.core.annoations.base.BaseScanner; import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; -import org.springframework.beans.factory.config.BeanDefinitionHolder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.context.annotation.ClassPathBeanDefinitionScanner; import org.springframework.core.type.classreading.MetadataReader; import java.io.IOException; -import java.util.Set; /** * @author: yumi * @date: 2023/8/13 23:24 * @Description: TODO */ -public class RPCInterfaceScan extends ClassPathBeanDefinitionScanner { +public class RPCInterfaceScanner extends BaseScanner { - public RPCInterfaceScan(BeanDefinitionRegistry registry) { + public RPCInterfaceScanner(BeanDefinitionRegistry registry) { super(registry); } - /** - * 扫描出满足条件的类或接口 - * @param basePackages - * @return - */ - @Override - public Set doScan(String... basePackages) { - return super.doScan(basePackages); - } - /** * 是否为可添加 bean,返回接口类型 * 可以用 TypeFilter 加,但 TypeFilter 只能指定类,未知的动态类无法处理 @@ -54,4 +41,8 @@ public class RPCInterfaceScan extends ClassPathBeanDefinitionScanner { && beanDefinition.getMetadata().hasAnnotation(PdgRPC.class.getName()); } + @Override + public boolean isNeedRegister() { + return true; + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBean.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java similarity index 96% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBean.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java index e5e37e1..f8fd7d3 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyBean.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.rpc; +package com.paradogs.common.core.annoations.rpc; import org.springframework.beans.factory.FactoryBean; import org.springframework.cglib.proxy.Enhancer; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyInterceptor.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java similarity index 93% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyInterceptor.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java index 8deadef..ea8c079 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RPCProxyInterceptor.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java @@ -1,10 +1,8 @@ -package com.paradogs.common.core.rpc; +package com.paradogs.common.core.annoations.rpc; -import com.paradogs.common.core.annoations.PdgMsg; -import com.paradogs.common.core.annoations.PdgRPC; -import com.paradogs.common.core.annoations.PdgRPCMapping; +import com.paradogs.common.core.annoations.request.PdgMsg; import com.paradogs.common.core.events.RPCRequestEvent; -import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.utils.EventUtils; import org.springframework.aop.support.AopUtils; import org.springframework.cglib.proxy.MethodInterceptor; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RpcResponseResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java similarity index 93% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RpcResponseResolver.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java index 423cbf6..53d4c0a 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/RpcResponseResolver.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java @@ -1,9 +1,8 @@ -package com.paradogs.common.core.rpc; +package com.paradogs.common.core.annoations.rpc; import com.paradogs.common.core.events.RPCRespEvent; -import com.paradogs.common.core.events.ReceiveMsgEvent; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.message.MsgContextHolder; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.MsgContextHolder; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/aspect/ControllerAspect.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/aspect/ControllerAspect.java deleted file mode 100644 index 8f66077..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/aspect/ControllerAspect.java +++ /dev/null @@ -1,49 +0,0 @@ -//package com.paradogs.common.core.aspect; -// -// -//import com.paradogs.common.core.message.BaseMsg; -//import lombok.extern.slf4j.Slf4j; -//import org.aspectj.lang.ProceedingJoinPoint; -//import org.aspectj.lang.annotation.Around; -//import org.aspectj.lang.annotation.Aspect; -//import org.aspectj.lang.reflect.MethodSignature; -// -//import java.lang.reflect.Method; -//import java.nio.channels.Channel; -//import java.util.HashMap; -//import java.util.List; -//import java.util.Map; -// -///** -// * @author: yumi -// * @date: 2023/8/8 13:43 -// * @Description: TODO -// */ -//@Slf4j -//@Aspect -//public class ControllerAspect { -// -// private Map msgChannelMappingMap = new HashMap<>(); -// -// @Around("@annotation(com.paradogs.common.core.annoations.PdgMsgMapping)") -// public void handlePdgMsgMapping(ProceedingJoinPoint joinPoint) throws Throwable { -// Object result = joinPoint.proceed(); -// // 可能不是 void 方法,而是返回了 null 值,要判断 void 要用 method.getReturnType().equals(void.class) -// if (result == null) { -// return; -// } -// BaseMsg msg = null; -// try { -// msg = (BaseMsg) result; -// } catch (Exception e) { -// log.warn("result not cast to BaseMsg: " + result.getClass().getName()); -// return; -// } -// -// msg.getMsgHeader().getCtx().writeAndFlush(result); -// Method method = ((MethodSignature) joinPoint.getSignature()).getMethod(); -//// method. -// -// } -// -//} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/MasterClientConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/MasterClientConfiguration.java new file mode 100644 index 0000000..9cc53bc --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/MasterClientConfiguration.java @@ -0,0 +1,32 @@ +package com.paradogs.common.core.config; + +import com.paradogs.common.core.masterClient.MasterClientChannelInitializer; +import com.paradogs.common.core.masterClient.MasterClientLauncher; +import com.paradogs.common.core.masterClient.MasterProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author: yumi + * @date: 2023/8/26 17:47 + * @Description: TODO + */ +@Configuration +public class MasterClientConfiguration { + + @Bean + public MasterProperties masterProperties() { + return new MasterProperties(); + } + + @Bean + public MasterClientLauncher masterLauncher() { + return new MasterClientLauncher(); + } + + @Bean + public MasterClientChannelInitializer masterChannelInitializer() { + return new MasterClientChannelInitializer(); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java new file mode 100644 index 0000000..09a4137 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java @@ -0,0 +1,40 @@ +package com.paradogs.common.core.config; + +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.netty.initializer.ServerChannelInitializer; +import com.paradogs.common.core.netty.pipelines.*; +import com.paradogs.common.core.netty.protocol.ProtocolProperties; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author: yumi + * @date: 2023/8/26 17:22 + * @Description: TODO + */ +@Configuration +public class NettyConfiguration { + + @Bean + @ConditionalOnMissingBean(ServerChannelInitializer.class) + public ServerChannelInitializer serverChannelInitializer() { + return new ServerChannelInitializer(); + } + + @Bean + public MsgHeaderWrapper msgHeaderWrapper() { + return new MsgHeaderWrapper(); + } + + @Bean + public ProtocolProperties protocolProperties() { + return new ProtocolProperties(); + } + + @Bean + public ClientMsgHandler clientMsgHandler() { + return new ClientMsgHandler(); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java new file mode 100644 index 0000000..e4d1256 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java @@ -0,0 +1,19 @@ +package com.paradogs.common.core.config; + +import com.paradogs.common.core.annoations.rpc.RpcResponseResolver; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author: yumi + * @date: 2023/8/28 14:32 + * @Description: TODO + */ +@Configuration +public class RPCConfiguration { + + @Bean + public RpcResponseResolver rpcResponseResolver() { + return new RpcResponseResolver(); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/ServerConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/ServerConfiguration.java new file mode 100644 index 0000000..b6706ff --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/ServerConfiguration.java @@ -0,0 +1,35 @@ +package com.paradogs.common.core.config; + +import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; +import com.paradogs.common.core.netty.codec.ServerCodec; +import com.paradogs.common.core.server.ServerLauncher; +import com.paradogs.common.core.server.ServerProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; + +/** + * @author: yumi + * @date: 2023/8/26 17:24 + * @Description: TODO + */ +@Configuration +public class ServerConfiguration { + + @Bean + public ServerProperties serverProperties() { + return new ServerProperties(); + } + + @Bean + public GlobalExceptionDispatch globalExceptionDispatch() { + return new GlobalExceptionDispatch(); + } + + @Bean + @Scope("prototype") + public ServerCodec serverCodec() { + return new ServerCodec(); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java new file mode 100644 index 0000000..6dd01f1 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java @@ -0,0 +1,36 @@ +package com.paradogs.common.core.config; + +import com.paradogs.common.core.utils.ConnectionUtils; +import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.SpringUtils; +import org.springframework.context.annotation.Bean; + +/** + * @author: yumi + * @date: 2023/8/26 17:28 + * @Description: TODO + */ +public class UtilsConfiguration { + + @Bean + public EventUtils eventUtils() { + return new EventUtils(); + } + + @Bean + public ConnectionUtils connectionUtils() { + return new ConnectionUtils(); + } + + @Bean + public SpringUtils springUtils() { + return new SpringUtils(); + } + + @Bean + public MsgUtils msgUtils() { + return new MsgUtils(); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/enums/ExCode.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/enums/ExCode.java deleted file mode 100644 index 307581f..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/enums/ExCode.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.paradogs.common.core.enums; - -/** - * @author: yumi - * @date: 2023/8/1 16:33 - * @Description: 异常错误码 - */ -public enum ExCode { - - - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java index 99d891a..bb71e1b 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java @@ -1,7 +1,7 @@ package com.paradogs.common.core.events; import com.paradogs.common.core.events.base.AnonEvent; -import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.msg.BaseMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java index c8e2bf9..534159d 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java @@ -1,7 +1,7 @@ package com.paradogs.common.core.events; import com.paradogs.common.core.events.base.AnonEvent; -import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.msg.BaseMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java index 064dfb6..c9b457a 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java @@ -1,7 +1,7 @@ package com.paradogs.common.core.events; import com.paradogs.common.core.events.base.AnonEvent; -import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.msg.BaseMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerConnectionInitEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java similarity index 88% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerConnectionInitEvent.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java index 8f46c0e..21aee01 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerConnectionInitEvent.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java @@ -1,4 +1,4 @@ -package com.paradogs.common.server.events; +package com.paradogs.common.core.events; import com.paradogs.common.core.events.base.AnonEvent; import com.paradogs.common.core.pojo.Connection; diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerStartEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ServerStartEvent.java similarity index 89% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerStartEvent.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ServerStartEvent.java index 56ba4e3..720cb6a 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/events/ServerStartEvent.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ServerStartEvent.java @@ -1,4 +1,4 @@ -package com.paradogs.common.server.events; +package com.paradogs.common.core.events; import com.paradogs.common.core.events.base.AnonEvent; import lombok.Data; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java index 7200e0e..2bb0489 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java @@ -5,7 +5,6 @@ import lombok.Setter; import lombok.ToString; import org.springframework.context.ApplicationEvent; -import java.time.LocalDateTime; import java.util.UUID; /** diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java similarity index 88% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java index 9687e68..e4923ed 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/GlobalExceptionDispatch.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java @@ -1,15 +1,13 @@ -package com.paradogs.common.core.exceptions.base; +package com.paradogs.common.core.exceptions; -import com.paradogs.common.core.annoations.PdgExceptionHandler; -import com.paradogs.common.core.annoations.PdgExceptionHandlerClass; -import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.annoations.exception.PdgExceptionHandler; +import com.paradogs.common.core.annoations.exception.PdgExceptionHandlerClass; import com.paradogs.common.core.utils.SpringUtils; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java index 26a7a84..7182acc 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java @@ -1,13 +1,11 @@ package com.paradogs.common.core.exceptions.base; -import lombok.Data; - /** * @author: yumi * @date: 2023/8/1 16:30 * @Description: TODO * ps: 不要重写 toString 方法,否则异常显示不正常不规范了 - * 异常栈显示正常:com.paradogs.common.core.exceptions.base.BaseUncheckedException: uncheck test + * 异常栈显示正常:com.paradogs.common.server.exceptions.base.BaseUncheckedException: uncheck test */ public class BaseUncheckedException extends RuntimeException { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java index 98c097b..a69da49 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java @@ -1,19 +1,14 @@ package com.paradogs.common.core.listeners; -import com.paradogs.common.core.annoations.PdgLoop; -import com.paradogs.common.core.message.MsgContextHolder; +import com.paradogs.common.core.annoations.loop.PdgIdleLoop; import com.paradogs.common.core.netty.events.MainLoopEvent; import com.paradogs.common.core.utils.SpringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; -import com.paradogs.common.core.events.SyncMsgEvent; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.concurrent.Callable; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -28,7 +23,7 @@ public class PdgEventListener { @EventListener(MainLoopEvent.class) public void onMainLoopEvent(MainLoopEvent event) { - for (Method method : SpringUtils.getMethodsWithAnnotation(PdgLoop.class)) { + for (Method method : SpringUtils.getMethodsWithAnnotation(PdgIdleLoop.class)) { /** * 待优化:方法参数注入,其他地方也有,可以提取成一个方法 */ diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterClient.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClient.java similarity index 71% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterClient.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClient.java index 20b6de1..7f44445 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterClient.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClient.java @@ -1,10 +1,6 @@ -package com.paradogs.common.server.master; +package com.paradogs.common.core.masterClient; -import com.paradogs.common.core.pojo.Connection; -import com.paradogs.common.core.utils.ConnectionUtils; import com.paradogs.common.core.utils.SpringUtils; -import com.paradogs.common.server.ServerProperties; -import com.paradogs.common.server.rpc.InitRPC; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.nio.NioEventLoopGroup; @@ -45,7 +41,7 @@ public class MasterClient { this.master = new Bootstrap() .group(worker) .channel(NioSocketChannel.class) - .handler(SpringUtils.getBean(MasterChannelInitializer.class)); + .handler(SpringUtils.getBean(MasterClientChannelInitializer.class)); this.channel = master.connect(properties.getHost(), properties.getPort()).sync().channel(); @@ -53,16 +49,6 @@ public class MasterClient { // 连接成功 // EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); - // 初始化数据 - InitRPC initRPC = SpringUtils.getBean(InitRPC.class); - ConnectionUtils.setMasterChannel(this.channel); - Connection connection = ConnectionUtils.saveNewConn(this.channel); - connection.init("master", "master-1"); - - // 发送服务信息 - initRPC.getClientInfo(SpringUtils.getBean(ServerProperties.class)) - .thenAccept(serverProperties -> log.info("receive reply >> {}", serverProperties)); - channel.closeFuture().addListener(future -> { log.info("[{}] server stop", this.properties.getName()); }); diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientChannelInitializer.java similarity index 62% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterChannelInitializer.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientChannelInitializer.java index dcf9980..2032892 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterChannelInitializer.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientChannelInitializer.java @@ -1,11 +1,14 @@ -package com.paradogs.common.server.master; +package com.paradogs.common.core.masterClient; import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; +import com.paradogs.common.core.netty.initializer.ClientChannelInitializer; +import com.paradogs.common.core.netty.pipelines.ClientMsgHandler; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.nio.NioSocketChannel; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -17,7 +20,7 @@ import org.springframework.stereotype.Component; @Slf4j @Component @ChannelHandler.Sharable -public class MasterChannelInitializer extends BaseChannelInitializer { +public class MasterClientChannelInitializer extends ClientChannelInitializer { @Value("${paradogs.server.type}") private String serverType; @@ -25,13 +28,17 @@ public class MasterChannelInitializer extends BaseChannelInitializer { @Value("${paradogs.server.name}") private String serverName; + @Autowired + private ClientMsgHandler clientMsgHandler; + @Override protected void initPipeline2(ChannelPipeline pipeline) { + pipeline.addLast(clientMsgHandler); } - @Override - protected void initAfter(NioSocketChannel channel) { - } +// @Override +// protected void initAfter(NioSocketChannel channel) { +// } @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientHolder.java new file mode 100644 index 0000000..ecf84f1 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientHolder.java @@ -0,0 +1,13 @@ +package com.paradogs.common.core.masterClient; + + +/** + * @author: yumi + * @date: 2023/8/29 11:03 + * @Description: TODO + */ +public class MasterClientHolder { + + public static MasterClient masterClient; + +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientLauncher.java similarity index 46% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientLauncher.java index 5384422..4005841 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterLauncher.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientLauncher.java @@ -1,7 +1,10 @@ -package com.paradogs.common.server.master; +package com.paradogs.common.core.masterClient; import com.paradogs.common.core.pojo.Connection; +import com.paradogs.common.core.rpc.InitRPC; +import com.paradogs.common.core.server.ServerProperties; import com.paradogs.common.core.utils.ConnectionUtils; +import com.paradogs.common.core.utils.SpringUtils; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -9,9 +12,6 @@ import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; -import java.util.HashMap; -import java.util.Map; - /** * @author: yumi * @date: 2023/7/31 23:29 @@ -20,31 +20,36 @@ import java.util.Map; @Slf4j @Getter @Component -public class MasterLauncher implements ApplicationRunner { +public class MasterClientLauncher implements ApplicationRunner { @Autowired private MasterProperties masterProperties; - private MasterClient masterClient; - @Override public void run(ApplicationArguments args) { if (masterProperties == null || masterProperties.getMasters() == null) { return; -// throw new RuntimeException("no found masterProperties: null"); } /** * 待优化:master 集群,目前只有单 master */ for (MasterProperties.MasterConfig masterConfig : masterProperties.getMasters()) { -// if (masterMap.get(masterConfig.getName()) != null) { -// log.error("master name duplicate"); -// throw new RuntimeException("master 名称重复"); -// } - this.masterClient = new MasterClient(masterConfig).start(); - log.info("Connect master success: [{} /{}:{}]", masterConfig.getName(), masterConfig.getHost(), masterConfig.getPort()); + MasterClientHolder.masterClient = new MasterClient(masterConfig).start(); + // 初始化数据 + InitRPC initRPC = SpringUtils.getBean(InitRPC.class); + ConnectionUtils.setMasterChannel(MasterClientHolder.masterClient.getChannel()); + Connection connection = ConnectionUtils.saveNewConn(MasterClientHolder.masterClient.getChannel()); + + // 发送服务信息 + initRPC.getClientInfo(SpringUtils.getBean(ServerProperties.class)) + .thenAccept(serverProperties -> { + log.info("receive reply >> {}", serverProperties); + connection.init("master", "master-1"); + log.info("Connect master success: [{} /{}:{}]", masterConfig.getName(), masterConfig.getHost(), masterConfig.getPort()); + }); + } @@ -54,7 +59,7 @@ public class MasterLauncher implements ApplicationRunner { * 关闭所有 master 连接 */ public void closeAll() { - this.masterClient.closeSync(); + MasterClientHolder.masterClient.closeSync(); } } diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterProperties.java similarity index 95% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterProperties.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterProperties.java index f480303..6861437 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/master/MasterProperties.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterProperties.java @@ -1,4 +1,4 @@ -package com.paradogs.common.server.master; +package com.paradogs.common.core.masterClient; import com.paradogs.common.core.utils.StringUtils; import lombok.Data; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/state/MasterClientState.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/state/MasterClientState.java new file mode 100644 index 0000000..f90ac71 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/state/MasterClientState.java @@ -0,0 +1,98 @@ +package com.paradogs.common.core.masterClient.state; + +import com.paradogs.common.core.masterClient.MasterClient; +import com.paradogs.common.core.masterClient.MasterClientHolder; +import com.paradogs.common.core.masterClient.MasterProperties; +import com.paradogs.common.core.pojo.Connection; +import com.paradogs.common.core.rpc.InitRPC; +import com.paradogs.common.core.server.ServerProperties; +import com.paradogs.common.core.utils.ConnectionUtils; +import com.paradogs.common.core.utils.SpringUtils; +import lombok.extern.slf4j.Slf4j; + +/** + * @author: yumi + * @date: 2023/8/29 10:47 + * @Description: TODO + */ +@Slf4j +public enum MasterClientState { + + /** + * 启动服务器 + */ + WAIT_START { + @Override + public MasterClientState flow() { + MasterProperties masterProperties = SpringUtils.getBean(MasterProperties.class); + /** + * 待优化:master 集群,目前只有单 master + */ + for (MasterProperties.MasterConfig masterConfig : masterProperties.getMasters()) { + MasterClientHolder.masterClient = new MasterClient(masterConfig).start(); + log.info("Connect master success: [{} /{}:{}]", masterConfig.getName(), masterConfig.getHost(), masterConfig.getPort()); + } + return MasterClientState.WAIT_INIT; + } + }, + + /** + * 初始化服务器信息 + */ + WAIT_INIT { + @Override + public MasterClientState flow() { + + // 初始化数据 + InitRPC initRPC = SpringUtils.getBean(InitRPC.class); + ConnectionUtils.setMasterChannel(MasterClientHolder.masterClient.getChannel()); + Connection connection = ConnectionUtils.saveNewConn(MasterClientHolder.masterClient.getChannel()); + + // 发送服务信息 + initRPC.getClientInfo(SpringUtils.getBean(ServerProperties.class)) + .thenAccept(serverProperties -> { + log.info("receive reply >> {}", serverProperties); + connection.init("master", "master-1"); + this.flow(true); + }); + + return MasterClientState.WAIT_CALLBACK; + } + }, + + /** + * 运行中 + */ + RUNNING { + @Override + public MasterClientState flow() { + log.warn("MasterClientState is already Running"); + return MasterClientState.RUNNING; + } + }, + + /** + * 等待回调 + */ + WAIT_CALLBACK { + @Override + public MasterClientState flow() { + return null; + } + public MasterClientState flow(boolean result) { + return result ? RUNNING : WAIT_INIT; + } + }; + + /** + * 执行并返回下一个状态 + * @return + */ + public abstract MasterClientState flow(); + + public MasterClientState flow(boolean result) { + log.error("no rewrite method: MasterClientState.flow(boolean)"); + return null; + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/CmdMsgResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/CmdMsgResolver.java deleted file mode 100644 index 571252f..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/CmdMsgResolver.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.paradogs.common.core.message.route; - -import com.paradogs.common.core.message.route.base.MsgTargetResolver; - -/** - * @author: yumi - * @date: 2023/8/11 11:31 - * @Description: TODO - * 未实现 - */ -@Deprecated -public class CmdMsgResolver extends MsgTargetResolver { - @Override - public void initMsgMapping() { - - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/RouteMsgResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/RouteMsgResolver.java deleted file mode 100644 index 6350d93..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/RouteMsgResolver.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.paradogs.common.core.message.route; - -import com.paradogs.common.core.annoations.PdgMsg; -import com.paradogs.common.core.annoations.PdgMsgMapping; -import com.paradogs.common.core.annoations.PdgRPCMapping; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.message.route.base.MsgTargetResolver; -import com.paradogs.common.core.utils.SpringUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.core.annotation.AnnotationUtils; -import org.springframework.stereotype.Component; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Method; -import java.lang.reflect.Parameter; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -/** - * @author: yumi - * @date: 2023/8/7 9:24 - * @Description: TODO - */ -@Slf4j -@Component -public class RouteMsgResolver extends MsgTargetResolver { - - @Override - public void initMsgMapping() { - - initControllerMapping(); - - initRpcRespMapping(); - - } - - /** - * 初始化接收消息的 controller 映射 - */ - private void initControllerMapping() { - Map mappingMap = this.getMappingMap(); - - List methods = SpringUtils.getMethodsWithAnnotation(PdgMsgMapping.class); - for (Method method : methods) { - // 计算路由 - PdgMsgMapping parentRouteMapping = AnnotationUtils.findAnnotation(method.getDeclaringClass(), PdgMsgMapping.class); - String route = (parentRouteMapping != null ? parentRouteMapping.value() : "") + (AnnotationUtils.findAnnotation(method, PdgMsgMapping.class).value().startsWith("/") ? "" : ".") + AnnotationUtils.findAnnotation(method, PdgMsgMapping.class).value(); - if (mappingMap.containsKey(route)) { - throw new RuntimeException("Duplicate route found: [" + route + "]"); - } - - // 保存 Msg 类型和要执行的方法 - Class targetMsgClass = null; - for (Parameter parameter : method.getParameters()) { - if (parameter.getAnnotation(PdgMsg.class) != null) { - targetMsgClass = (Class) parameter.getType(); - - } else { - // 如果只有一个 BaseMsg 参数,自动优化添加,等于加了 PdgMsg - List baseMsgList = Stream.of(method.getParameters()).filter(param -> param.getType().isAssignableFrom(BaseMsg.class)).collect(Collectors.toList()); - if (baseMsgList.size() == 1) { - targetMsgClass = (Class) parameter.getType(); - } - - } - } - mappingMap.put(route, new MsgMapping(targetMsgClass, method)); - } - } - -// /** -// * 初始化 rpc 的 |resp 路由 -// */ - private void initRpcRespMapping() { - Map mappingMap = this.getMappingMap(); - - List methods = SpringUtils.getMethodsWithAnnotation(PdgRPCMapping.class); - for (Method method : methods) { - // 计算路由 - PdgRPCMapping pdgRPCMapping = AnnotationUtils.findAnnotation(method, PdgRPCMapping.class); - String route = pdgRPCMapping.value() + "|resp"; - - if (mappingMap.containsKey(route)) { - throw new RuntimeException("Duplicate route found: [" + route + "]"); - } - - // 保存 Msg 类型和要执行的方法 - try { - if (pdgRPCMapping.returnType() == null) { - throw new RuntimeException("rpc[" + pdgRPCMapping.value() + "] returnType is null"); - } - Class targetMsgClass = pdgRPCMapping.returnType(); - - if (mappingMap.containsKey(route)) { - throw new RuntimeException("route already exist: " + route); - } - mappingMap.put(route, new MsgMapping(targetMsgClass, method)); - - } catch (Exception e) { - throw new RuntimeException("rpc[" + pdgRPCMapping.value() + "] return must extends BaseMsg(?GCMsg)"); - } - - } - } - - // /** -// * 从方法中获取 BaseMsg 信息,有 PdgMsg 注解或仅有一个 BaseMsg 参数时返回 -// * @param method -// * @return -// */ - public static Class getOnlyBaseMsgTypeWithMethod(Method method) { - for (Parameter parameter : method.getParameters()) { - if (parameter.getAnnotation(PdgMsg.class) != null) { - return (Class) parameter.getType(); - - } else { - // 如果只有一个 BaseMsg 参数,自动优化添加,等于加了 PdgMsg - List baseMsgList = Stream.of(method.getParameters()).filter(param -> param.getType().isAssignableFrom(BaseMsg.class)).collect(Collectors.toList()); - if (baseMsgList.size() == 1) { - return (Class) parameter.getType(); - } - - } - } - return null; - } - - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/base/MsgTargetResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/base/MsgTargetResolver.java deleted file mode 100644 index 1be95d4..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/base/MsgTargetResolver.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.paradogs.common.core.message.route.base; - -import com.paradogs.common.core.message.route.MsgMapping; -import lombok.Getter; - -import javax.annotation.PostConstruct; -import java.util.Map; -import java.util.TreeMap; - -/** - * @author: yumi - * @date: 2023/8/4 14:34 - * @Description: TODO - */ -public abstract class MsgTargetResolver { - - @Getter - private Map mappingMap = new TreeMap<>(); - - /** - * 加载映射和消息 cmd,Bean 注册完成后执行 - */ - @PostConstruct - public abstract void initMsgMapping(); - - /** - * 根据路由获取消息映射信息 - * @param route - * @return - */ - public MsgMapping getMsgMapping(T route) { - return mappingMap.get(route); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java similarity index 97% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java index 8d8bad6..cfc9d0b 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.msg; import com.baidu.bjf.remoting.protobuf.FieldType; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg_CmdVersion.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java similarity index 97% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg_CmdVersion.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java index 7815d58..7d1e4c3 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/BaseMsg_CmdVersion.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.msg; import com.baidu.bjf.remoting.protobuf.FieldType; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/ByteBodyMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java similarity index 78% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/ByteBodyMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java index d8cb46f..eeb2d17 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/ByteBodyMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java @@ -1,7 +1,5 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.msg; -import com.paradogs.common.core.utils.BeanUtils; -import com.paradogs.common.core.utils.ProtoUtils; import io.netty.buffer.ByteBuf; import lombok.Data; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CGMsg.java similarity index 86% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CGMsg.java index 970006e..511eccf 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CGMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.msg; import lombok.Data; import lombok.ToString; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CGTestMsg.java similarity index 71% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CGTestMsg.java index 0a539e8..cfdd817 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CGTestMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CGTestMsg.java @@ -1,6 +1,5 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.msg; -import com.paradogs.common.core.annoations.PdgMsg; import lombok.*; /** diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CommonController.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java similarity index 63% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CommonController.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java index 91cbdea..5ae3b9c 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/CommonController.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java @@ -1,7 +1,7 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.msg; -import com.paradogs.common.core.annoations.PdgController; -import com.paradogs.common.core.annoations.PdgMsgMapping; +import com.paradogs.common.core.annoations.request.PdgController; +import com.paradogs.common.core.annoations.request.PdgMsgMapping; import lombok.extern.slf4j.Slf4j; /** diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/DBTask.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/DBTask.java similarity index 94% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/DBTask.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/DBTask.java index 969e975..399116f 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/DBTask.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/DBTask.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.msg; import lombok.Data; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java similarity index 84% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java index a41dd22..11a9f49 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.msg; import lombok.Data; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCTestMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCTestMsg.java similarity index 84% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCTestMsg.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCTestMsg.java index 2197775..a23169c 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/GCTestMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCTestMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.msg; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/IMsgSerializable.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java similarity index 74% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/IMsgSerializable.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java index 7c5bb74..a445a79 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/IMsgSerializable.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java @@ -1,6 +1,5 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.msg; -import com.google.protobuf.InvalidProtocolBufferException; import io.netty.buffer.ByteBuf; import java.io.IOException; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgContextHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgContextHolder.java similarity index 80% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgContextHolder.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgContextHolder.java index d7d436e..d685d27 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgContextHolder.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgContextHolder.java @@ -1,5 +1,6 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.msg; +import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import lombok.*; @@ -36,6 +37,13 @@ public class MsgContextHolder { return new MsgContextHolder.Snapshot(MsgContextHolder.ctx, playerId); } + public static Channel getChannel() { + if (MsgContextHolder.getCtx() != null) { + return MsgContextHolder.getCtx().channel(); + } + return null; + } + /** * 快照,与 MsgContextHolder 属性相同 */ diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java similarity index 91% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java index a280bc1..6da768a 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/MsgHeader.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java @@ -1,22 +1,16 @@ -package com.paradogs.common.core.message; +package com.paradogs.common.core.msg; import com.baidu.bjf.remoting.protobuf.Codec; import com.baidu.bjf.remoting.protobuf.FieldType; import com.baidu.bjf.remoting.protobuf.ProtobufProxy; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; -import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.google.protobuf.InvalidProtocolBufferException; -import com.paradogs.common.core.exceptions.SerializationException; import com.paradogs.common.core.utils.BeanUtils; -import com.paradogs.common.core.utils.ProtoUtils; import com.paradogs.common.core.utils.RouteUtils; -import com.paradogs.common.core.utils.SpringUtils; import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; import lombok.Data; import java.io.IOException; -import java.time.LocalDateTime; import java.util.Date; import java.util.UUID; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java new file mode 100644 index 0000000..977ff35 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java @@ -0,0 +1,9 @@ +package com.paradogs.common.core.msg; + +/** + * @author: yumi + * @date: 2023/8/26 16:10 + * @Description: TODO + */ +public class VoidMsg extends BaseMsg { +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/MsgMapping.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/route/MsgMapping.java similarity index 78% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/MsgMapping.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/route/MsgMapping.java index 23b083b..cdf0186 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/message/route/MsgMapping.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/route/MsgMapping.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.message.route; +package com.paradogs.common.core.msg.route; -import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.msg.BaseMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java index 4e5d46f..4fae87a 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java @@ -1,9 +1,10 @@ package com.paradogs.common.core.netty.codec; -import com.paradogs.common.core.message.*; -import com.paradogs.common.core.message.route.MsgMapping; -import com.paradogs.common.core.message.route.base.MsgTargetResolver; -import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.common.core.annoations.request.PdgRequestHolder; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.ByteBodyMsg; +import com.paradogs.common.core.msg.MsgHeader; +import com.paradogs.common.core.msg.route.MsgMapping; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; @@ -41,7 +42,7 @@ public class ConnectorCodec extends ByteToMessageCodec { msgHeader.deserialization(in); // 获取消息实际类型 - MsgMapping msgMapping = SpringUtils.getBean(MsgTargetResolver.class).getMsgMapping(msgHeader.getRoute()); + MsgMapping msgMapping = PdgRequestHolder.getMappingMap().get(msgHeader.getRoute()); if (msgMapping == null) { log.error("route not found: [{}]", msgHeader.getRoute()); return; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java index ff67ca0..4551328 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java @@ -1,19 +1,25 @@ package com.paradogs.common.core.netty.codec; -import com.paradogs.common.core.message.*; -import com.paradogs.common.core.message.route.MsgMapping; -import com.paradogs.common.core.message.route.base.MsgTargetResolver; +import com.paradogs.common.core.annoations.request.PdgRequestHolder; +import com.paradogs.common.core.annoations.rpc.PdgRPCHolder; +import com.paradogs.common.core.annoations.rpc.RpcResponseResolver; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.ByteBodyMsg; +import com.paradogs.common.core.msg.MsgHeader; +import com.paradogs.common.core.msg.route.MsgMapping; +import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; +import com.paradogs.common.core.netty.initializer.ServerChannelInitializer; +import com.paradogs.common.core.netty.pipelines.ServerMsgHandler; +import com.paradogs.common.core.utils.SpringUtils; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import java.util.List; -import java.util.concurrent.CompletableFuture; /** * @author: yumi @@ -28,9 +34,6 @@ import java.util.concurrent.CompletableFuture; @ConditionalOnProperty(name = "paradogs.server.connector", havingValue = "false", matchIfMissing = true) public class ServerCodec extends ByteToMessageCodec { - @Autowired - private MsgTargetResolver routeMsgResolver; - @Override protected void encode(ChannelHandlerContext ctx, BaseMsg msg, ByteBuf out) throws Exception { @@ -47,7 +50,13 @@ public class ServerCodec extends ByteToMessageCodec { msgHeader.deserialization(in); // 获取消息实际类型 - MsgMapping msgMapping = routeMsgResolver.getMsgMapping(msgHeader.getRouteMethod()); + MsgMapping msgMapping = PdgRequestHolder.getMappingMap().get(msgHeader.getRouteMethod()); + if (msgMapping == null) { + msgMapping = PdgRPCHolder.getMappingMap().get(msgHeader.getRouteMethod()); + } + ServerMsgHandler bean = SpringUtils.getBean(ServerMsgHandler.class); + ServerChannelInitializer bean1 = SpringUtils.getBean(ServerChannelInitializer.class); + BaseMsg baseMsg = msgMapping != null && msgMapping.getMsgClass() != null && !msgMapping.getMsgClass().isAssignableFrom(void.class) ? msgMapping.getMsgClass().newInstance() @@ -58,7 +67,6 @@ public class ServerCodec extends ByteToMessageCodec { out.add(baseMsg); - } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java index d37c946..2d12577 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java @@ -1,6 +1,5 @@ package com.paradogs.common.core.netty.initializer; -import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; import com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper; import com.paradogs.common.core.netty.protocol.ProtocolProperties; import com.paradogs.common.core.utils.SpringUtils; @@ -20,9 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired; @Slf4j public abstract class BaseChannelInitializer extends ChannelInitializer { - @Autowired - private BaseMsgHandler msgHandler; - @Autowired private MsgHeaderWrapper msgHeaderWrapper; @@ -51,10 +47,10 @@ public abstract class BaseChannelInitializer extends ChannelInitializer extends SimpleChannelInboundHandler { - @Getter - private GlobalExceptionDispatch globalExceptionDispatch; - - /** - * 开启队列时的消息处理 - */ - protected void processWithQueue(T msg) throws InterruptedException { -// queueManager.pushMainMsg(msg); - } - /** - * 未开启队列时的消息处理 + * 消息处理 */ - protected void processWithoutQueue(T msg) throws Exception { -// handler.handle(msg); - } + protected abstract void processMsg(T msg) throws Exception; /** * 设置自定义参数 @@ -44,12 +31,6 @@ public abstract class BaseMsgHandler extends SimpleChannelInb protected void setProps(ChannelHandlerContext ctx, T msg) { } - /** - * 是否开启队列 - * @return - */ - protected abstract boolean isEnableQueue(); - /** * 设置消息上下文 * @param ctx @@ -67,20 +48,12 @@ public abstract class BaseMsgHandler extends SimpleChannelInb setContext(ctx, msg); try { - - // 开启消息队列时,消息放入队列等待处理,否则直接处理 - if (isEnableQueue()) { - processWithQueue(msg); - } else { - if (globalExceptionDispatch == null) { - globalExceptionDispatch = SpringUtils.getBean(GlobalExceptionDispatch.class); - } - processWithoutQueue(msg); - } + // 消息处理 + processMsg(msg); } catch (Exception e) { // 转发到全局异常处理 - globalExceptionDispatch.forward(e); + SpringUtils.getBean(GlobalExceptionDispatch.class).forward(e); } finally { EventUtils.publishEvent(new ReceiveMsgEvent<>(msg)); @@ -93,9 +66,7 @@ public abstract class BaseMsgHandler extends SimpleChannelInb * @throws Exception */ @Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - EventUtils.publishEvent(new ChannelActiveEvent(ctx)); - } + public abstract void channelActive(ChannelHandlerContext ctx) throws Exception; /** * 连接断开事件 @@ -103,9 +74,7 @@ public abstract class BaseMsgHandler extends SimpleChannelInb * @throws Exception */ @Override - public void channelInactive(ChannelHandlerContext ctx) throws Exception { - EventUtils.publishEvent(new ChannelInactiveEvent(ctx)); - } + public abstract void channelInactive(ChannelHandlerContext ctx) throws Exception; @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ClientMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ClientMsgHandler.java new file mode 100644 index 0000000..1a689e8 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ClientMsgHandler.java @@ -0,0 +1,40 @@ +package com.paradogs.common.core.netty.pipelines; + +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.utils.MsgUtils; +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/28 14:08 + * @Description: TODO + */ +@Component +@ChannelHandler.Sharable +public class ClientMsgHandler extends BaseMsgHandler { + + @Override + protected void processMsg(BaseMsg msg) throws Exception { + MsgUtils.adapterHandle(msg); + } + + /** + * 连接建立事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + } + + /** + * 连接断开事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelInactive(ChannelHandlerContext ctx) throws Exception { + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ForwardMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ForwardMsgHandler.java new file mode 100644 index 0000000..4c82c7a --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ForwardMsgHandler.java @@ -0,0 +1,38 @@ +package com.paradogs.common.core.netty.pipelines; + +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.utils.MsgUtils; +import io.netty.channel.ChannelHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/26 16:01 + * @Description: TODO + */ +public abstract class ForwardMsgHandler extends ServerMsgHandler { + + @Override + protected void processMsg(BaseMsg msg) throws Exception { + if (directProcessCondition(msg)) { + directProcess(msg); + return; + } + MsgUtils.send(msg.getMsgHeader().getRoute(), msg); + } + + /** + * 直接处理方法 + */ + protected abstract void directProcess(BaseMsg msg); + + /** + * 直接处理的条件 + * @return + */ + protected abstract boolean directProcessCondition(BaseMsg msg); + + + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHeaderWrapper.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHeaderWrapper.java index b6270a6..68ebaed 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHeaderWrapper.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHeaderWrapper.java @@ -1,7 +1,5 @@ package com.paradogs.common.core.netty.pipelines; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.message.MsgHeader; import io.netty.channel.*; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java new file mode 100644 index 0000000..4cf3825 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java @@ -0,0 +1,41 @@ +package com.paradogs.common.core.netty.pipelines; + +import com.paradogs.common.core.events.ChannelActiveEvent; +import com.paradogs.common.core.events.ChannelInactiveEvent; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.utils.EventUtils; +import io.netty.channel.ChannelHandlerContext; + +/** + * @author: yumi + * @date: 2023/8/28 14:12 + * @Description: TODO + */ +public abstract class ServerMsgHandler extends BaseMsgHandler { + + + @Override + protected void processMsg(BaseMsg msg) throws Exception { + + } + + /** + * 连接建立事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + EventUtils.publishEvent(new ChannelActiveEvent(ctx)); + } + + /** + * 连接断开事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelInactive(ChannelHandlerContext ctx) throws Exception { + EventUtils.publishEvent(new ChannelInactiveEvent(ctx)); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java index 54fe40f..c468bf7 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java @@ -1,5 +1,6 @@ package com.paradogs.common.core.pojo; +import com.paradogs.common.core.msg.BaseMsg; import io.netty.channel.Channel; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -12,7 +13,7 @@ import lombok.extern.slf4j.Slf4j; */ @Slf4j @Data -public class Connection { +public class Connection extends BaseMsg { /** * 通道 diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRPC.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java similarity index 55% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRPC.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java index 1b0990a..ef2a48e 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/rpc/InitRPC.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java @@ -1,9 +1,9 @@ -package com.paradogs.common.server.rpc; +package com.paradogs.common.core.rpc; -import com.paradogs.common.core.annoations.PdgMsg; -import com.paradogs.common.core.annoations.PdgRPC; -import com.paradogs.common.core.annoations.PdgRPCMapping; -import com.paradogs.common.server.ServerProperties; +import com.paradogs.common.core.annoations.request.PdgMsg; +import com.paradogs.common.core.annoations.rpc.PdgRPC; +import com.paradogs.common.core.annoations.rpc.PdgRPCMapping; +import com.paradogs.common.core.server.ServerProperties; import java.util.concurrent.CompletableFuture; diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/Server.java similarity index 77% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/Server.java index c1e8649..29a943a 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/Server.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/Server.java @@ -1,27 +1,21 @@ -package com.paradogs.common.server; +package com.paradogs.common.core.server; -import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.events.ServerStartEvent; +import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; +import com.paradogs.common.core.netty.initializer.ServerChannelInitializer; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.SpringUtils; -import com.paradogs.common.server.events.ServerStartEvent; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; -import io.netty.channel.ChannelInitializer; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; -import lombok.Data; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; /** * @author: yumi - * @date: 2023-02-24 14:34 + * @date: 2023/8/26 17:19 * @Description: TODO */ @Slf4j @@ -58,15 +52,15 @@ public class Server { .childHandler(SpringUtils.getBean(ServerChannelInitializer.class)); this.channel = this.server.bind(properties.getPort()).sync().channel(); - log.info("Start success: [{} localhost:{}]", properties.getName(), properties.getPort()); + log.info("Server start success: [{} localhost:{}]", properties.getName(), properties.getPort()); EventUtils.publishEvent(new ServerStartEvent(System.currentTimeMillis() - startTime)); channel.closeFuture().addListener(future -> { - log.info("[{}] server stop", this.properties.getName()); + log.info("Server stop: [{}]", this.properties.getName()); }); } catch (InterruptedException e) { - log.error("server error:[{}]", e.getMessage(), e); + log.error("Server error:[{}]", e.getMessage(), e); this.closeSync(); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerHolder.java new file mode 100644 index 0000000..63d2a52 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerHolder.java @@ -0,0 +1,25 @@ +package com.paradogs.common.core.server; + +import io.netty.channel.Channel; +import lombok.Getter; +import lombok.Setter; + +/** + * @author: yumi + * @date: 2023/8/26 17:18 + * @Description: TODO + */ +public class ServerHolder { + + @Getter + private static Server server; + + @Getter + private static Channel channel; + + public static void setServer(Server server) { + ServerHolder.server = server; + ServerHolder.channel = server.getChannel(); + } + +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerLauncher.java similarity index 57% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerLauncher.java index 167e3f2..5abf4e1 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerLauncher.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerLauncher.java @@ -1,5 +1,14 @@ -package com.paradogs.common.server; - +package com.paradogs.common.core.server; + +import com.paradogs.common.core.events.ServerStartEvent; +import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; +import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.SpringUtils; +import io.netty.bootstrap.ServerBootstrap; +import io.netty.channel.Channel; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.nio.NioServerSocketChannel; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; @@ -29,6 +38,7 @@ public class ServerLauncher implements ApplicationRunner { */ this.server = new Server(serverProperties); this.server.start(); + ServerHolder.setServer(this.server); } diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerProperties.java similarity index 91% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerProperties.java index 2db402b..8857611 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/ServerProperties.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerProperties.java @@ -1,11 +1,10 @@ -package com.paradogs.common.server; +package com.paradogs.common.core.server; -import com.paradogs.common.core.message.CGMsg; +import com.paradogs.common.core.msg.CGMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; -import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/state/ServerState.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/state/ServerState.java new file mode 100644 index 0000000..57b4fea --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/state/ServerState.java @@ -0,0 +1,57 @@ +package com.paradogs.common.core.server.state; + +import com.paradogs.common.core.server.Server; +import com.paradogs.common.core.server.ServerHolder; +import com.paradogs.common.core.server.ServerProperties; +import com.paradogs.common.core.utils.SpringUtils; +import lombok.extern.slf4j.Slf4j; + +/** + * @author: yumi + * @date: 2023/8/29 10:27 + * @Description: TODO + */ +@Slf4j +public enum ServerState { + + /** + * 启动服务器 + */ + WAIT_START { + @Override + public ServerState flow() { + Server server = new Server(SpringUtils.getBean(ServerProperties.class)); + server.start(); + ServerHolder.setServer(server); + return ServerState.WAIT_INIT; + } + }, + + /** + * 初始化服务器信息 + */ + WAIT_INIT { + @Override + public ServerState flow() { + return ServerState.RUNNING; + } + }, + + /** + * 运行中 + */ + RUNNING { + @Override + public ServerState flow() { + log.warn("ServerState is already OVER"); + return ServerState.RUNNING; + } + }; + + /** + * 执行并返回下一个状态 + * @return + */ + public abstract ServerState flow(); + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java index 50d6452..f8fdfeb 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java @@ -3,10 +3,6 @@ package com.paradogs.common.core.utils; import lombok.extern.slf4j.Slf4j; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java index 168b58f..5d98ce4 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java @@ -35,7 +35,7 @@ public class ConnectionUtils { public static Connection saveNewConn(Channel channel) { Connection conn = new Connection(channel); if (connectionMap.containsKey(channel)) { - log.warn("connection is already exists: {}", channel); + log.warn("Connection is already exists: {}", channel); } connectionMap.put(channel, conn); return conn; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java index ca506d6..535b721 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java @@ -1,7 +1,7 @@ package com.paradogs.common.core.utils; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.rpc.RpcResponseResolver; +import com.paradogs.common.core.annoations.rpc.RpcResponseResolver; +import com.paradogs.common.core.msg.BaseMsg; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/utils/MsgUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java similarity index 46% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/utils/MsgUtils.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java index a3f335e..286839b 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/utils/MsgUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java @@ -1,13 +1,15 @@ -package com.paradogs.common.server.utils; +package com.paradogs.common.core.utils; +import com.paradogs.common.core.annoations.request.PdgRequestHolder; +import com.paradogs.common.core.annoations.rpc.PdgRPCHolder; +import com.paradogs.common.core.annoations.rpc.RpcResponseResolver; import com.paradogs.common.core.events.RPCRequestEvent; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.message.MsgContextHolder; -import com.paradogs.common.core.message.MsgHeader; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.RouteUtils; -import com.paradogs.common.core.utils.ConnectionUtils; -import com.paradogs.common.server.ServerProperties; +import com.paradogs.common.core.events.RPCRespEvent; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.MsgContextHolder; +import com.paradogs.common.core.msg.MsgHeader; +import com.paradogs.common.core.msg.route.MsgMapping; +import com.paradogs.common.core.server.ServerProperties; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; @@ -15,7 +17,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.concurrent.CompletableFuture; +import java.util.stream.Stream; /** @@ -48,6 +53,17 @@ public class MsgUtils { log.warn("channel is null, route: {}", route); } } + public static void send(BaseMsg msg) { + MsgUtils.send(msg.getMsgHeader().getRoute(), msg); + } + + /** + * 转发消息 + * @param msg + */ + public static void forward(BaseMsg msg) { + MsgUtils.send(msg); + } /** * 发起 rpc 请求 @@ -93,4 +109,75 @@ public class MsgUtils { MsgUtils.request(event.getRoute(), event.getMsg(), event.getReturnClass(), event.getPromise()); } + /** + * 处理消息 + * @param msg + * @throws InvocationTargetException + * @throws IllegalAccessException + */ + public static void adapterHandle(BaseMsg msg) throws InvocationTargetException, IllegalAccessException { + MsgMapping msgMapping = PdgRequestHolder.getMappingMap().get(msg.getMsgHeader().getRouteMethod()); + if (msgMapping == null) { + msgMapping = PdgRPCHolder.getMappingMap().get(msg.getMsgHeader().getRouteMethod()); + } + + if (msgMapping == null) { + log.error("msgMapping not found, route: [{}]", msg.getMsgHeader().getRouteMethod()); + return; + } + + /** + * 响应处理 + */ + if (msg.getMsgHeader().isResp()) { + EventUtils.publishEvent(new RPCRespEvent<>(msg)); + return; + } + + Method method = msgMapping.getMethod(); + Object pdgController = SpringUtils.getBean(method.getDeclaringClass()); + + if (pdgController == null) { + log.error("class [{}] not managed by Spring", method.getDeclaringClass()); + return; + } + + /** + * 待优化:这里可以像 SpringMVC 一样,根据方法参数注入相关变量,目前暂时只有 BaseMsg + */ + Object result = method.invoke( + pdgController, + Stream.of(method.getParameterTypes()) + .map(type -> msg.getClass().isAssignableFrom(type) ? msg : null) + .toArray() + ); + + if (result == null || StringUtils.isBlank(msg.getMsgHeader().getCallbackRoute())) { + return; + } + if (!(result instanceof BaseMsg)) { + log.warn("{} return no extends BaseMsg", method.getName()); + return; + } + + // !! 如果把请求参数返回,返回值的类会和请求参数地址一样,英文就是 msg == gcMsg + // 准备返回消息 + BaseMsg gcMsg = (BaseMsg) result; + MsgHeader header = new MsgHeader(); + header.setPlayerId(msg.getMsgHeader().getPlayerId()); + header.setRoute(msg.getMsgHeader().getCallbackRoute()); + header.setReplyMsgId(msg.getMsgHeader().getId()); + gcMsg.setMsgHeader(header); + + /** + * 返回值作为消息返回给请求者 + */ + MsgUtils.send( +// msg.getMsgHeader().getCtx().channel(), + msg.getMsgHeader().getRoute(), + gcMsg + ); + log.info("reply >> {}", msg.getMsgHeader()); + } + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java index e3b94b3..f50be05 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java @@ -4,7 +4,6 @@ import com.baidu.bjf.remoting.protobuf.Codec; import com.baidu.bjf.remoting.protobuf.ProtobufProxy; import java.io.IOException; -import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java index 4bcd321..08f1955 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java @@ -1,7 +1,5 @@ package com.paradogs.common.core.utils; -import com.paradogs.common.core.annoations.PdgLoop; -import com.paradogs.common.core.annoations.PdgMsgMapping; import lombok.Getter; import org.springframework.aop.framework.AopContext; import org.springframework.aop.support.AopUtils; @@ -9,21 +7,10 @@ import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.cache.annotation.Cacheable; import org.springframework.context.*; import org.springframework.core.annotation.AnnotationUtils; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.core.io.support.ResourcePatternResolver; -import org.springframework.core.type.classreading.MetadataReader; -import org.springframework.core.type.classreading.MetadataReaderFactory; -import org.springframework.core.type.filter.AnnotationTypeFilter; -import org.springframework.core.type.filter.TypeFilter; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -import org.springframework.util.ClassUtils; -import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.ArrayList; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/TimeUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/TimeUtils.java new file mode 100644 index 0000000..7e7cb06 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/TimeUtils.java @@ -0,0 +1,22 @@ +package com.paradogs.common.core.utils; + +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.TimeUnit; + +/** + * @author: yumi + * @date: 2023/8/26 9:55 + * @Description: TODO + */ +@Slf4j +public class TimeUtils { + + public static long calcDuration(long startTime, TimeUnit timeUnit) { + return TimeUnit.MILLISECONDS.convert(System.currentTimeMillis() - startTime, timeUnit); + } + public static long calcDuration(long startTime) { + return calcDuration(startTime, TimeUnit.MILLISECONDS); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/Wrap.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/Wrap.java deleted file mode 100644 index dc7c257..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/Wrap.java +++ /dev/null @@ -1,21 +0,0 @@ -//package com.paradogs.common.core.utils; -// -//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -//import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -// -///** -// * @author: yumi -// * @date: 2023/2/18 15:20 -// * @Description: TODO -// */ -//public class Wrap { -// -// public static LambdaQueryWrapper lbq() { -// return new LambdaQueryWrapper<>(); -// } -// -// public static LambdaUpdateWrapper lbu() { -// return new LambdaUpdateWrapper<>(); -// } -// -//} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelDataTransformListener.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelDataTransformListener.java deleted file mode 100644 index c581e27..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelDataTransformListener.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.paradogs.common.core.utils.excel; - -import com.alibaba.excel.context.AnalysisContext; -import com.alibaba.excel.event.AnalysisEventListener; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023/2/18 16:43 - * @Description: TODO - */ -@Slf4j -@Getter -public class ExcelDataTransformListener extends AnalysisEventListener { - - private List data = new ArrayList<>(); - - - /** - * Excel 获取到每一条数据都会执行一次 - * @param bean - * @param analysisContext - */ - @Override - public void invoke(T bean, AnalysisContext analysisContext) { - data.add(bean); -// log.info("add:[{}]", bean); - } - - /** - * 获取所有数据后执行 - * @param analysisContext - */ - @Override - public void doAfterAllAnalysed(AnalysisContext analysisContext) { -// log.info("表格读取完成"); - } - - - /** - * 读取表头信息 - * @param headMap - * @param context - */ - @Override - public void invokeHeadMap(Map headMap, AnalysisContext context) { -// log.info("表头信息:[{}]", headMap); - } - - - @Override - public void onException(Exception exception, AnalysisContext context) throws Exception { - log.error("表格读取发生异常:[{}]", exception.getMessage()); - } - - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelUtils.java deleted file mode 100644 index 7466943..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/excel/ExcelUtils.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.paradogs.common.core.utils.excel; - -import com.alibaba.excel.EasyExcel; -import com.paradogs.common.core.utils.excel.ExcelDataTransformListener; - -import java.io.File; -import java.util.List; - -/** - * @author: yumi - * @date: 2023/2/18 16:45 - * @Description: TODO - */ -public class ExcelUtils { - - /** - * 读取 Excel 并返回数据集合 - * @param excelFile Excel 文件 - * @param targetClass 数据类型 - * @param - * @return - */ - public static List read(File excelFile, Class targetClass) { - - ExcelDataTransformListener reader = new ExcelDataTransformListener<>(); - - /** - * 注意要调用 .sheet().doRead() 才会开始读取 - */ - EasyExcel.read(excelFile, targetClass, reader) - .sheet() - .doRead(); - - return reader.getData(); - } - - public static List read(File excelFile, String sheet, Class targetClass) { - - ExcelDataTransformListener reader = new ExcelDataTransformListener<>(); - - /** - * 注意要调用 .sheet().doRead() 才会开始读取 - */ - EasyExcel.read(excelFile, targetClass, reader) - .sheet(sheet) - .doRead(); - - return reader.getData(); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index fdf05e6..84fed76 100644 --- a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,17 +1,15 @@ -com.paradogs.common.core.utils.SpringUtils -com.paradogs.common.core.utils.EventUtils -com.paradogs.common.core.listeners.PdgEventListener +com.paradogs.common.core.config.NettyConfiguration -com.paradogs.common.core.message.route.RouteMsgResolver -com.paradogs.common.core.message.CommonController -com.paradogs.common.core.rpc.RpcResponseResolver +com.paradogs.common.core.config.ServerConfiguration -com.paradogs.common.core.netty.codec.CodecConfiguration +com.paradogs.common.core.config.UtilsConfiguration +com.paradogs.common.core.config.MasterClientConfiguration + +com.paradogs.common.core.config.RPCConfiguration + +com.paradogs.common.core.CoreStarter -com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper -com.paradogs.common.core.netty.protocol.ProtocolProperties -com.paradogs.common.core.exceptions.base.GlobalExceptionDispatch diff --git a/paradogs-common/paradogs-common-server-starter/src/main/resources/config/application.yml b/paradogs-common/paradogs-common-core/src/main/resources/config/application.yml similarity index 100% rename from paradogs-common/paradogs-common-server-starter/src/main/resources/config/application.yml rename to paradogs-common/paradogs-common-core/src/main/resources/config/application.yml diff --git a/paradogs-common/paradogs-common-server-starter/pom.xml b/paradogs-common/paradogs-common-game-starter/pom.xml similarity index 100% rename from paradogs-common/paradogs-common-server-starter/pom.xml rename to paradogs-common/paradogs-common-game-starter/pom.xml diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java new file mode 100644 index 0000000..dbbee26 --- /dev/null +++ b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java @@ -0,0 +1,22 @@ +package com.paradogs.common.game.config; + +import com.paradogs.common.core.netty.pipelines.ServerMsgHandler; +import com.paradogs.common.game.server.GameServerMsgHandler; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author: yumi + * @date: 2023/8/26 17:16 + * @Description: TODO + */ +@Configuration +public class NettyConfiguration { + + @Bean + @ConditionalOnMissingBean(ServerMsgHandler.class) + public ServerMsgHandler baseMsgHandler() { + return new GameServerMsgHandler(); + } +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueConfiguration.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/QueueConfiguration.java similarity index 77% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueConfiguration.java rename to paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/QueueConfiguration.java index b1dafe4..e395343 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueConfiguration.java +++ b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/QueueConfiguration.java @@ -1,5 +1,9 @@ -package com.paradogs.common.server.queue; +package com.paradogs.common.game.config; +import com.paradogs.common.game.queue.DBTaskConsumerThread; +import com.paradogs.common.game.queue.MainMsgConsumerThread; +import com.paradogs.common.game.queue.QueueManager; +import com.paradogs.common.game.queue.QueueProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/DBTaskConsumerThread.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/DBTaskConsumerThread.java similarity index 88% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/DBTaskConsumerThread.java rename to paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/DBTaskConsumerThread.java index 2f7c775..92fd89a 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/DBTaskConsumerThread.java +++ b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/DBTaskConsumerThread.java @@ -1,6 +1,6 @@ -package com.paradogs.common.server.queue; +package com.paradogs.common.game.queue; -import com.paradogs.common.core.message.DBTask; +import com.paradogs.common.core.msg.DBTask; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/MainMsgConsumerThread.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/MainMsgConsumerThread.java new file mode 100644 index 0000000..5bd1da1 --- /dev/null +++ b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/MainMsgConsumerThread.java @@ -0,0 +1,41 @@ +package com.paradogs.common.game.queue; + +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.netty.events.MainLoopEvent; +import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.MsgUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.lang.reflect.InvocationTargetException; + +/** + * @author: yumi + * @date: 2023/7/28 9:27 + * @Description: 消息处理线程 + */ +@Slf4j +@Component +@Scope("prototype") +public class MainMsgConsumerThread extends QueueConsumerThread { + + /** + * 消息处理 + * @param msg + * @throws InvocationTargetException + * @throws IllegalAccessException + */ + @Override + public void handle(BaseMsg msg) throws InvocationTargetException, IllegalAccessException { + MsgUtils.adapterHandle(msg); + } + + private MainLoopEvent mainLoopEvent = new MainLoopEvent(); + + @Override + public void loop() { + EventUtils.publishEvent(mainLoopEvent); + } + +} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueConsumerThread.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueConsumerThread.java similarity index 94% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueConsumerThread.java rename to paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueConsumerThread.java index e23a0f4..0fb690b 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueConsumerThread.java +++ b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueConsumerThread.java @@ -1,10 +1,10 @@ -package com.paradogs.common.server.queue; +package com.paradogs.common.game.queue; -import com.paradogs.common.core.exceptions.base.GlobalExceptionDispatch; +import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; +import com.paradogs.common.core.utils.StringUtils; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import java.lang.reflect.InvocationTargetException; diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueManager.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueManager.java similarity index 93% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueManager.java rename to paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueManager.java index c0c6a5f..f75124b 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueManager.java +++ b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueManager.java @@ -1,6 +1,6 @@ -package com.paradogs.common.server.queue; +package com.paradogs.common.game.queue; -import com.paradogs.common.core.message.BaseMsg; +import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.utils.SpringUtils; import lombok.Getter; import lombok.Setter; @@ -65,10 +65,6 @@ public class QueueManager implements ApplicationListener */ @Override public void onApplicationEvent(ContextRefreshedEvent event) { - if (!queueProperties.isEnable()) { - log.info("msg queue handler is disable"); - return; - } this.init(); } diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueProperties.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueProperties.java similarity index 76% rename from paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueProperties.java rename to paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueProperties.java index fc0c467..89206d3 100644 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/QueueProperties.java +++ b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueProperties.java @@ -1,4 +1,4 @@ -package com.paradogs.common.server.queue; +package com.paradogs.common.game.queue; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -26,9 +26,4 @@ public class QueueProperties { */ private int dbSize = 3; - /** - * 是否开启消息队列处理消息,不开启则 MsgHandler 直接处理 - */ - private boolean enable = false; - } diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java new file mode 100644 index 0000000..941dd0e --- /dev/null +++ b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java @@ -0,0 +1,29 @@ +package com.paradogs.common.game.server; + +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.netty.pipelines.ServerMsgHandler; +import com.paradogs.common.game.queue.QueueManager; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/26 17:05 + * @Description: TODO + */ +@Slf4j +@Component +@ConditionalOnMissingBean(ServerMsgHandler.class) +public class GameServerMsgHandler extends ServerMsgHandler { + + @Autowired + private QueueManager queueManager; + + @Override + protected void processMsg(BaseMsg msg) throws Exception { + queueManager.pushDBMsg(msg); + } + +} diff --git a/paradogs-common/paradogs-common-game-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-game-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..ba6cf06 --- /dev/null +++ b/paradogs-common/paradogs-common-game-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,7 @@ +com.paradogs.common.game.config.NettyConfiguration + +com.paradogs.common.game.config.QueueConfiguration + + + + diff --git a/paradogs-common/paradogs-common-serverClient-starter/src/main/resources/config/application.yml b/paradogs-common/paradogs-common-game-starter/src/main/resources/config/application.yml similarity index 100% rename from paradogs-common/paradogs-common-serverClient-starter/src/main/resources/config/application.yml rename to paradogs-common/paradogs-common-game-starter/src/main/resources/config/application.yml diff --git a/paradogs-common/paradogs-common-serverClient-starter/pom.xml b/paradogs-common/paradogs-common-master-starter/pom.xml similarity index 92% rename from paradogs-common/paradogs-common-serverClient-starter/pom.xml rename to paradogs-common/paradogs-common-master-starter/pom.xml index 9d2ab36..ae4acaa 100644 --- a/paradogs-common/paradogs-common-serverClient-starter/pom.xml +++ b/paradogs-common/paradogs-common-master-starter/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - paradogs-common-serverClient-starter + paradogs-common-master-starter 8 diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java new file mode 100644 index 0000000..025e1b1 --- /dev/null +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java @@ -0,0 +1,27 @@ +package com.paradogs.common.master; + +import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; +import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; +import com.paradogs.common.master.master.MasterServerMsgHandler; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +/** + * @author: yumi + * @date: 2023/8/26 17:56 + * @Description: TODO + */ +@Import({ + PdgRPCProxyBeanImportSelector.class, + PdgRequestInterfaceSelector.class +}) +@Configuration +public class MasterStarter { + + @Bean + public MasterServerMsgHandler serverMsgHandler() { + return new MasterServerMsgHandler(); + } + +} diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/config/ControllerConfiguration.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/config/ControllerConfiguration.java new file mode 100644 index 0000000..b44d18c --- /dev/null +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/config/ControllerConfiguration.java @@ -0,0 +1,26 @@ +package com.paradogs.common.master.config; + +import com.paradogs.common.master.controller.InitController; +import com.paradogs.common.master.controller.MasterController; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author: yumi + * @date: 2023/8/26 17:57 + * @Description: TODO + */ +@Configuration +public class ControllerConfiguration { + + @Bean + public InitController initController() { + return new InitController(); + } + + @Bean + public MasterController masterController() { + return new MasterController(); + } + +} diff --git a/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/InitController.java similarity index 70% rename from paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java rename to paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/InitController.java index 7541ea9..52a937f 100644 --- a/paradogs-master/src/main/java/com/paradogs/master/controller/InitController.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/InitController.java @@ -1,14 +1,13 @@ -package com.paradogs.master.controller; +package com.paradogs.common.master.controller; -import com.paradogs.common.core.annoations.PdgController; -import com.paradogs.common.core.annoations.PdgMsg; -import com.paradogs.common.core.annoations.PdgMsgMapping; -import com.paradogs.common.server.utils.MsgUtils; -import com.paradogs.common.server.ServerProperties; +import com.paradogs.common.core.annoations.request.PdgController; +import com.paradogs.common.core.annoations.request.PdgMsg; +import com.paradogs.common.core.annoations.request.PdgMsgMapping; +import com.paradogs.common.core.server.ServerProperties; +import com.paradogs.common.core.utils.MsgUtils; import com.paradogs.common.core.pojo.Connection; import com.paradogs.common.core.utils.ConnectionUtils; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Controller; import java.util.Collection; diff --git a/paradogs-master/src/main/java/com/paradogs/master/controller/MasterController.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java similarity index 56% rename from paradogs-master/src/main/java/com/paradogs/master/controller/MasterController.java rename to paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java index d17b0b4..0b9a16a 100644 --- a/paradogs-master/src/main/java/com/paradogs/master/controller/MasterController.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java @@ -1,11 +1,9 @@ -package com.paradogs.master.controller; +package com.paradogs.common.master.controller; -import com.paradogs.common.core.annoations.PdgController; -import com.paradogs.common.core.annoations.PdgMsgMapping; +import com.paradogs.common.core.annoations.request.PdgController; +import com.paradogs.common.core.annoations.request.PdgMsgMapping; import com.paradogs.common.core.pojo.Connection; import com.paradogs.common.core.utils.ConnectionUtils; -import com.paradogs.common.server.ServerProperties; -import org.springframework.beans.factory.annotation.Autowired; import java.util.Collection; import java.util.List; @@ -23,6 +21,8 @@ public class MasterController { @PdgMsgMapping("getServerInfo") public List getServerInfo(String serverType) { Collection conns = ConnectionUtils.getConns(); - return conns.stream().filter(conn -> conn.getTargetServer().equals(serverType)).collect(Collectors.toList()); + List collect = conns.stream().filter(conn -> conn.getTargetServer().equals(serverType)).collect(Collectors.toList()); + collect.forEach(System.out::println); + return collect; } } diff --git a/paradogs-master/src/main/java/com/paradogs/master/events/EventHandler.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java similarity index 88% rename from paradogs-master/src/main/java/com/paradogs/master/events/EventHandler.java rename to paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java index 23ca86c..8165ea4 100644 --- a/paradogs-master/src/main/java/com/paradogs/master/events/EventHandler.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java @@ -1,7 +1,6 @@ -package com.paradogs.master.events; +package com.paradogs.common.master.events; import com.paradogs.common.core.events.ChannelActiveEvent; -import com.paradogs.common.core.pojo.Connection; import com.paradogs.common.core.utils.ConnectionUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/master/MasterServerMsgHandler.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/master/MasterServerMsgHandler.java new file mode 100644 index 0000000..8077d12 --- /dev/null +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/master/MasterServerMsgHandler.java @@ -0,0 +1,47 @@ +package com.paradogs.common.master.master; + +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.MsgContextHolder; +import com.paradogs.common.core.netty.pipelines.ServerMsgHandler; +import com.paradogs.common.core.pojo.Connection; +import com.paradogs.common.core.server.ServerHolder; +import com.paradogs.common.core.server.ServerProperties; +import com.paradogs.common.core.utils.ConnectionUtils; +import com.paradogs.common.core.utils.MsgUtils; +import io.netty.channel.ChannelHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/26 15:56 + * @Description: TODO + */ +@Slf4j +@Component +@ChannelHandler.Sharable +public class MasterServerMsgHandler extends ServerMsgHandler { + + @Autowired + private ServerProperties serverProperties; + + /** + * 处理消息 + * @param msg + * @throws Exception + */ + @Override + protected void processMsg(BaseMsg msg) throws Exception { + + // 发给自己的消息直接处理 + System.out.println(msg.getMsgHeader().getServer()); + if (msg.getMsgHeader().getServer().equals(serverProperties.getType())) { + MsgUtils.adapterHandle(msg); + return; + } + // 其他消息 Master 进行转发 + MsgUtils.forward(msg); + + } +} diff --git a/paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..8c4286d --- /dev/null +++ b/paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,7 @@ +com.paradogs.common.master.MasterStarter + +com.paradogs.common.master.config.ControllerConfiguration + + + + diff --git a/paradogs-common/paradogs-common-master-starter/src/main/resources/config/application.yml b/paradogs-common/paradogs-common-master-starter/src/main/resources/config/application.yml new file mode 100644 index 0000000..e69de29 diff --git a/paradogs-common/paradogs-common-redis/pom.xml b/paradogs-common/paradogs-common-redis/pom.xml deleted file mode 100644 index 909bafa..0000000 --- a/paradogs-common/paradogs-common-redis/pom.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - paradogs-common - com.paradogs - 0.0.1 - - 4.0.0 - - paradogs-common-redis - - - 8 - 8 - - - - - - org.springframework.boot - spring-boot-starter-data-redis - - - - com.alibaba.fastjson2 - fastjson2 - - - - - \ No newline at end of file diff --git a/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/FastJson2JsonRedisSerializer.java b/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/FastJson2JsonRedisSerializer.java deleted file mode 100644 index 2c350ac..0000000 --- a/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/FastJson2JsonRedisSerializer.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.paradogs.common.redis.config; - -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONReader; -import com.alibaba.fastjson2.JSONWriter; -import org.springframework.data.redis.serializer.RedisSerializer; -import org.springframework.data.redis.serializer.SerializationException; - -import java.nio.charset.Charset; - -/** - * Redis使用FastJson序列化 - * - * @author ruoyi - */ -public class FastJson2JsonRedisSerializer implements RedisSerializer -{ - public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); - - private Class clazz; - - - public FastJson2JsonRedisSerializer(Class clazz) - { - super(); - this.clazz = clazz; - } - - @Override - public byte[] serialize(T t) throws SerializationException - { - if (t == null) - { - return new byte[0]; - } - return JSON.toJSONString(t, JSONWriter.Feature.WriteClassName).getBytes(DEFAULT_CHARSET); - } - - @Override - public T deserialize(byte[] bytes) throws SerializationException - { - if (bytes == null || bytes.length <= 0) - { - return null; - } - String str = new String(bytes, DEFAULT_CHARSET); - - return JSON.parseObject(str, clazz, JSONReader.Feature.SupportAutoType); - } -} diff --git a/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/RedisConfig.java b/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/RedisConfig.java deleted file mode 100644 index e871f3f..0000000 --- a/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/config/RedisConfig.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.paradogs.common.redis.config; - -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; -import org.springframework.cache.annotation.CachingConfigurerSupport; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.serializer.StringRedisSerializer; - -/** - * redis配置 - * - * @author ruoyi - */ -@Configuration -@EnableCaching -@AutoConfigureBefore(RedisAutoConfiguration.class) -public class RedisConfig extends CachingConfigurerSupport -{ - @Bean - @SuppressWarnings(value = { "unchecked", "rawtypes" }) - public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) - { - RedisTemplate template = new RedisTemplate<>(); - template.setConnectionFactory(connectionFactory); - - FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class); - - // 使用StringRedisSerializer来序列化和反序列化redis的key值 - template.setKeySerializer(new StringRedisSerializer()); - template.setValueSerializer(serializer); - - // Hash的key也采用StringRedisSerializer的序列化方式 - template.setHashKeySerializer(new StringRedisSerializer()); - template.setHashValueSerializer(serializer); - - template.afterPropertiesSet(); - return template; - } -} diff --git a/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/service/RedisService.java b/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/service/RedisService.java deleted file mode 100644 index 036f538..0000000 --- a/paradogs-common/paradogs-common-redis/src/main/java/com/paradogs/common/redis/service/RedisService.java +++ /dev/null @@ -1,265 +0,0 @@ -package com.paradogs.common.redis.service; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.BoundSetOperations; -import org.springframework.data.redis.core.HashOperations; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.ValueOperations; -import org.springframework.stereotype.Component; - -import java.util.*; -import java.util.concurrent.TimeUnit; - -/** - * spring redis 工具类 - * - * @author ruoyi - **/ -@SuppressWarnings(value = { "unchecked", "rawtypes" }) -@Component -public class RedisService -{ - @Autowired - public RedisTemplate redisTemplate; - - /** - * 缓存基本的对象,Integer、String、实体类等 - * - * @param key 缓存的键值 - * @param value 缓存的值 - */ - public void setCacheObject(final String key, final T value) - { - redisTemplate.opsForValue().set(key, value); - } - - /** - * 缓存基本的对象,Integer、String、实体类等 - * - * @param key 缓存的键值 - * @param value 缓存的值 - * @param timeout 时间 - * @param timeUnit 时间颗粒度 - */ - public void setCacheObject(final String key, final T value, final Long timeout, final TimeUnit timeUnit) - { - redisTemplate.opsForValue().set(key, value, timeout, timeUnit); - } - - /** - * 设置有效时间 - * - * @param key Redis键 - * @param timeout 超时时间 - * @return true=设置成功;false=设置失败 - */ - public boolean expire(final String key, final long timeout) - { - return expire(key, timeout, TimeUnit.SECONDS); - } - - /** - * 设置有效时间 - * - * @param key Redis键 - * @param timeout 超时时间 - * @param unit 时间单位 - * @return true=设置成功;false=设置失败 - */ - public boolean expire(final String key, final long timeout, final TimeUnit unit) - { - return redisTemplate.expire(key, timeout, unit); - } - - /** - * 获取有效时间 - * - * @param key Redis键 - * @return 有效时间 - */ - public long getExpire(final String key) - { - return redisTemplate.getExpire(key); - } - - /** - * 判断 key是否存在 - * - * @param key 键 - * @return true 存在 false不存在 - */ - public Boolean hasKey(String key) - { - return redisTemplate.hasKey(key); - } - - /** - * 获得缓存的基本对象。 - * - * @param key 缓存键值 - * @return 缓存键值对应的数据 - */ - public T getCacheObject(final String key) - { - ValueOperations operation = redisTemplate.opsForValue(); - return operation.get(key); - } - - /** - * 删除单个对象 - * - * @param key - */ - public boolean deleteObject(final String key) - { - return redisTemplate.delete(key); - } - - /** - * 删除集合对象 - * - * @param collection 多个对象 - * @return - */ - public boolean deleteObject(final Collection collection) - { - return redisTemplate.delete(collection) > 0; - } - - /** - * 缓存List数据 - * - * @param key 缓存的键值 - * @param dataList 待缓存的List数据 - * @return 缓存的对象 - */ - public long setCacheList(final String key, final List dataList) - { - Long count = redisTemplate.opsForList().rightPushAll(key, dataList); - return count == null ? 0 : count; - } - - /** - * 获得缓存的list对象 - * - * @param key 缓存的键值 - * @return 缓存键值对应的数据 - */ - public List getCacheList(final String key) - { - return redisTemplate.opsForList().range(key, 0, -1); - } - - /** - * 缓存Set - * - * @param key 缓存键值 - * @param dataSet 缓存的数据 - * @return 缓存数据的对象 - */ - public BoundSetOperations setCacheSet(final String key, final Set dataSet) - { - BoundSetOperations setOperation = redisTemplate.boundSetOps(key); - Iterator it = dataSet.iterator(); - while (it.hasNext()) - { - setOperation.add(it.next()); - } - return setOperation; - } - - /** - * 获得缓存的set - * - * @param key - * @return - */ - public Set getCacheSet(final String key) - { - return redisTemplate.opsForSet().members(key); - } - - /** - * 缓存Map - * - * @param key - * @param dataMap - */ - public void setCacheMap(final String key, final Map dataMap) - { - if (dataMap != null) { - redisTemplate.opsForHash().putAll(key, dataMap); - } - } - - /** - * 获得缓存的Map - * - * @param key - * @return - */ - public Map getCacheMap(final String key) - { - return redisTemplate.opsForHash().entries(key); - } - - /** - * 往Hash中存入数据 - * - * @param key Redis键 - * @param hKey Hash键 - * @param value 值 - */ - public void setCacheMapValue(final String key, final String hKey, final T value) - { - redisTemplate.opsForHash().put(key, hKey, value); - } - - /** - * 获取Hash中的数据 - * - * @param key Redis键 - * @param hKey Hash键 - * @return Hash中的对象 - */ - public T getCacheMapValue(final String key, final String hKey) - { - HashOperations opsForHash = redisTemplate.opsForHash(); - return opsForHash.get(key, hKey); - } - - /** - * 获取多个Hash中的数据 - * - * @param key Redis键 - * @param hKeys Hash键集合 - * @return Hash对象集合 - */ - public List getMultiCacheMapValue(final String key, final Collection hKeys) - { - return redisTemplate.opsForHash().multiGet(key, hKeys); - } - - /** - * 删除Hash中的某条数据 - * - * @param key Redis键 - * @param hKey Hash键 - * @return 是否成功 - */ - public boolean deleteCacheMapValue(final String key, final String hKey) - { - return redisTemplate.opsForHash().delete(key, hKey) > 0; - } - - /** - * 获得缓存的基本对象列表 - * - * @param pattern 字符串前缀 - * @return 对象列表 - */ - public Collection keys(final String pattern) - { - return redisTemplate.keys(pattern); - } -} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/netty/ServerMsgHandler.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/netty/ServerMsgHandler.java deleted file mode 100644 index a607d7a..0000000 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/netty/ServerMsgHandler.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.paradogs.common.server.netty; - -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; -import com.paradogs.common.server.queue.MainMsgConsumerThread; -import com.paradogs.common.server.queue.QueueManager; -import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; -import lombok.Getter; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/8 8:58 - * @Description: TODO - */ -@Component -@ConditionalOnMissingBean(BaseMsgHandler.class) -@ChannelHandler.Sharable -public class ServerMsgHandler extends BaseMsgHandler { - - /** - * 队列管理器 - */ - @Getter - @Autowired - private QueueManager queueManager; - - @Getter - @Autowired - private MainMsgConsumerThread handler; - - /** - * 设置相关参数 - * @param ctx - * @param msg - */ - @Override - protected void setProps(ChannelHandlerContext ctx, BaseMsg msg) { -// msg.getMsgHeader().setCtx(ctx); - } - - @Override - protected boolean isEnableQueue() { - return queueManager.getQueueProperties().isEnable(); - } - - @Override - protected void processWithQueue(BaseMsg msg) throws InterruptedException { - queueManager.pushMainMsg(msg); - } - - @Override - protected void processWithoutQueue(BaseMsg msg) throws Exception { - handler.handle(msg); - } -} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/MainMsgConsumerThread.java b/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/MainMsgConsumerThread.java deleted file mode 100644 index 1440eda..0000000 --- a/paradogs-common/paradogs-common-server-starter/src/main/java/com/paradogs/common/server/queue/MainMsgConsumerThread.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.paradogs.common.server.queue; - -import com.paradogs.common.core.events.RPCRespEvent; -import com.paradogs.common.core.message.*; -import com.paradogs.common.core.message.route.MsgMapping; -import com.paradogs.common.core.message.route.base.MsgTargetResolver; -import com.paradogs.common.core.netty.events.MainLoopEvent; -import com.paradogs.common.core.utils.*; -import com.paradogs.common.server.utils.MsgUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.stream.Stream; - -/** - * @author: yumi - * @date: 2023/7/28 9:27 - * @Description: 消息处理线程 - */ -@Slf4j -@Component -@Scope("prototype") -public class MainMsgConsumerThread extends QueueConsumerThread { - - @Autowired - private MsgTargetResolver routeMsgResolver; - - /** - * 消息处理 - * @param msg - * @throws InvocationTargetException - * @throws IllegalAccessException - */ - @Override - public void handle(BaseMsg msg) throws InvocationTargetException, IllegalAccessException { - - MsgMapping msgMapping = routeMsgResolver.getMsgMapping(msg.getMsgHeader().getRouteMethod()); - - if (msgMapping == null) { - log.error("msgMapping not found, route: [{}]", msg.getMsgHeader().getRouteMethod()); - return; - } - - /** - * 响应处理 - */ - if (msg.getMsgHeader().isResp()) { - EventUtils.publishEvent(new RPCRespEvent<>(msg)); - return; - } - - Method method = msgMapping.getMethod(); - Object pdgController = SpringUtils.getBean(method.getDeclaringClass()); - - if (pdgController == null) { - log.error("class [{}] not managed by Spring", method.getDeclaringClass()); - return; - } - - /** - * 待优化:这里可以像 SpringMVC 一样,根据方法参数注入相关变量,目前暂时只有 BaseMsg - */ - Object result = method.invoke( - pdgController, - Stream.of(method.getParameterTypes()) - .map(type -> msg.getClass().isAssignableFrom(type) ? msg : null) - .toArray() - ); - - if (result == null || StringUtils.isBlank(msg.getMsgHeader().getCallbackRoute())) { - return; - } - if (!(result instanceof BaseMsg)) { - log.warn("{} return no extends BaseMsg", method.getName()); - return; - } - - // !! 如果把请求参数返回,返回值的类会和请求参数地址一样,英文就是 msg == gcMsg - // 准备返回消息 - BaseMsg gcMsg = (BaseMsg) result; - MsgHeader header = new MsgHeader(); - header.setPlayerId(msg.getMsgHeader().getPlayerId()); - header.setRoute(msg.getMsgHeader().getCallbackRoute()); - header.setReplyMsgId(msg.getMsgHeader().getId()); - gcMsg.setMsgHeader(header); - - /** - * 返回值作为消息返回给请求者 - */ - MsgUtils.send( -// msg.getMsgHeader().getCtx().channel(), - msg.getMsgHeader().getRoute(), - gcMsg - ); - log.info("reply >> {}", msg.getMsgHeader()); - - } - - private MainLoopEvent mainLoopEvent = new MainLoopEvent(); - - @Override - public void loop() { - EventUtils.publishEvent(mainLoopEvent); - } - -} diff --git a/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 911edc3..0000000 --- a/paradogs-common/paradogs-common-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,17 +0,0 @@ -com.paradogs.common.server.Server -com.paradogs.common.server.ServerProperties -com.paradogs.common.server.ServerLauncher -com.paradogs.common.server.ServerChannelInitializer - -com.paradogs.common.server.master.MasterClient -com.paradogs.common.server.master.MasterProperties -com.paradogs.common.server.master.MasterLauncher -com.paradogs.common.server.master.MasterChannelInitializer - -com.paradogs.common.server.queue.QueueConfiguration -com.paradogs.common.server.netty.ServerMsgHandler -com.paradogs.common.server.utils.MsgUtils - - - - diff --git a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/Client.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/Client.java deleted file mode 100644 index a9832b4..0000000 --- a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/Client.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.paradogs.common.masterClient; - -import com.paradogs.common.masterClient.events.ClientStartEvent; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.SpringUtils; -import io.netty.bootstrap.Bootstrap; -import io.netty.channel.Channel; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.nio.NioSocketChannel; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; - -/** - * @author: yumi - * @date: 2023/7/31 22:36 - * @Description: TODO - */ -@Slf4j -public class Client { - - private Bootstrap client; - - @Getter - private Channel channel; - - private NioEventLoopGroup worker; - - private ClientProperties.ClientConfig properties; - - public Client(ClientProperties.ClientConfig clientConfig) { - this.properties = clientConfig; - } - - /** - * 启动 netty 服务器 - */ - public void start() { - - try { - long startTime = System.currentTimeMillis(); - this.worker = new NioEventLoopGroup(); - - this.client = new Bootstrap() - .group(worker) - .channel(NioSocketChannel.class) - .handler(SpringUtils.getBean(ClientChannelInitializer.class)); - - - this.channel = client.connect(properties.getHost(), properties.getPort()).sync().channel(); - - - log.info("{}:{} Connect success", properties.getHost(), properties.getPort()); - EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); - - channel.closeFuture().addListener(future -> { - log.info("[{}] server stop", this.properties.getName()); - }); - - } catch (Exception e) { - log.error("server error:[{}]", e.getMessage(), e); - this.closeSync(); - } - - } - - /** - * 同步关闭连接 - * ***ps: 关闭后进度未结束是因为消息处理队列还开着未关闭 - * @return - */ - public boolean closeSync() { - try { - if (this.channel.isOpen()) { - channel.close().sync(); - } - if (!worker.isShutdown()) { - worker.shutdownGracefully(); - } - return true; - } catch (Exception e) { - e.printStackTrace(); - return false; - } - - } - -} diff --git a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientContextHolder.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientContextHolder.java deleted file mode 100644 index 780ceed..0000000 --- a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientContextHolder.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.paradogs.common.masterClient; - -/** - * @author: yumi - * @date: 2023/8/20 20:33 - * @Description: TODO - * 目前客户端仅连接一个,就是玩家连接 connector,所以一个上下文 Client 够了 - */ -public class ClientContextHolder { - - public static Client client; - -} diff --git a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientLauncher.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientLauncher.java deleted file mode 100644 index d7eb9e6..0000000 --- a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientLauncher.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.paradogs.common.masterClient; - -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023/7/31 23:29 - * @Description: TODO - */ -@Slf4j -@Getter -@Component -public class ClientLauncher implements ApplicationRunner { - - @Autowired - private ClientProperties clientProperties; - - /** - * server[name[client]] - */ - private Map> clientMap = new HashMap<>(); - - - @Override - public void run(ApplicationArguments args) { - - if (clientProperties == null || clientProperties.getClients() == null) { - return; -// throw new RuntimeException("no found clientProperties: null"); - } - - for (ClientProperties.ClientConfig clientConfig : clientProperties.getClients()) { - if (clientMap.get(clientConfig.getServer()) == null) { - clientMap.put(clientConfig.getServer(), new HashMap<>()); - } - clientMap.get(clientConfig.getServer()).put(clientConfig.getName(), new Client(clientConfig)); - } - - for (Map clientTypeList : clientMap.values()) { - for (Client client : clientTypeList.values()) { - client.start(); - ClientContextHolder.client = client; - } - } - - } - - public void closeAll() { - for (Map clientTypeList : clientMap.values()) { - for (Client client : clientTypeList.values()) { - client.closeSync(); - } - } - } - -} diff --git a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientMsgHandler.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientMsgHandler.java deleted file mode 100644 index 341cbc9..0000000 --- a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientMsgHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.paradogs.common.masterClient; - -import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; -import io.netty.channel.ChannelHandlerContext; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/20 20:47 - * @Description: TODO - */ -@Slf4j -@Component -public class ClientMsgHandler extends BaseMsgHandler { - - @Override - protected boolean isEnableQueue() { - return false; - } - - @Override - protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception { - log.info("receive msg >> {}", msg); - } -} diff --git a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientProperties.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientProperties.java deleted file mode 100644 index a16dc43..0000000 --- a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/ClientProperties.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.paradogs.common.masterClient; - -import com.paradogs.common.core.utils.StringUtils; -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * @author: yumi - * @date: 2023/7/31 22:39 - * @Description: TODO - */ -@Data -@Component -@ConfigurationProperties("paradogs") -public class ClientProperties { - - private List clients; - - @Data - @Component - public static class ClientConfig { - /** - * 主机 ip - */ - private String host; - - /** - * 端口号 - */ - private int port; - - /** - * 服务标识类型 - */ - private String server; - - /** - * 服务名称 - */ - private String name; - - public String getName() { - if (StringUtils.isBlank(this.name)) { - this.name = "Client"; - } - return name; - } - } - -} diff --git a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/events/ClientStartEvent.java b/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/events/ClientStartEvent.java deleted file mode 100644 index d0182ce..0000000 --- a/paradogs-common/paradogs-common-serverClient-starter/src/main/java/com/paradogs/common/masterClient/events/ClientStartEvent.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.paradogs.common.masterClient.events; - -import com.paradogs.common.core.events.base.BaseEvent; - -/** - * @author: yumi - * @date: 2023/7/31 23:11 - * @Description: TODO - */ -public class ClientStartEvent extends BaseEvent { - public ClientStartEvent(Object source) { - super(source); - } -} diff --git a/paradogs-common/paradogs-common-serverClient-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-serverClient-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index a8d3bfe..0000000 --- a/paradogs-common/paradogs-common-serverClient-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,7 +0,0 @@ -com.paradogs.common.masterClient.Client -com.paradogs.common.masterClient.ClientProperties -com.paradogs.common.masterClient.ClientLauncher -com.paradogs.common.masterClient.ClientChannelInitializer -com.paradogs.common.masterClient.ClientMsgHandler - - diff --git a/paradogs-common/pom.xml b/paradogs-common/pom.xml index 488f124..71b6953 100644 --- a/paradogs-common/pom.xml +++ b/paradogs-common/pom.xml @@ -12,96 +12,10 @@ pom paradogs-common-core - paradogs-common-redis - paradogs-common-server-starter - paradogs-common-serverClient-starter paradogs-common-connector-starter paradogs-common-client-starter + paradogs-common-game-starter + paradogs-common-master-starter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - kr.motd.maven - os-maven-plugin - 1.4.1.Final - - - - - org.xolstice.maven.plugins - protobuf-maven-plugin - 0.5.0 - - - com.google.protobuf:protoc:3.1.0:exe:${os.detected.classifier} - - grpc-java - - io.grpc:protoc-gen-grpc-java:1.29.0:exe:${os.detected.classifier} - - - - - - compile - compile-custom - - - - - - - \ No newline at end of file diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java index 3901bff..9fb41fb 100644 --- a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java @@ -24,29 +24,32 @@ public class TestClientApplication { long start = System.currentTimeMillis(); final int[] startI = {atomicInteger.get()}; - for (int k = 0; k < 1; k++) { - int finalK = k; - final long[] finalStart = {start}; - int finalStartI = startI[0]; - new Thread(() -> { - - while (true) { - try { - - ClientUtils.send("test-test.test1", new CGTestMsg("hel yumi >> " + atomicInteger.incrementAndGet())); -// System.out.println("send " + cgTestMsg); - Thread.sleep(100); - if (System.currentTimeMillis() - finalStart[0] > 1000 && finalK == 0) { - log.info("每秒发送消息 {} 个,共发送 {} 个", atomicInteger.get() - startI[0], atomicInteger.get()); - startI[0] = atomicInteger.get(); - finalStart[0] = System.currentTimeMillis(); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - }).start(); - } + ClientUtils.send("master-info.getServerInfo"); + log.info("send ..."); + +// for (int k = 0; k < 1; k++) { +// int finalK = k; +// final long[] finalStart = {start}; +// int finalStartI = startI[0]; +// new Thread(() -> { +// +// while (true) { +// try { +// +// ClientUtils.send("test-test.test1", new CGTestMsg("hel yumi >> " + atomicInteger.incrementAndGet())); +//// System.out.println("send " + cgTestMsg); +// Thread.sleep(100); +// if (System.currentTimeMillis() - finalStart[0] > 1000 && finalK == 0) { +// log.info("每秒发送消息 {} 个,共发送 {} 个", atomicInteger.get() - startI[0], atomicInteger.get()); +// startI[0] = atomicInteger.get(); +// finalStart[0] = System.currentTimeMillis(); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// }).start(); +// } // ClientLauncher clientLauncher = SpringUtils.getBean(ClientLauncher.class); // clientLauncher.closeAll(); diff --git a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml b/paradogs-test/paradogs-test-connector/src/main/resources/application.yml index 3044fba..a284dfa 100644 --- a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-connector/src/main/resources/application.yml @@ -7,3 +7,9 @@ paradogs: masters: - host: localhost port: 8888 + +# 日志级别配置 +logging: + level: + # 指定的包路径 + com.paradogs: debug diff --git a/paradogs-master/pom.xml b/paradogs-test/paradogs-test-master/pom.xml similarity index 80% rename from paradogs-master/pom.xml rename to paradogs-test/paradogs-test-master/pom.xml index d515570..3f0a609 100644 --- a/paradogs-master/pom.xml +++ b/paradogs-test/paradogs-test-master/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - paradogs + paradogs-test com.paradogs 0.0.1 4.0.0 - paradogs-master + paradogs-test-master 8 @@ -17,12 +17,10 @@ - com.paradogs - paradogs-common-connector-starter + paradogs-common-master-starter - \ No newline at end of file diff --git a/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java b/paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java similarity index 75% rename from paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java rename to paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java index a3c8b73..3298d32 100644 --- a/paradogs-master/src/main/java/com/paradogs/master/MasterApplication.java +++ b/paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java @@ -1,15 +1,14 @@ -package com.paradogs.master; +package com.paradogs.test.master; import com.paradogs.common.core.annoations.EnableParadogs; +import com.paradogs.common.core.netty.initializer.ServerChannelInitializer; import com.paradogs.common.core.utils.SpringUtils; -import com.paradogs.common.server.ServerProperties; -import com.paradogs.common.server.rpc.InitRPC; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author: yumi - * @date: 2023/7/26 16:46 + * @date: 2023/8/28 9:32 * @Description: TODO */ @EnableParadogs diff --git a/paradogs-master/src/main/resources/config/application.yml b/paradogs-test/paradogs-test-master/src/main/resources/application.yml similarity index 100% rename from paradogs-master/src/main/resources/config/application.yml rename to paradogs-test/paradogs-test-master/src/main/resources/application.yml diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java index 63373c4..fcef5b4 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java @@ -1,15 +1,8 @@ package com.paradogs.test.server; import com.paradogs.common.core.annoations.EnableParadogs; -import com.paradogs.common.core.utils.SpringUtils; -import com.paradogs.test.server.controller.TestController; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.scheduling.annotation.EnableAsync; - -import java.io.IOException; -import java.lang.reflect.Method; -import java.util.List; /** * @author: yumi diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java index 8eeb8c7..355938a 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java @@ -1,9 +1,9 @@ package com.paradogs.test.server.controller; -import com.paradogs.common.core.annoations.PdgMsg; -import com.paradogs.common.core.annoations.PdgMsgMapping; -import com.paradogs.common.core.message.CGTestMsg; -import com.paradogs.common.core.message.GCTestMsg; +import com.paradogs.common.core.annoations.request.PdgMsg; +import com.paradogs.common.core.annoations.request.PdgMsgMapping; +import com.paradogs.common.core.msg.CGTestMsg; +import com.paradogs.common.core.msg.GCTestMsg; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java index bb57783..15d476c 100644 --- a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java +++ b/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java @@ -1,8 +1,7 @@ package com.paradogs.test.server.exceptions; -import com.paradogs.common.core.annoations.PdgExceptionHandler; -import com.paradogs.common.core.annoations.PdgExceptionHandlerClass; -import com.paradogs.common.core.exceptions.SerializationException; +import com.paradogs.common.core.annoations.exception.PdgExceptionHandler; +import com.paradogs.common.core.annoations.exception.PdgExceptionHandlerClass; import lombok.extern.slf4j.Slf4j; /** diff --git a/paradogs-test/paradogs-test-server/src/main/resources/application.yml b/paradogs-test/paradogs-test-server/src/main/resources/application.yml index aecb9c2..d129bca 100644 --- a/paradogs-test/paradogs-test-server/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-server/src/main/resources/application.yml @@ -8,4 +8,10 @@ paradogs: - host: localhost port: 8888 queue: - main-size: 1 \ No newline at end of file + main-size: 1 + +# 日志级别配置 +logging: + level: + # 指定的包路径 + com.paradogs: debug \ No newline at end of file diff --git a/paradogs-test/pom.xml b/paradogs-test/pom.xml index ae98e2d..b7b02c4 100644 --- a/paradogs-test/pom.xml +++ b/paradogs-test/pom.xml @@ -16,6 +16,7 @@ paradogs-test-client paradogs-test-connector paradogs-test-login + paradogs-test-master diff --git a/pom.xml b/pom.xml index 237a6d2..01db28c 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,6 @@ pom paradogs-common - paradogs-master paradogs-test @@ -145,6 +144,19 @@ 0.0.1 + + com.paradogs + paradogs-common-master-starter + 0.0.1 + + + + commons-lang + commons-lang + 2.4 + compile + + -- Gitee From 49fa85fba74632c55041dbe736f6bc3a2e87e1c1 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Thu, 2 Nov 2023 16:29:40 +0800 Subject: [PATCH 11/32] =?UTF-8?q?=E5=B0=8F=E7=BD=91=E6=B8=B8=E5=89=8D?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../paradogs-common-client-starter/pom.xml | 1 - .../common/client/utils/ClientUtils.java | 4 +- .../common/connector/ConnectorMsgHandler.java | 1 - .../annoations/base/BaseImportSelector.java | 2 +- .../request/PdgRequestInterfaceSelector.java | 2 +- .../core/annoations/rpc/PdgRPCMapping.java | 14 +- .../rpc/PdgRPCProxyBeanImportSelector.java | 22 +++- .../annoations/rpc/RPCProxyInterceptor.java | 30 ++--- .../annoations/rpc/RpcResponseResolver.java | 8 +- .../masterClient/MasterClientLauncher.java | 14 +- .../masterClient/state/MasterClientState.java | 11 +- .../com/paradogs/common/core/msg/BaseMsg.java | 1 - .../common/core/netty/codec/ServerCodec.java | 5 +- .../paradogs/common/core/pojo/Connection.java | 10 ++ .../common/core/pojo/ConnectorMessage.java | 22 ++++ .../com/paradogs/common/core/rpc/InitRPC.java | 2 +- .../paradogs/common/core/utils/MsgUtils.java | 7 +- .../common/core/utils/ReflectUtils.java | 37 ++++++ .../game/server/GameServerMsgHandler.java | 4 +- .../master/controller/MasterController.java | 12 ++ .../master/master/MasterServerMsgHandler.java | 1 - paradogs-test/paradogs-test-client/pom.xml | 16 ++- .../test/client/TestClientApplication.java | 101 ++++++++------ .../paradogs/test/client/demo/BaseMsg.java | 59 +++++++++ .../com/paradogs/test/client/demo/Client.java | 42 ++++++ .../paradogs/test/client/demo/MsgHeader.java | 123 ++++++++++++++++++ .../paradogs/test/client/demo/ProtoUtils.java | 63 +++++++++ .../test/client/demo/ProtocolProperties.java | 27 ++++ .../src/main/resources/application.yml | 3 +- .../login/controller/LoginController.java | 34 +++++ .../paradogs/test/login/rpc/MasterClient.java | 20 +++ .../src/main/resources/application.yml | 5 +- 32 files changed, 603 insertions(+), 100 deletions(-) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java create mode 100644 paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/BaseMsg.java create mode 100644 paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/Client.java create mode 100644 paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java create mode 100644 paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java create mode 100644 paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java create mode 100644 paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/controller/LoginController.java create mode 100644 paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/rpc/MasterClient.java diff --git a/paradogs-common/paradogs-common-client-starter/pom.xml b/paradogs-common/paradogs-common-client-starter/pom.xml index 748d980..d28b00b 100644 --- a/paradogs-common/paradogs-common-client-starter/pom.xml +++ b/paradogs-common/paradogs-common-client-starter/pom.xml @@ -20,7 +20,6 @@ com.paradogs paradogs-common-core - 0.0.1 diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java index ead4719..0e4fee7 100644 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java +++ b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java @@ -1,8 +1,8 @@ package com.paradogs.common.client.utils; import com.paradogs.common.client.netty.ClientContextHolder; -import com.paradogs.common.core.message.BaseMsg; -import com.paradogs.common.core.message.MsgHeader; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.MsgHeader; /** * @author: yumi diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java index 87ec07f..dbb4382 100644 --- a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java +++ b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java @@ -31,7 +31,6 @@ public class ConnectorMsgHandler extends ForwardMsgHandler { protected void processMsg(BaseMsg msg) throws InvocationTargetException, IllegalAccessException { // 发给自己的消息直接处理 - System.out.println(msg.getMsgHeader().getServer()); if (msg.getMsgHeader().getServer().equals(serverProperties.getType())) { MsgUtils.adapterHandle(msg); return; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java index d327e8a..6677a48 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java @@ -52,7 +52,7 @@ public abstract class BaseImportSelector implements ImportSelector, BeanFactoryA handle(beanDefinition); } - log.debug("Scan {}: [{}] ms, path: {}", this.getClass().getSimpleName(), TimeUtils.calcDuration(startTime), scanPackages); + log.debug("Scan: {}, {}", scanPackages, this.getClass().getSimpleName()); return new String[0]; } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java index dc19024..317c667 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java @@ -60,7 +60,7 @@ public class PdgRequestInterfaceSelector extends BaseImportSelector { PdgMsgMapping parentRouteMapping = AnnotationUtils.findAnnotation(method.getDeclaringClass(), PdgMsgMapping.class); PdgMsgMapping pdgMsgMapping = AnnotationUtils.findAnnotation(method, PdgMsgMapping.class); if (pdgMsgMapping == null) { - return; + continue; } String route = (parentRouteMapping != null ? parentRouteMapping.value() : "") + (pdgMsgMapping.value().startsWith("/") ? "" : ".") + pdgMsgMapping.value(); if (PdgRequestHolder.getMappingMap().containsKey(route)) { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java index 02ba1fc..10d3be5 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java @@ -1,6 +1,7 @@ package com.paradogs.common.core.annoations.rpc; import com.paradogs.common.core.msg.BaseMsg; +import org.springframework.scheduling.annotation.Async; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -25,5 +26,16 @@ public @interface PdgRPCMapping { /** * 返回值类型 */ - Class returnType(); + Class returnType() default BaseMsg.class; + + /** + * 同步暂时未完成 + */ + @Deprecated + SyncType syncType() default SyncType.SYNC; + + enum SyncType { + ASYNC, + SYNC + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java index b105acf..37b2342 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java @@ -4,6 +4,7 @@ import com.paradogs.common.core.annoations.base.BaseImportSelector; import com.paradogs.common.core.annoations.base.BaseScanner; import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.msg.route.MsgMapping; +import com.paradogs.common.core.utils.ReflectUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.config.BeanDefinition; @@ -12,6 +13,7 @@ import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.type.AnnotationMetadata; import java.lang.reflect.Method; +import java.util.concurrent.CompletableFuture; /** * @author: yumi @@ -60,19 +62,29 @@ public class PdgRPCProxyBeanImportSelector extends BaseImportSelector { // 保存 Msg 类型和要执行的方法 try { - if (pdgRPCMapping.returnType() == null) { - throw new RuntimeException("rpc[" + pdgRPCMapping.value() + "] returnType is null"); +// if (pdgRPCMapping.returnType() == BaseMsg.class && !method.getReturnType().isAssignableFrom(CompletableFuture.class)) { +// throw new RuntimeException("RPC[" + pdgRPCMapping.value() + "] use async but returnType is null"); +// } + if (!method.getReturnType().isAssignableFrom(CompletableFuture.class)) { + throw new RuntimeException("RPC[" + pdgRPCMapping.value() + "] return must use async.(CompleteFuture)"); } - Class targetMsgClass = pdgRPCMapping.returnType(); + Class genericReturnType = null; + try { + genericReturnType = (Class) ReflectUtils.getGenericReturnType(method); + } catch (Exception e) { + throw new RuntimeException("GetGenericReturnType error, ReturnType[" + method.getReturnType() + "] must extends BaseMsg: " + method.getName()); + } + // PdgRpcMapping.returnType default == BaseMsg.class + Class targetMsgClass = pdgRPCMapping.returnType() == BaseMsg.class ? genericReturnType : pdgRPCMapping.returnType(); if (PdgRPCHolder.getMappingMap().containsKey(route)) { - throw new RuntimeException("route already exist: " + route); + throw new RuntimeException("Route already exist: " + route); } PdgRPCHolder.getMappingMap().put(route, new MsgMapping(targetMsgClass, method)); log.debug("Register RPC callback mapping: [{}]", route); } catch (Exception e) { - throw new RuntimeException("rpc[" + pdgRPCMapping.value() + "] return must extends BaseMsg(?GCMsg)"); + throw new RuntimeException("RPC[" + pdgRPCMapping.value() + "] return must extends BaseMsg(?GCMsg)"); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java index ea8c079..059f9de 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java @@ -4,6 +4,8 @@ import com.paradogs.common.core.annoations.request.PdgMsg; import com.paradogs.common.core.events.RPCRequestEvent; import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.ReflectUtils; +import lombok.extern.slf4j.Slf4j; import org.springframework.aop.support.AopUtils; import org.springframework.cglib.proxy.MethodInterceptor; import org.springframework.cglib.proxy.MethodProxy; @@ -11,8 +13,6 @@ import org.springframework.core.annotation.AnnotationUtils; import java.lang.reflect.Method; import java.lang.reflect.Parameter; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; import java.util.concurrent.CompletableFuture; /** @@ -20,6 +20,7 @@ import java.util.concurrent.CompletableFuture; * @date: 2023/8/13 9:40 * @Description: TODO */ +@Slf4j public class RPCProxyInterceptor implements MethodInterceptor { /** @@ -66,22 +67,10 @@ public class RPCProxyInterceptor implements MethodInterceptor { // 获得返回值类型 Class returnType = null; - // 获取方法的返回类型信息 - Type type = method.getGenericReturnType(); - - // 判断返回类型是否为参数化类型(即带有泛型参数) - if (type instanceof ParameterizedType) { - // 获取泛型参数的实际类型 - Type typeArg = ((ParameterizedType) type).getActualTypeArguments()[0]; - // 判断实际类型是否为 Class 对象 - if (typeArg instanceof Class) { - // 将实际类型转换为 Class 对象 - try { - returnType = (Class) typeArg; - } catch (Exception e) { - throw new RuntimeException("returnType[" + method.getReturnType() + "] must extends BaseMsg: " + method.getName()); - } - } + try { + returnType = (Class) ReflectUtils.getGenericReturnType(method); + } catch (Exception e) { + throw new RuntimeException("ReturnType[" + method.getReturnType() + "] must extends BaseMsg: " + method.getName()); } CompletableFuture promise = new CompletableFuture<>(); @@ -89,13 +78,10 @@ public class RPCProxyInterceptor implements MethodInterceptor { // 解耦 MsgUtils EventUtils.publishEvent(new RPCRequestEvent( pdgRPC.value() + "-" + pdgRPCMapping.value(), - requestMsg, + requestMsg != null ? requestMsg : new BaseMsg(), returnType, promise )); - - - return promise; } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java index 53d4c0a..41b9bad 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java @@ -3,6 +3,7 @@ package com.paradogs.common.core.annoations.rpc; import com.paradogs.common.core.events.RPCRespEvent; import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.msg.MsgContextHolder; +import com.paradogs.common.core.server.ServerProperties; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -26,7 +27,7 @@ public class RpcResponseResolver { /** * 等待响应的消息 map */ - private Map waitRespMap = new ConcurrentHashMap<>(); + private volatile Map waitRespMap = new ConcurrentHashMap<>(); /** @@ -48,9 +49,12 @@ public class RpcResponseResolver { // 设置上下文 MsgContextHolder.setContext(respInfo.getMsgContextHolder()); // 标记任务完成,执行回调 - respInfo.getPromise().complete(event.getMsg()); + boolean isSuccess = respInfo.getPromise().complete(respInfo.getReturnClass().cast(event.getMsg())); + if (!isSuccess) {log.error("RPC fail: {}", respInfo);} } + } catch (Exception e) { + log.error("{}", e.getMessage(), e); } finally { // 处理完毕移除响应监听 waitRespMap.remove(getMsgKey(event.getMsg())); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientLauncher.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientLauncher.java index 4005841..7475dcd 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientLauncher.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientLauncher.java @@ -12,6 +12,8 @@ import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; +import java.util.concurrent.CompletableFuture; + /** * @author: yumi * @date: 2023/7/31 23:29 @@ -43,13 +45,13 @@ public class MasterClientLauncher implements ApplicationRunner { Connection connection = ConnectionUtils.saveNewConn(MasterClientHolder.masterClient.getChannel()); // 发送服务信息 - initRPC.getClientInfo(SpringUtils.getBean(ServerProperties.class)) - .thenAccept(serverProperties -> { - log.info("receive reply >> {}", serverProperties); - connection.init("master", "master-1"); - log.info("Connect master success: [{} /{}:{}]", masterConfig.getName(), masterConfig.getHost(), masterConfig.getPort()); - }); + CompletableFuture clientInfo = initRPC.getClientInfo(SpringUtils.getBean(ServerProperties.class)); + clientInfo.thenAccept(serverProperties -> { + log.info("receive reply >> {}", serverProperties); + connection.init("master", "master-1"); + log.info("Connect master success: [{} /{}:{}]", masterConfig.getName(), masterConfig.getHost(), masterConfig.getPort()); + }); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/state/MasterClientState.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/state/MasterClientState.java index f90ac71..b064677 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/state/MasterClientState.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/state/MasterClientState.java @@ -49,12 +49,11 @@ public enum MasterClientState { Connection connection = ConnectionUtils.saveNewConn(MasterClientHolder.masterClient.getChannel()); // 发送服务信息 - initRPC.getClientInfo(SpringUtils.getBean(ServerProperties.class)) - .thenAccept(serverProperties -> { - log.info("receive reply >> {}", serverProperties); - connection.init("master", "master-1"); - this.flow(true); - }); + initRPC.getClientInfo(SpringUtils.getBean(ServerProperties.class)).thenAccept(serverProperties -> { + log.info("receive reply >> {}", serverProperties); + connection.init("master", "master-1"); + this.flow(true); + }); return MasterClientState.WAIT_CALLBACK; } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java index cfc9d0b..13ab8ba 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java @@ -21,7 +21,6 @@ import java.io.IOException; @ProtobufClass public class BaseMsg implements IMsgSerializable { - @Protobuf(fieldType = FieldType.OBJECT, order = 1) private MsgHeader msgHeader; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java index 4551328..85c300e 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java @@ -7,7 +7,6 @@ import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.msg.ByteBodyMsg; import com.paradogs.common.core.msg.MsgHeader; import com.paradogs.common.core.msg.route.MsgMapping; -import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; import com.paradogs.common.core.netty.initializer.ServerChannelInitializer; import com.paradogs.common.core.netty.pipelines.ServerMsgHandler; import com.paradogs.common.core.utils.SpringUtils; @@ -20,6 +19,7 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import java.util.List; +import java.util.concurrent.CompletableFuture; /** * @author: yumi @@ -54,9 +54,6 @@ public class ServerCodec extends ByteToMessageCodec { if (msgMapping == null) { msgMapping = PdgRPCHolder.getMappingMap().get(msgHeader.getRouteMethod()); } - ServerMsgHandler bean = SpringUtils.getBean(ServerMsgHandler.class); - ServerChannelInitializer bean1 = SpringUtils.getBean(ServerChannelInitializer.class); - BaseMsg baseMsg = msgMapping != null && msgMapping.getMsgClass() != null && !msgMapping.getMsgClass().isAssignableFrom(void.class) ? msgMapping.getMsgClass().newInstance() diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java index c468bf7..85f493b 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java @@ -5,6 +5,8 @@ import io.netty.channel.Channel; import lombok.Data; import lombok.extern.slf4j.Slf4j; +import java.net.InetSocketAddress; + /** * @author: yumi @@ -56,6 +58,14 @@ public class Connection extends BaseMsg { log.info("Init masterClient: {}", targetServer); } + public String getHost() { + return ((InetSocketAddress) this.channel.remoteAddress()).getHostString(); + } + + public int getPort() { + return ((InetSocketAddress) this.channel.remoteAddress()).getPort(); + } + public enum State { /** diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java new file mode 100644 index 0000000..8f26206 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java @@ -0,0 +1,22 @@ +package com.paradogs.common.core.pojo; + +import com.paradogs.common.core.msg.BaseMsg; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/9/5 14:13 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ConnectorMessage extends BaseMsg { + + private String host; + + private int port; + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java index ef2a48e..73f991b 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java @@ -15,7 +15,7 @@ import java.util.concurrent.CompletableFuture; @PdgRPC("master") public interface InitRPC { - @PdgRPCMapping(value = "_init.clientInfo", returnType = ServerProperties.class) + @PdgRPCMapping(value = "_init.clientInfo") CompletableFuture getClientInfo(@PdgMsg ServerProperties msg); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java index 286839b..238769f 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java @@ -73,6 +73,7 @@ public class MsgUtils { * @param */ public static CompletableFuture request(String route, T msg, Class returnClass, CompletableFuture promise) { + if (msg.getMsgHeader() == null) { msg.setMsgHeader(new MsgHeader()); } @@ -122,7 +123,7 @@ public class MsgUtils { } if (msgMapping == null) { - log.error("msgMapping not found, route: [{}]", msg.getMsgHeader().getRouteMethod()); + log.error("MsgMapping not found, route: [{}]", msg.getMsgHeader().getRouteMethod()); return; } @@ -156,7 +157,7 @@ public class MsgUtils { return; } if (!(result instanceof BaseMsg)) { - log.warn("{} return no extends BaseMsg", method.getName()); + log.warn("Return no extends BaseMsg: {}", method.getName()); return; } @@ -174,7 +175,7 @@ public class MsgUtils { */ MsgUtils.send( // msg.getMsgHeader().getCtx().channel(), - msg.getMsgHeader().getRoute(), + gcMsg.getMsgHeader().getRoute(), gcMsg ); log.info("reply >> {}", msg.getMsgHeader()); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java new file mode 100644 index 0000000..c2bd2ca --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java @@ -0,0 +1,37 @@ +package com.paradogs.common.core.utils; + +import com.paradogs.common.core.msg.BaseMsg; + +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; + +/** + * @author: yumi + * @date: 2023/9/23 9:57 + * @Description: 反射工具类 + */ +public class ReflectUtils { + + /** + * 获取返回类中的泛型类型 + * @param method + * @return + */ + public static Class getGenericReturnType(Method method) { + // 获取方法的返回类型信息 + Type type = method.getGenericReturnType(); + // 判断返回类型是否为参数化类型(即带有泛型参数) + if (type instanceof ParameterizedType) { + // 获取泛型参数的实际类型 + Type typeArg = ((ParameterizedType) type).getActualTypeArguments()[0]; + // 判断实际类型是否为 Class 对象 + if (typeArg instanceof Class) { + // 将实际类型转换为 Class 对象 + return (Class) typeArg; + } + } + return null; + } + +} diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java index 941dd0e..c96742c 100644 --- a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java +++ b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java @@ -3,6 +3,7 @@ package com.paradogs.common.game.server; import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.netty.pipelines.ServerMsgHandler; import com.paradogs.common.game.queue.QueueManager; +import io.netty.channel.ChannelHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -16,6 +17,7 @@ import org.springframework.stereotype.Component; @Slf4j @Component @ConditionalOnMissingBean(ServerMsgHandler.class) +@ChannelHandler.Sharable public class GameServerMsgHandler extends ServerMsgHandler { @Autowired @@ -23,7 +25,7 @@ public class GameServerMsgHandler extends ServerMsgHandler { @Override protected void processMsg(BaseMsg msg) throws Exception { - queueManager.pushDBMsg(msg); + queueManager.pushMainMsg(msg); } } diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java index 0b9a16a..39fbbf8 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java @@ -3,6 +3,7 @@ package com.paradogs.common.master.controller; import com.paradogs.common.core.annoations.request.PdgController; import com.paradogs.common.core.annoations.request.PdgMsgMapping; import com.paradogs.common.core.pojo.Connection; +import com.paradogs.common.core.pojo.ConnectorMessage; import com.paradogs.common.core.utils.ConnectionUtils; import java.util.Collection; @@ -25,4 +26,15 @@ public class MasterController { collect.forEach(System.out::println); return collect; } + + /** + * 返回一个可连接的 Connector,目前暂时只为第一个 + * @return + */ + @PdgMsgMapping("getConnector") + public ConnectorMessage getConnector() { + Collection conns = ConnectionUtils.getConns(); + Connection connection = conns.stream().filter(conn -> conn.getTargetServer().equals("connector")).findFirst().get(); + return new ConnectorMessage(connection.getHost(), connection.getPort()); + } } diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/master/MasterServerMsgHandler.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/master/MasterServerMsgHandler.java index 8077d12..dde9567 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/master/MasterServerMsgHandler.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/master/MasterServerMsgHandler.java @@ -35,7 +35,6 @@ public class MasterServerMsgHandler extends ServerMsgHandler { protected void processMsg(BaseMsg msg) throws Exception { // 发给自己的消息直接处理 - System.out.println(msg.getMsgHeader().getServer()); if (msg.getMsgHeader().getServer().equals(serverProperties.getType())) { MsgUtils.adapterHandle(msg); return; diff --git a/paradogs-test/paradogs-test-client/pom.xml b/paradogs-test/paradogs-test-client/pom.xml index ab7d209..ddca020 100644 --- a/paradogs-test/paradogs-test-client/pom.xml +++ b/paradogs-test/paradogs-test-client/pom.xml @@ -18,8 +18,20 @@ - com.paradogs - paradogs-common-client-starter + io.netty + netty-all + + + org.projectlombok + lombok + + + org.springframework.boot + spring-boot-starter + + + com.baidu + jprotobuf diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java index 9fb41fb..fba4c44 100644 --- a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java @@ -1,12 +1,24 @@ package com.paradogs.test.client; -import com.paradogs.common.client.utils.ClientUtils; -import com.paradogs.common.core.message.CGTestMsg; +import com.paradogs.test.client.demo.BaseMsg; +import com.paradogs.test.client.demo.Client; +import com.paradogs.test.client.demo.MsgHeader; +import io.netty.bootstrap.Bootstrap; +import io.netty.buffer.ByteBuf; +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.SimpleChannelInboundHandler; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.nio.NioSocketChannel; +import io.netty.handler.codec.ByteToMessageCodec; +import io.netty.handler.codec.LengthFieldBasedFrameDecoder; +import io.netty.handler.codec.LengthFieldPrepender; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import java.util.concurrent.atomic.AtomicInteger; +import java.util.List; /** * @author: yumi @@ -16,43 +28,58 @@ import java.util.concurrent.atomic.AtomicInteger; @Slf4j @SpringBootApplication public class TestClientApplication { - public static void main(String[] args) { + public static void main(String[] args) throws InterruptedException { SpringApplication.run(TestClientApplication.class, args); + Bootstrap client = new Bootstrap() + .group(new NioEventLoopGroup()) + .channel(NioSocketChannel.class) + .handler(new ChannelInitializer() { + @Override + protected void initChannel(NioSocketChannel channel) throws Exception { + channel.pipeline().addLast(new LengthFieldBasedFrameDecoder( + 65534, + 0, + 2, + 0, + 2)); - AtomicInteger atomicInteger = new AtomicInteger(0); - long start = System.currentTimeMillis(); - final int[] startI = {atomicInteger.get()}; - - ClientUtils.send("master-info.getServerInfo"); - log.info("send ..."); - -// for (int k = 0; k < 1; k++) { -// int finalK = k; -// final long[] finalStart = {start}; -// int finalStartI = startI[0]; -// new Thread(() -> { -// -// while (true) { -// try { -// -// ClientUtils.send("test-test.test1", new CGTestMsg("hel yumi >> " + atomicInteger.incrementAndGet())); -//// System.out.println("send " + cgTestMsg); -// Thread.sleep(100); -// if (System.currentTimeMillis() - finalStart[0] > 1000 && finalK == 0) { -// log.info("每秒发送消息 {} 个,共发送 {} 个", atomicInteger.get() - startI[0], atomicInteger.get()); -// startI[0] = atomicInteger.get(); -// finalStart[0] = System.currentTimeMillis(); -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// }).start(); -// } - -// ClientLauncher clientLauncher = SpringUtils.getBean(ClientLauncher.class); -// clientLauncher.closeAll(); + channel.pipeline().addLast(new LengthFieldPrepender(2)); + channel.pipeline().addLast(new ByteToMessageCodec() { + @Override + protected void encode(ChannelHandlerContext ctx, BaseMsg msg, ByteBuf out) throws Exception { + msg.getMsgHeader().serialization(out); + + msg.serialization(out); + } + + @Override + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { + MsgHeader msgHeader = new MsgHeader(); + msgHeader.deserialization(in); + + BaseMsg baseMsg = new BaseMsg(); + + baseMsg.deserialization(in); + baseMsg.setMsgHeader(msgHeader); + + out.add(baseMsg); + } + }); + + // addLast() 加入越晚的出栈时越先执行 + channel.pipeline().addLast(new SimpleChannelInboundHandler() { + @Override + protected void channelRead0(ChannelHandlerContext ctx, BaseMsg msg) throws Exception { + log.info("receive {}", msg.toString()); + } + }); + } + }); + + Channel channel = client.connect("localhost", 8080).sync().channel(); + + Client.send(channel, "login-login.login", null); } } diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/BaseMsg.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/BaseMsg.java new file mode 100644 index 0000000..80530a3 --- /dev/null +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/BaseMsg.java @@ -0,0 +1,59 @@ +package com.paradogs.test.client.demo; + +import com.baidu.bjf.remoting.protobuf.FieldType; +import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +import io.netty.buffer.ByteBuf; +import lombok.Data; +import org.springframework.beans.BeanUtils; + +import java.io.IOException; + +/** + * @author: yumi + * @date: 2023/9/23 14:17 + * @Description: TODO + */ +@Data +@ProtobufClass +public class BaseMsg { + + @Protobuf(fieldType = FieldType.OBJECT, order = 1) + private MsgHeader msgHeader; + + + /** + * 序列化(编码 + * ps: BaseMsg 的 JProtobuf 序列化时,this 指向 BaseMsg(实际运行会指向子类),无法通过编译,需要额外处理 (ProtoUtils), + * 不指定 Codec<> 的泛型虽然可以通过编译但是无法正确的编解码 + * @param out + */ + public void serialization(ByteBuf out) { + + byte[] bytes = ProtoUtils.encode(this); + // 写入消息体 + out.writeBytes(bytes); + + } + + /** + * 反序列化(解码) + * @param in + */ + public void deserialization(ByteBuf in) throws IOException { + + // 读取消息体 byte 数组 + byte[] bytes = new byte[in.readableBytes()]; + in.readBytes(bytes); + BaseMsg msg = ProtoUtils.decode(bytes, this.getClass()); + + // 将属性设置到类上 + BeanUtils.copyProperties(msg, this); + + } + + public void setMsgHeader(MsgHeader msgHeader) { + this.msgHeader = msgHeader; + } + +} diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/Client.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/Client.java new file mode 100644 index 0000000..e57461a --- /dev/null +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/Client.java @@ -0,0 +1,42 @@ +package com.paradogs.test.client.demo; + +import io.netty.bootstrap.Bootstrap; +import io.netty.buffer.ByteBuf; +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.SimpleChannelInboundHandler; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.nio.NioSocketChannel; +import io.netty.handler.codec.ByteToMessageCodec; +import io.netty.handler.codec.LengthFieldBasedFrameDecoder; +import io.netty.handler.codec.LengthFieldPrepender; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; + +/** + * @author: yumi + * @date: 2023/9/23 13:44 + * @Description: TODO + */ +@Slf4j +public class Client { + + public static void send(Channel channel, String route, BaseMsg msg) { + if (msg == null) { + msg = new BaseMsg(); + } + if (msg.getMsgHeader() == null) { + msg.setMsgHeader(new MsgHeader()); + } + msg.getMsgHeader().setRoute(route); + + if (channel != null) { + channel.writeAndFlush(msg); + log.info("Send msg to >> {}", msg.getMsgHeader().getRoute()); + } else { + log.warn("channel is null, route: {}", route); + } + } +} diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java new file mode 100644 index 0000000..cc36a13 --- /dev/null +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java @@ -0,0 +1,123 @@ +package com.paradogs.test.client.demo; + +import com.baidu.bjf.remoting.protobuf.Codec; +import com.baidu.bjf.remoting.protobuf.FieldType; +import com.baidu.bjf.remoting.protobuf.ProtobufProxy; +import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; +import io.netty.buffer.ByteBuf; +import lombok.Data; +import org.springframework.beans.BeanUtils; + +import java.io.IOException; +import java.util.Date; +import java.util.UUID; + +/** + * @author: yumi + * @date: 2023/9/23 14:21 + * @Description: TODO + */ +@Data +public class MsgHeader { + + /** + * 解析器(也可以用 ProtoUtils) + */ + private static Codec codec = ProtobufProxy.create(MsgHeader.class); + + /** + * 消息唯一 ID,用于请求 - 响应 + */ + @Protobuf(fieldType = FieldType.STRING, order = 1, required = false) + private String id = UUID.randomUUID().toString(); + + /** + * 消息类型,替代路由地址(java 使用类型对应,nodejs 可以使用字符串对应方法) + * 待优化,路由转 cmd api + */ +// @Protobuf(fieldType = FieldType.INT32, order = 2, required = false) +// private int cmd; + + /** + * 消息路由,可通过字典转换为 cmd + */ + @Protobuf(fieldType = FieldType.STRING, order = 2, required = false) + private String route; + + /** + * 玩家 ID + // * 本框架设计用户必须登录后才能调用相关接口,如果用户未登录,则无法请求任何接口(原因是服务返回网关时,找不到对应的玩家返回) + // * 可以自己在玩家匿名时,设定一个 playerId,玩家登录后再设置玩家真实的 playerId + */ + @Protobuf(fieldType = FieldType.INT64, order = 3, required = false) + private Long playerId; + + /** + * 消息生成的时间戳 + */ + @Protobuf(fieldType = FieldType.INT64, order = 4, required = false) + private Long timestamp; + + /** + * 回复的 CG 消息 ID + */ + @Protobuf(fieldType = FieldType.STRING, order = 5, required = false) + private String replyMsgId; + + /** + * 回调时发送的路由地址 + */ + @Protobuf(fieldType = FieldType.STRING, order = 6, required = false) + private String callbackRoute; + + /** + * >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 额外 Props + */ + +// /** +// * Channel 上下文 +// */ +// private ChannelHandlerContext ctx; + + public MsgHeader() { + // + this.playerId = 1L; + this.timestamp = new Date().getTime(); + } + + /** + * 序列化(编码) + * ps: netty 的 codec 最终会捕获异常转换成 EncoderException + * @param out + */ + public void serialization(ByteBuf out) throws IOException { + byte[] bytes = codec.encode(this); + out.writeShort(bytes.length); + out.writeBytes(bytes); + } + + /** + * 反序列化(解码) + * @param in + * @throws InvalidProtocolBufferException + */ + public void deserialization(ByteBuf in) throws IOException { + byte[] bytes = new byte[in.readShort()]; + in.readBytes(bytes); + MsgHeader msgHeader = codec.decode(bytes); + BeanUtils.copyProperties(msgHeader, this); + } + + public String getServerWithRoute() { + return this.route.substring(0, this.route.indexOf("-")); + } + + public String getRouteMethod() { + return this.route.substring(this.route.indexOf("-") + 1); + } + + public String getServer() { + return this.route.substring(0, this.route.indexOf("-")); + } + +} diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java new file mode 100644 index 0000000..6655071 --- /dev/null +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java @@ -0,0 +1,63 @@ +package com.paradogs.test.client.demo; + +import com.baidu.bjf.remoting.protobuf.Codec; +import com.baidu.bjf.remoting.protobuf.ProtobufProxy; + +import java.io.IOException; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author: yumi + * @date: 2023/8/1 13:48 + * @Description: TODO + */ +public class ProtoUtils { + + /** + * 优化效率,避免每次都创建一个编解码器 + */ + public static Map, Codec> codecMap = new ConcurrentHashMap<>(); + + /** + * jprotobuf 编码 + * @param obj + * @param + * @return + */ + public static byte[] encode(T obj) { + + if (!codecMap.containsKey(obj.getClass())) { + codecMap.put(obj.getClass(), ProtobufProxy.create(obj.getClass())); + } + + try { + Codec codec = codecMap.get(obj.getClass()); + return codec.encode(obj); + } catch (IOException e) { + e.printStackTrace(); + } + return new byte[0]; + } + + /** + * jprotobuf 解码 + * @param bytes + * @param clz + * @param + * @return + */ + public static T decode(byte[] bytes, Class clz) { + + if (!codecMap.containsKey(clz)) { + codecMap.put(clz, ProtobufProxy.create(clz)); + } + try { + return (T) codecMap.get(clz).decode(bytes); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java new file mode 100644 index 0000000..6aba2ee --- /dev/null +++ b/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java @@ -0,0 +1,27 @@ +package com.paradogs.test.client.demo; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/9/23 14:08 + * @Description: TODO + */ +@Data +@Component +@ConfigurationProperties("paradogs.protocoal") +public class ProtocolProperties { + + private int maxFrameLength = 65534; + + private int lengthFieldOffset = 0; + + private int lengthFieldLength = 2; + + private int lengthAdjustment = 0; + + private int initialBytesToStrip = 2; + +} diff --git a/paradogs-test/paradogs-test-client/src/main/resources/application.yml b/paradogs-test/paradogs-test-client/src/main/resources/application.yml index 075ac95..9f0c30f 100644 --- a/paradogs-test/paradogs-test-client/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-client/src/main/resources/application.yml @@ -2,4 +2,5 @@ paradogs: clients: - host: localhost port: 80 - server: connector \ No newline at end of file + server: connector + diff --git a/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/controller/LoginController.java b/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/controller/LoginController.java new file mode 100644 index 0000000..70ba3a0 --- /dev/null +++ b/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/controller/LoginController.java @@ -0,0 +1,34 @@ +package com.paradogs.test.login.controller; + +import com.paradogs.common.core.annoations.request.PdgController; +import com.paradogs.common.core.annoations.request.PdgMsgMapping; +import com.paradogs.common.core.pojo.ConnectorMessage; +import com.paradogs.test.login.rpc.MasterClient; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.concurrent.CompletableFuture; + +/** + * @author: yumi + * @date: 2023/9/5 14:12 + * @Description: TODO + */ +@Slf4j +@PdgController +@PdgMsgMapping("login") +public class LoginController { + + @Autowired + private MasterClient masterClient; + + @PdgMsgMapping("login") + public CompletableFuture login() { + CompletableFuture a = masterClient.getConnector(); + a.thenAccept(connectorMessage -> { + log.info("success: {} >>>>>>>>>>>>>>>>>>", connectorMessage); + }); + return a; + } + +} diff --git a/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/rpc/MasterClient.java b/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/rpc/MasterClient.java new file mode 100644 index 0000000..3be947c --- /dev/null +++ b/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/rpc/MasterClient.java @@ -0,0 +1,20 @@ +package com.paradogs.test.login.rpc; + +import com.paradogs.common.core.annoations.rpc.PdgRPC; +import com.paradogs.common.core.annoations.rpc.PdgRPCMapping; +import com.paradogs.common.core.pojo.ConnectorMessage; + +import java.util.concurrent.CompletableFuture; + +/** + * @author: yumi + * @date: 2023/9/5 14:24 + * @Description: TODO + */ +@PdgRPC("master") +public interface MasterClient { + + @PdgRPCMapping("info.getConnector") + CompletableFuture getConnector(); + +} diff --git a/paradogs-test/paradogs-test-login/src/main/resources/application.yml b/paradogs-test/paradogs-test-login/src/main/resources/application.yml index 593a4f7..e7c1f91 100644 --- a/paradogs-test/paradogs-test-login/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-login/src/main/resources/application.yml @@ -3,7 +3,10 @@ paradogs: port: 8080 type: login name: login-1 - master: false + connector: false + masters: + - host: localhost + port: 8888 # 日志级别配置 logging: level: -- Gitee From fd0dc6118420156dd791be5646428a9a691eb6a9 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Sat, 4 Nov 2023 17:47:22 +0800 Subject: [PATCH 12/32] =?UTF-8?q?=E9=87=8D=E6=9E=84=EF=BC=8C=E4=B8=8B?= =?UTF-8?q?=E4=B8=80=E6=AD=A5:=20RPC=20=E8=B0=83=E7=94=A8=E6=88=90?= =?UTF-8?q?=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ....java => PRConnectorServerMsgHandler.java} | 25 +---- ...orStarter.java => PRConnectorStarter.java} | 2 +- ...ot.autoconfigure.AutoConfiguration.imports | 2 +- .../core/annoations/EnableParadogs.java | 3 +- .../request/PRMsgMappingHolder.java | 63 ++++++++++++ .../annoations/request/PdgRequestHolder.java | 19 ---- .../request/PdgRequestInterfaceSelector.java | 8 +- .../annoations/rpc/RpcResponseResolver.java | 1 - .../config/MasterClientConfiguration.java | 32 ------ .../core/config/NettyConfiguration.java | 66 ++++++++++--- .../core/config/ServerConfiguration.java | 35 ------- .../MasterClientChannelInitializer.java | 48 --------- .../core/masterClient/MasterClientHolder.java | 13 --- .../masterClient/MasterClientLauncher.java | 67 ------------- .../masterClient/state/MasterClientState.java | 97 ------------------- .../com/paradogs/common/core/msg/BaseMsg.java | 8 +- .../common/core/msg/BaseMsg_CmdVersion.java | 8 +- .../paradogs/common/core/msg/ByteBodyMsg.java | 1 + .../common/core/msg/IMsgSerializable.java | 2 + .../paradogs/common/core/msg/MsgHeader.java | 5 + ...java => PRAbstractChannelInitializer.java} | 38 ++------ .../PRAbstractClientChannelInitializer.java | 14 +++ .../netty/PRAbstractClientMsgHandler.java | 9 ++ ...Handler.java => PRAbstractMsgHandler.java} | 24 +++-- .../PRAbstractServerChannelInitializer.java | 14 +++ .../netty/PRAbstractServerMsgHandler.java | 9 ++ .../ConnectorCodec.java => PRCodec.java} | 32 +++--- .../PRDefaultServerChannelInitializer.java | 18 ++++ .../{protocol => }/ProtocolProperties.java | 2 +- .../clients/MasterClientProperties.java} | 54 +++++------ .../common/core/netty/clients/PRClient.java | 44 +++++++++ .../clients/PRMasterClient.java} | 48 +++++---- .../PRMasterClientChannelInitializer.java | 18 ++++ .../PRMasterClientMsgHandler.java} | 31 +++--- .../core/netty/codec/CodecConfiguration.java | 30 ------ .../common/core/netty/codec/ServerCodec.java | 69 ------------- .../initializer/ClientChannelInitializer.java | 39 -------- .../initializer/ServerChannelInitializer.java | 35 ------- .../netty/pipelines/ForwardMsgHandler.java | 38 -------- .../netty/pipelines/MsgHeaderWrapper.java | 22 ----- .../netty/pipelines/ServerMsgHandler.java | 41 -------- .../server/PRServer.java} | 37 +++++-- .../core/netty/server/PRServerHolder.java | 32 ++++++ .../{ => netty}/server/ServerProperties.java | 2 +- .../com/paradogs/common/core/rpc/InitRPC.java | 2 +- .../common/core/server/ServerHolder.java | 25 ----- .../common/core/server/ServerLauncher.java | 45 --------- .../common/core/server/state/ServerState.java | 57 ----------- .../paradogs/common/core/utils/MsgUtils.java | 57 ++++++----- .../common/core/utils/ProtoUtils.java | 2 +- ...ot.autoconfigure.AutoConfiguration.imports | 4 - .../{config => }/ControllerConfiguration.java | 2 +- .../paradogs/common/master/MasterStarter.java | 6 +- ...ler.java => PRMasterServerMsgHandler.java} | 35 ++++--- .../master/controller/InitController.java | 2 +- ...ot.autoconfigure.AutoConfiguration.imports | 4 +- .../src/main/resources/application.yml | 6 +- .../test/master/MasterApplication.java | 2 - 58 files changed, 504 insertions(+), 950 deletions(-) rename paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/{ConnectorMsgHandler.java => PRConnectorServerMsgHandler.java} (53%) rename paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/{ConnectorStarter.java => PRConnectorStarter.java} (93%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestHolder.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/MasterClientConfiguration.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/ServerConfiguration.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientChannelInitializer.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientHolder.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientLauncher.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/state/MasterClientState.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/{initializer/BaseChannelInitializer.java => PRAbstractChannelInitializer.java} (64%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientChannelInitializer.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/{pipelines/BaseMsgHandler.java => PRAbstractMsgHandler.java} (68%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/{codec/ConnectorCodec.java => PRCodec.java} (53%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/{protocol => }/ProtocolProperties.java (91%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{masterClient/MasterProperties.java => netty/clients/MasterClientProperties.java} (35%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{masterClient/MasterClient.java => netty/clients/PRMasterClient.java} (55%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/{pipelines/ClientMsgHandler.java => clients/PRMasterClientMsgHandler.java} (38%) delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/CodecConfiguration.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/ClientChannelInitializer.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/ServerChannelInitializer.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ForwardMsgHandler.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHeaderWrapper.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{server/Server.java => netty/server/PRServer.java} (69%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServerHolder.java rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/{ => netty}/server/ServerProperties.java (96%) delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerHolder.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerLauncher.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/state/ServerState.java rename paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/{config => }/ControllerConfiguration.java (93%) rename paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/{master/MasterServerMsgHandler.java => PRMasterServerMsgHandler.java} (39%) diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorServerMsgHandler.java similarity index 53% rename from paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java rename to paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorServerMsgHandler.java index dbb4382..561eeea 100644 --- a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorMsgHandler.java +++ b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorServerMsgHandler.java @@ -1,18 +1,14 @@ package com.paradogs.common.connector; -import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.netty.pipelines.ForwardMsgHandler; -import com.paradogs.common.core.server.ServerProperties; +import com.paradogs.common.core.netty.PRAbstractServerMsgHandler; +import com.paradogs.common.core.netty.server.ServerProperties; import com.paradogs.common.core.utils.MsgUtils; import io.netty.channel.ChannelHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; -import java.lang.reflect.InvocationTargetException; - /** * @author: yumi * @date: 2023/8/8 8:56 @@ -20,16 +16,14 @@ import java.lang.reflect.InvocationTargetException; */ @Slf4j @Component -@Primary @ChannelHandler.Sharable -public class ConnectorMsgHandler extends ForwardMsgHandler { +public class PRConnectorServerMsgHandler extends PRAbstractServerMsgHandler { @Autowired private ServerProperties serverProperties; @Override - protected void processMsg(BaseMsg msg) throws InvocationTargetException, IllegalAccessException { - + protected void processMsg(ByteBodyMsg msg) throws Exception { // 发给自己的消息直接处理 if (msg.getMsgHeader().getServer().equals(serverProperties.getType())) { MsgUtils.adapterHandle(msg); @@ -37,16 +31,5 @@ public class ConnectorMsgHandler extends ForwardMsgHandler { } // 其他消息 Master 进行转发 MsgUtils.forward(msg); - - } - - @Override - protected void directProcess(BaseMsg msg) { - - } - - @Override - protected boolean directProcessCondition(BaseMsg msg) { - return msg.getMsgHeader().getServer().equals(serverProperties.getType()); } } diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorStarter.java b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java similarity index 93% rename from paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorStarter.java rename to paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java index f82aa0d..4dfa813 100644 --- a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/ConnectorStarter.java +++ b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java @@ -15,5 +15,5 @@ import org.springframework.context.annotation.Import; PdgRequestInterfaceSelector.class }) @Configuration -public class ConnectorStarter { +public class PRConnectorStarter { } diff --git a/paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 129dfe3..3334cfe 100644 --- a/paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1 @@ -com.paradogs.common.connector.ConnectorMsgHandler \ No newline at end of file +com.paradogs.common.connector.PRConnectorServerMsgHandler \ No newline at end of file diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java index 786abd5..2652879 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java @@ -2,7 +2,6 @@ package com.paradogs.common.core.annoations; import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; -import com.paradogs.common.core.server.ServerLauncher; import org.springframework.context.annotation.Import; import java.lang.annotation.ElementType; @@ -21,7 +20,7 @@ import java.lang.annotation.Target; // 等同于使用 META-INF.spring,看 @Import 注释,主要区别在于 @Import 可以手动注册,META-INF 为导入依赖自动注册 PdgRPCProxyBeanImportSelector.class, PdgRequestInterfaceSelector.class, - ServerLauncher.class +// ServerLauncher.class }) public @interface EnableParadogs { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java new file mode 100644 index 0000000..98e53e5 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java @@ -0,0 +1,63 @@ +package com.paradogs.common.core.annoations.request; + +import com.paradogs.common.core.events.RPCRespEvent; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.ByteBodyMsg; +import com.paradogs.common.core.msg.MsgHeader; +import com.paradogs.common.core.msg.route.MsgMapping; +import com.paradogs.common.core.utils.*; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +/** + * @author: yumi + * @date: 2023/8/25 17:28 + * @Description: TODO + */ +@Slf4j +public class PRMsgMappingHolder { + + private static Map mappingMap = new HashMap<>(); + + public static MsgMapping put(String route, MsgMapping mapping) { + return mappingMap.put(route, mapping); + } + + /** + * 获取映射 + * @param route + * @return + */ + public static MsgMapping getMsgMapping(String route) { + return PRMsgMappingHolder.mappingMap.get(route); + } + + /** + * 获取路由映射的传参数据对象类型 + * @param route + * @return + */ + public static Class getMsgMappingClass(String route) { + MsgMapping msgMapping = PRMsgMappingHolder.getMsgMapping(route); + if (msgMapping == null || msgMapping.getMsgClass() == null || msgMapping.getMsgClass().isAssignableFrom(void.class)) { + return null; + } + return msgMapping.getMsgClass(); + } + + /** + * 是否存在对应路由映射 + * @param route + * @return + */ + public static boolean containsRoute(String route) { + return PRMsgMappingHolder.mappingMap.containsKey(route); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestHolder.java deleted file mode 100644 index 3097046..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestHolder.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.paradogs.common.core.annoations.request; - -import com.paradogs.common.core.msg.route.MsgMapping; -import lombok.Getter; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023/8/25 17:28 - * @Description: TODO - */ -public class PdgRequestHolder { - - @Getter - private static Map mappingMap = new HashMap<>(); - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java index 317c667..13729b7 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java @@ -11,8 +11,6 @@ import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.type.AnnotationMetadata; -import java.lang.annotation.Annotation; -import java.lang.reflect.AnnotatedType; import java.lang.reflect.Method; import java.lang.reflect.Parameter; import java.util.List; @@ -63,8 +61,8 @@ public class PdgRequestInterfaceSelector extends BaseImportSelector { continue; } String route = (parentRouteMapping != null ? parentRouteMapping.value() : "") + (pdgMsgMapping.value().startsWith("/") ? "" : ".") + pdgMsgMapping.value(); - if (PdgRequestHolder.getMappingMap().containsKey(route)) { - throw new RuntimeException("Duplicate route found: [" + route + "]"); + if (PRMsgMappingHolder.containsRoute(route)) { + throw new RuntimeException("Duplicate route found: " + route); } // 保存 Msg 类型和要执行的方法 @@ -82,7 +80,7 @@ public class PdgRequestInterfaceSelector extends BaseImportSelector { } } - PdgRequestHolder.getMappingMap().put(route, new MsgMapping(targetMsgClass, method)); + PRMsgMappingHolder.put(route, new MsgMapping(targetMsgClass, method)); log.debug("Register RequestMapping: [{}]", route); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java index 41b9bad..d75c14c 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java @@ -3,7 +3,6 @@ package com.paradogs.common.core.annoations.rpc; import com.paradogs.common.core.events.RPCRespEvent; import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.msg.MsgContextHolder; -import com.paradogs.common.core.server.ServerProperties; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/MasterClientConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/MasterClientConfiguration.java deleted file mode 100644 index 9cc53bc..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/MasterClientConfiguration.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.paradogs.common.core.config; - -import com.paradogs.common.core.masterClient.MasterClientChannelInitializer; -import com.paradogs.common.core.masterClient.MasterClientLauncher; -import com.paradogs.common.core.masterClient.MasterProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @author: yumi - * @date: 2023/8/26 17:47 - * @Description: TODO - */ -@Configuration -public class MasterClientConfiguration { - - @Bean - public MasterProperties masterProperties() { - return new MasterProperties(); - } - - @Bean - public MasterClientLauncher masterLauncher() { - return new MasterClientLauncher(); - } - - @Bean - public MasterClientChannelInitializer masterChannelInitializer() { - return new MasterClientChannelInitializer(); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java index 09a4137..eaa5253 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java @@ -1,12 +1,17 @@ package com.paradogs.common.core.config; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.netty.initializer.ServerChannelInitializer; -import com.paradogs.common.core.netty.pipelines.*; -import com.paradogs.common.core.netty.protocol.ProtocolProperties; +import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; +import com.paradogs.common.core.netty.*; +import com.paradogs.common.core.netty.clients.MasterClientProperties; +import com.paradogs.common.core.netty.clients.PRMasterClient; +import com.paradogs.common.core.netty.clients.PRMasterClientChannelInitializer; +import com.paradogs.common.core.netty.clients.PRMasterClientMsgHandler; +import com.paradogs.common.core.netty.server.PRServer; +import com.paradogs.common.core.netty.server.ServerProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; /** * @author: yumi @@ -17,24 +22,59 @@ import org.springframework.context.annotation.Configuration; public class NettyConfiguration { @Bean - @ConditionalOnMissingBean(ServerChannelInitializer.class) - public ServerChannelInitializer serverChannelInitializer() { - return new ServerChannelInitializer(); + public ProtocolProperties protocolProperties() { + return new ProtocolProperties(); } @Bean - public MsgHeaderWrapper msgHeaderWrapper() { - return new MsgHeaderWrapper(); + public MasterClientProperties masterProperties() {return new MasterClientProperties();} + + @Bean + @ConditionalOnMissingBean(PRAbstractServerChannelInitializer.class) + public PRAbstractServerChannelInitializer defaultServerChannelInitializer(PRAbstractServerMsgHandler serverMsgHandler) { + return new PRDefaultServerChannelInitializer(serverMsgHandler); } @Bean - public ProtocolProperties protocolProperties() { - return new ProtocolProperties(); + public PRMasterClientChannelInitializer PRMasterClientChannelInitializer(PRMasterClientMsgHandler clientMsgHandler) { + return new PRMasterClientChannelInitializer(clientMsgHandler); + } + @Bean + public PRMasterClientMsgHandler PRMasterClientMsgHandler() { + return new PRMasterClientMsgHandler(); } @Bean - public ClientMsgHandler clientMsgHandler() { - return new ClientMsgHandler(); + public ServerProperties serverProperties() { + return new ServerProperties(); } + @Bean + public GlobalExceptionDispatch globalExceptionDispatch() { + return new GlobalExceptionDispatch(); + } + + @Bean + @Scope("prototype") + public PRCodec serverCodec() { + return new PRCodec(); + } + + /** + * 自动启动服务器 + * @return + */ + @Bean + public PRServer prServer() { + return new PRServer(); + } + + /** + * 自动连接 Master 服务器 + * @return + */ + @Bean + public PRMasterClient prMasterClient() { + return new PRMasterClient(); + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/ServerConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/ServerConfiguration.java deleted file mode 100644 index b6706ff..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/ServerConfiguration.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.paradogs.common.core.config; - -import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; -import com.paradogs.common.core.netty.codec.ServerCodec; -import com.paradogs.common.core.server.ServerLauncher; -import com.paradogs.common.core.server.ServerProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; - -/** - * @author: yumi - * @date: 2023/8/26 17:24 - * @Description: TODO - */ -@Configuration -public class ServerConfiguration { - - @Bean - public ServerProperties serverProperties() { - return new ServerProperties(); - } - - @Bean - public GlobalExceptionDispatch globalExceptionDispatch() { - return new GlobalExceptionDispatch(); - } - - @Bean - @Scope("prototype") - public ServerCodec serverCodec() { - return new ServerCodec(); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientChannelInitializer.java deleted file mode 100644 index 2032892..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientChannelInitializer.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.paradogs.common.core.masterClient; - -import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; -import com.paradogs.common.core.netty.initializer.ClientChannelInitializer; -import com.paradogs.common.core.netty.pipelines.ClientMsgHandler; -import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelPipeline; -import io.netty.channel.socket.nio.NioSocketChannel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/7 15:31 - * @Description: TODO - */ -@Slf4j -@Component -@ChannelHandler.Sharable -public class MasterClientChannelInitializer extends ClientChannelInitializer { - - @Value("${paradogs.server.type}") - private String serverType; - - @Value("${paradogs.server.name}") - private String serverName; - - @Autowired - private ClientMsgHandler clientMsgHandler; - - @Override - protected void initPipeline2(ChannelPipeline pipeline) { - pipeline.addLast(clientMsgHandler); - } - -// @Override -// protected void initAfter(NioSocketChannel channel) { -// } - - @Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - super.channelActive(ctx); - } - -} \ No newline at end of file diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientHolder.java deleted file mode 100644 index ecf84f1..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientHolder.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.paradogs.common.core.masterClient; - - -/** - * @author: yumi - * @date: 2023/8/29 11:03 - * @Description: TODO - */ -public class MasterClientHolder { - - public static MasterClient masterClient; - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientLauncher.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientLauncher.java deleted file mode 100644 index 7475dcd..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClientLauncher.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.paradogs.common.core.masterClient; - -import com.paradogs.common.core.pojo.Connection; -import com.paradogs.common.core.rpc.InitRPC; -import com.paradogs.common.core.server.ServerProperties; -import com.paradogs.common.core.utils.ConnectionUtils; -import com.paradogs.common.core.utils.SpringUtils; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; - -import java.util.concurrent.CompletableFuture; - -/** - * @author: yumi - * @date: 2023/7/31 23:29 - * @Description: TODO - */ -@Slf4j -@Getter -@Component -public class MasterClientLauncher implements ApplicationRunner { - - @Autowired - private MasterProperties masterProperties; - - @Override - public void run(ApplicationArguments args) { - - if (masterProperties == null || masterProperties.getMasters() == null) { - return; - } - - /** - * 待优化:master 集群,目前只有单 master - */ - for (MasterProperties.MasterConfig masterConfig : masterProperties.getMasters()) { - MasterClientHolder.masterClient = new MasterClient(masterConfig).start(); - // 初始化数据 - InitRPC initRPC = SpringUtils.getBean(InitRPC.class); - ConnectionUtils.setMasterChannel(MasterClientHolder.masterClient.getChannel()); - Connection connection = ConnectionUtils.saveNewConn(MasterClientHolder.masterClient.getChannel()); - - // 发送服务信息 - CompletableFuture clientInfo = initRPC.getClientInfo(SpringUtils.getBean(ServerProperties.class)); - - clientInfo.thenAccept(serverProperties -> { - log.info("receive reply >> {}", serverProperties); - connection.init("master", "master-1"); - log.info("Connect master success: [{} /{}:{}]", masterConfig.getName(), masterConfig.getHost(), masterConfig.getPort()); - }); - } - - - } - - /** - * 关闭所有 master 连接 - */ - public void closeAll() { - MasterClientHolder.masterClient.closeSync(); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/state/MasterClientState.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/state/MasterClientState.java deleted file mode 100644 index b064677..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/state/MasterClientState.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.paradogs.common.core.masterClient.state; - -import com.paradogs.common.core.masterClient.MasterClient; -import com.paradogs.common.core.masterClient.MasterClientHolder; -import com.paradogs.common.core.masterClient.MasterProperties; -import com.paradogs.common.core.pojo.Connection; -import com.paradogs.common.core.rpc.InitRPC; -import com.paradogs.common.core.server.ServerProperties; -import com.paradogs.common.core.utils.ConnectionUtils; -import com.paradogs.common.core.utils.SpringUtils; -import lombok.extern.slf4j.Slf4j; - -/** - * @author: yumi - * @date: 2023/8/29 10:47 - * @Description: TODO - */ -@Slf4j -public enum MasterClientState { - - /** - * 启动服务器 - */ - WAIT_START { - @Override - public MasterClientState flow() { - MasterProperties masterProperties = SpringUtils.getBean(MasterProperties.class); - /** - * 待优化:master 集群,目前只有单 master - */ - for (MasterProperties.MasterConfig masterConfig : masterProperties.getMasters()) { - MasterClientHolder.masterClient = new MasterClient(masterConfig).start(); - log.info("Connect master success: [{} /{}:{}]", masterConfig.getName(), masterConfig.getHost(), masterConfig.getPort()); - } - return MasterClientState.WAIT_INIT; - } - }, - - /** - * 初始化服务器信息 - */ - WAIT_INIT { - @Override - public MasterClientState flow() { - - // 初始化数据 - InitRPC initRPC = SpringUtils.getBean(InitRPC.class); - ConnectionUtils.setMasterChannel(MasterClientHolder.masterClient.getChannel()); - Connection connection = ConnectionUtils.saveNewConn(MasterClientHolder.masterClient.getChannel()); - - // 发送服务信息 - initRPC.getClientInfo(SpringUtils.getBean(ServerProperties.class)).thenAccept(serverProperties -> { - log.info("receive reply >> {}", serverProperties); - connection.init("master", "master-1"); - this.flow(true); - }); - - return MasterClientState.WAIT_CALLBACK; - } - }, - - /** - * 运行中 - */ - RUNNING { - @Override - public MasterClientState flow() { - log.warn("MasterClientState is already Running"); - return MasterClientState.RUNNING; - } - }, - - /** - * 等待回调 - */ - WAIT_CALLBACK { - @Override - public MasterClientState flow() { - return null; - } - public MasterClientState flow(boolean result) { - return result ? RUNNING : WAIT_INIT; - } - }; - - /** - * 执行并返回下一个状态 - * @return - */ - public abstract MasterClientState flow(); - - public MasterClientState flow(boolean result) { - log.error("no rewrite method: MasterClientState.flow(boolean)"); - return null; - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java index 13ab8ba..da5379a 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java @@ -46,15 +46,17 @@ public class BaseMsg implements IMsgSerializable { */ @Override public void deserialization(ByteBuf in) throws IOException { - // 读取消息体 byte 数组 byte[] bytes = new byte[in.readableBytes()]; in.readBytes(bytes); - BaseMsg msg = ProtoUtils.decode(bytes, this.getClass()); + this.deserialization(bytes); + } + @Override + public void deserialization(byte[] bytes) { + BaseMsg msg = ProtoUtils.decode(bytes, this.getClass()); // 将属性设置到类上 BeanUtils.copyProperties(msg, this); - } public void setMsgHeader(MsgHeader msgHeader) { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java index 7d1e4c3..7bf3ac8 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java @@ -48,15 +48,17 @@ public class BaseMsg_CmdVersion implements IMsgSerializable { */ @Override public void deserialization(ByteBuf in) throws IOException { - // 读取消息体 byte 数组 byte[] bytes = new byte[in.readableBytes()]; in.readBytes(bytes); - BaseMsg_CmdVersion msg = ProtoUtils.decode(bytes, this.getClass()); + this.deserialization(bytes); + } + @Override + public void deserialization(byte[] bytes) throws IOException { + BaseMsg_CmdVersion msg = ProtoUtils.decode(bytes, this.getClass()); // 将属性设置到类上 BeanUtils.copyProperties(msg, this); - } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java index eeb2d17..3dd7292 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java @@ -25,4 +25,5 @@ public class ByteBodyMsg extends BaseMsg { this.dataBytes = new byte[in.readableBytes()]; in.readBytes(this.dataBytes); } + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java index a445a79..2c1e3c3 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java @@ -16,4 +16,6 @@ public interface IMsgSerializable { void deserialization(ByteBuf in) throws IOException; + void deserialization(byte[] bytes) throws IOException; + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java index 6da768a..3aeae96 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java @@ -109,6 +109,11 @@ public class MsgHeader implements IMsgSerializable { public void deserialization(ByteBuf in) throws IOException { byte[] bytes = new byte[in.readShort()]; in.readBytes(bytes); + this.deserialization(bytes); + } + + @Override + public void deserialization(byte[] bytes) throws IOException { MsgHeader msgHeader = codec.decode(bytes); BeanUtils.copyProperties(msgHeader, this); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java similarity index 64% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java index 2d12577..08e3933 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/BaseChannelInitializer.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java @@ -1,11 +1,8 @@ -package com.paradogs.common.core.netty.initializer; +package com.paradogs.common.core.netty; -import com.paradogs.common.core.netty.pipelines.MsgHeaderWrapper; -import com.paradogs.common.core.netty.protocol.ProtocolProperties; import com.paradogs.common.core.utils.SpringUtils; import io.netty.channel.*; import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.ByteToMessageCodec; import io.netty.handler.codec.LengthFieldBasedFrameDecoder; import io.netty.handler.codec.LengthFieldPrepender; import lombok.extern.slf4j.Slf4j; @@ -17,14 +14,17 @@ import org.springframework.beans.factory.annotation.Autowired; * @Description: TODO */ @Slf4j -public abstract class BaseChannelInitializer extends ChannelInitializer { - - @Autowired - private MsgHeaderWrapper msgHeaderWrapper; +public abstract class PRAbstractChannelInitializer extends ChannelInitializer { @Autowired private ProtocolProperties protocolProperties; + private PRAbstractMsgHandler msgHandler; + + public PRAbstractChannelInitializer(PRAbstractMsgHandler msgHandler) { + this.msgHandler = msgHandler; + } + /** * 建立连接,初始化通道(还不能传输消息) * @param channel @@ -42,30 +42,12 @@ public abstract class BaseChannelInitializer extends ChannelInitializer extends SimpleChannelInboundHandler { +public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler { /** * 消息处理 */ - protected abstract void processMsg(T msg) throws Exception; + protected abstract void processMsg(ByteBodyMsg msg) throws Exception; /** * 设置自定义参数 */ - protected void setProps(ChannelHandlerContext ctx, T msg) { + protected void setProps(ChannelHandlerContext ctx, ByteBodyMsg msg) { } /** @@ -36,12 +36,12 @@ public abstract class BaseMsgHandler extends SimpleChannelInb * @param ctx * @param msg */ - protected void setContext(ChannelHandlerContext ctx, T msg) { + protected void setContext(ChannelHandlerContext ctx, ByteBodyMsg msg) { MsgContextHolder.setContext(ctx, msg.getMsgHeader().getPlayerId()); } - protected final void channelRead0(ChannelHandlerContext ctx, T msg) { + protected final void channelRead0(ChannelHandlerContext ctx, ByteBodyMsg msg) { setProps(ctx, msg); @@ -52,7 +52,7 @@ public abstract class BaseMsgHandler extends SimpleChannelInb processMsg(msg); } catch (Exception e) { - // 转发到全局异常处理 + // 全局异常处理 SpringUtils.getBean(GlobalExceptionDispatch.class).forward(e); } finally { @@ -66,7 +66,9 @@ public abstract class BaseMsgHandler extends SimpleChannelInb * @throws Exception */ @Override - public abstract void channelActive(ChannelHandlerContext ctx) throws Exception; + public void channelActive(ChannelHandlerContext ctx) throws Exception { + EventUtils.publishEvent(new ChannelActiveEvent(ctx)); + } /** * 连接断开事件 @@ -74,7 +76,9 @@ public abstract class BaseMsgHandler extends SimpleChannelInb * @throws Exception */ @Override - public abstract void channelInactive(ChannelHandlerContext ctx) throws Exception; + public void channelInactive(ChannelHandlerContext ctx) throws Exception { + EventUtils.publishEvent(new ChannelInactiveEvent(ctx)); + } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java new file mode 100644 index 0000000..f611f4e --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java @@ -0,0 +1,14 @@ +package com.paradogs.common.core.netty; + +/** + * @author: yumi + * @date: 2023/11/3 11:10 + * @Description: TODO + */ +public abstract class PRAbstractServerChannelInitializer extends PRAbstractChannelInitializer { + + public PRAbstractServerChannelInitializer(PRAbstractMsgHandler msgHandler) { + super(msgHandler); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java new file mode 100644 index 0000000..0fe2365 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java @@ -0,0 +1,9 @@ +package com.paradogs.common.core.netty; + +/** + * @author: yumi + * @date: 2023/11/3 11:18 + * @Description: TODO + */ +public abstract class PRAbstractServerMsgHandler extends PRAbstractMsgHandler { +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRCodec.java similarity index 53% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRCodec.java index 4fae87a..772f99e 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ConnectorCodec.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRCodec.java @@ -1,15 +1,12 @@ -package com.paradogs.common.core.netty.codec; +package com.paradogs.common.core.netty; -import com.paradogs.common.core.annoations.request.PdgRequestHolder; import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.msg.ByteBodyMsg; import com.paradogs.common.core.msg.MsgHeader; -import com.paradogs.common.core.msg.route.MsgMapping; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -17,14 +14,15 @@ import java.util.List; /** * @author: yumi - * @date: 2023/8/3 9:49 - * @Description: 网关编解码器 + * @date: 2023-02-08 11:43 + * @Description: TODO + * Not allowed to be shared !! + * ps: 继承 BaseMsg 的实体类不能加 @slf4j,会被 JProtobuf 解析导致编码失败 */ @Slf4j @Component @Scope("prototype") -@ConditionalOnProperty(name = "paradogs.server.connector", havingValue = "true") -public class ConnectorCodec extends ByteToMessageCodec { +public class PRCodec extends ByteToMessageCodec { @Override protected void encode(ChannelHandlerContext ctx, BaseMsg msg, ByteBuf out) throws Exception { @@ -41,21 +39,23 @@ public class ConnectorCodec extends ByteToMessageCodec { MsgHeader msgHeader = new MsgHeader(); msgHeader.deserialization(in); - // 获取消息实际类型 - MsgMapping msgMapping = PdgRequestHolder.getMappingMap().get(msgHeader.getRoute()); - if (msgMapping == null) { - log.error("route not found: [{}]", msgHeader.getRoute()); - return; - } +// // 获取消息实际类型 +// MsgMapping msgMapping = PdgRequestHolder.getMappingMap().get(msgHeader.getRouteMethod()); +// if (msgMapping == null) { +// msgMapping = PdgRPCHolder.getMappingMap().get(msgHeader.getRouteMethod()); +// } - BaseMsg baseMsg = msgMapping.getMsgClass() != null ? msgMapping.getMsgClass().newInstance() : new ByteBodyMsg(); +// BaseMsg baseMsg = msgMapping != null && msgMapping.getMsgClass() != null && !msgMapping.getMsgClass().isAssignableFrom(void.class) +// ? msgMapping.getMsgClass().newInstance() +// : new ByteBodyMsg(); + // 消息体暂时不解析,放 MsgHandler 中解析 + BaseMsg baseMsg = new ByteBodyMsg(); baseMsg.deserialization(in); baseMsg.setMsgHeader(msgHeader); out.add(baseMsg); - } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java new file mode 100644 index 0000000..96eca09 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java @@ -0,0 +1,18 @@ +package com.paradogs.common.core.netty; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/11/3 11:25 + * @Description: TODO + */ +@Component +@ConditionalOnMissingBean +public class PRDefaultServerChannelInitializer extends PRAbstractServerChannelInitializer { + + public PRDefaultServerChannelInitializer(PRAbstractMsgHandler msgHandler) { + super(msgHandler); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/protocol/ProtocolProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java similarity index 91% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/protocol/ProtocolProperties.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java index 94ce77d..afd796a 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/protocol/ProtocolProperties.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty.protocol; +package com.paradogs.common.core.netty; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java similarity index 35% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterProperties.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java index 6861437..4870041 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterProperties.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.masterClient; +package com.paradogs.common.core.netty.clients; import com.paradogs.common.core.utils.StringUtils; import lombok.Data; @@ -14,36 +14,30 @@ import java.util.List; */ @Data @Component -@ConfigurationProperties("paradogs") -public class MasterProperties { - - private List masters; - - @Data - @Component - public static class MasterConfig { - /** - * 主机 ip - */ - private String host; - - /** - * 端口号 - */ - private int port; - - /** - * 服务名称 - */ - private String name; - - - public String getName() { - if (StringUtils.isBlank(this.name)) { - this.name = "Master"; - } - return name; +@ConfigurationProperties("paradogs.master") +public class MasterClientProperties { + + /** + * 主机 ip + */ + private String host; + + /** + * 端口号 + */ + private int port; + + /** + * 服务名称 + */ + private String name; + + + public String getName() { + if (StringUtils.isBlank(this.name)) { + this.name = "Master"; } + return name; } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java new file mode 100644 index 0000000..92ea4cb --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java @@ -0,0 +1,44 @@ +package com.paradogs.common.core.netty.clients; + +import com.paradogs.common.core.netty.server.PRServerHolder; +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; + +/** + * @author: yumi + * @date: 2023/11/4 14:31 + * @Description: TODO + */ +public abstract class PRClient implements ApplicationRunner { + + @Getter + @Setter + private PRClient.State state = PRClient.State.STOP; + + /** + * 连接服务器 + * @return + */ + protected abstract PRClient connect(); + + /** + * 是否需要连接服务器 + * @return + */ + protected abstract boolean isNeedConnect(); + + @Override + public void run(ApplicationArguments args) throws Exception { + if (isNeedConnect()) { + this.connect(); + PRServerHolder.addClient(this); + } + } + + public enum State { + RUNNING, + STOP + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClient.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClient.java similarity index 55% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClient.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClient.java index 7f44445..5d19026 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/masterClient/MasterClient.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClient.java @@ -1,5 +1,7 @@ -package com.paradogs.common.core.masterClient; +package com.paradogs.common.core.netty.clients; +import com.paradogs.common.core.netty.PRAbstractClientChannelInitializer; +import com.paradogs.common.core.netty.server.ServerProperties; import com.paradogs.common.core.utils.SpringUtils; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; @@ -7,6 +9,8 @@ import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; import lombok.Getter; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * @author: yumi @@ -14,49 +18,49 @@ import lombok.extern.slf4j.Slf4j; * @Description: 用于连接 master 服务器 */ @Slf4j -public class MasterClient { +@Component +public class PRMasterClient extends PRClient { - private Bootstrap master; + @Autowired + private MasterClientProperties masterClientProperties; + + @Autowired + private ServerProperties serverProperties; + + private Bootstrap client; @Getter private Channel channel; private NioEventLoopGroup worker; - private MasterProperties.MasterConfig properties; - - public MasterClient(MasterProperties.MasterConfig masterConfig) { - this.properties = masterConfig; - } - /** * 启动 netty 服务器 */ - public MasterClient start() { + @Override + public PRClient connect() { try { long startTime = System.currentTimeMillis(); this.worker = new NioEventLoopGroup(); - this.master = new Bootstrap() + PRAbstractClientChannelInitializer clientChannelInitializer = SpringUtils.getBean("PRMasterClientChannelInitializer"); + + this.client = new Bootstrap() .group(worker) .channel(NioSocketChannel.class) - .handler(SpringUtils.getBean(MasterClientChannelInitializer.class)); - + .handler(clientChannelInitializer); - this.channel = master.connect(properties.getHost(), properties.getPort()).sync().channel(); + this.channel = client.connect(this.masterClientProperties.getHost(), this.masterClientProperties.getPort()).sync().channel(); + setState(PRClient.State.RUNNING); // 连接成功 // EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); - channel.closeFuture().addListener(future -> { - log.info("[{}] server stop", this.properties.getName()); - }); - return this; } catch (Exception e) { - log.error("server error:[{}]", e.getMessage(), e); + log.error("Client Connect:{}", e.getMessage(), e); this.closeSync(); } @@ -64,6 +68,11 @@ public class MasterClient { } + @Override + protected boolean isNeedConnect() { + return !this.serverProperties.isMaster(); + } + /** * 同步关闭连接 * ***ps: 关闭后进度未结束是因为消息处理队列还开着未关闭 @@ -77,6 +86,7 @@ public class MasterClient { if (!worker.isShutdown()) { worker.shutdownGracefully(); } + setState(PRClient.State.STOP); return true; } catch (Exception e) { e.printStackTrace(); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java new file mode 100644 index 0000000..74b24cd --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java @@ -0,0 +1,18 @@ +package com.paradogs.common.core.netty.clients; + +import com.paradogs.common.core.netty.PRAbstractClientChannelInitializer; +import com.paradogs.common.core.netty.PRAbstractMsgHandler; +import io.netty.channel.ChannelHandlerContext; + +/** + * @author: yumi + * @date: 2023/11/4 14:33 + * @Description: TODO + */ +public class PRMasterClientChannelInitializer extends PRAbstractClientChannelInitializer { + + public PRMasterClientChannelInitializer(PRAbstractMsgHandler msgHandler) { + super(msgHandler); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ClientMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java similarity index 38% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ClientMsgHandler.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java index 1a689e8..711ec9c 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ClientMsgHandler.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java @@ -1,40 +1,35 @@ -package com.paradogs.common.core.netty.pipelines; +package com.paradogs.common.core.netty.clients; -import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.ByteBodyMsg; +import com.paradogs.common.core.netty.PRAbstractClientMsgHandler; +import com.paradogs.common.core.rpc.InitRPC; import com.paradogs.common.core.utils.MsgUtils; -import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * @author: yumi - * @date: 2023/8/28 14:08 + * @date: 2023/11/4 15:52 * @Description: TODO */ +@Slf4j @Component -@ChannelHandler.Sharable -public class ClientMsgHandler extends BaseMsgHandler { +public class PRMasterClientMsgHandler extends PRAbstractClientMsgHandler { @Override - protected void processMsg(BaseMsg msg) throws Exception { - MsgUtils.adapterHandle(msg); + protected void processMsg(ByteBodyMsg msg) throws Exception { + log.info("Receive master message: {}", msg); } - /** - * 连接建立事件 - * @param ctx - * @throws Exception - */ @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { + log.info("Master[{}] connect success", ctx.channel().remoteAddress()); } - /** - * 连接断开事件 - * @param ctx - * @throws Exception - */ @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { + log.info("Master[{}] disconnect", ctx.channel().remoteAddress()); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/CodecConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/CodecConfiguration.java deleted file mode 100644 index f349f6f..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/CodecConfiguration.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.paradogs.common.core.netty.codec; - -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; - -/** - * @author: yumi - * @date: 2023/8/3 11:18 - * @Description: TODO - */ -@Configuration -public class CodecConfiguration { - - @Bean - @Scope("prototype") - @ConditionalOnProperty(name = "paradogs.server.connector", havingValue = "false", matchIfMissing = true) - public ServerCodec serverCodec() { - return new ServerCodec(); - } - - @Bean - @Scope("prototype") - @ConditionalOnProperty(name = "paradogs.server.connector", havingValue = "true") - public ConnectorCodec connectorCodec() { - return new ConnectorCodec(); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java deleted file mode 100644 index 85c300e..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/codec/ServerCodec.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.paradogs.common.core.netty.codec; - -import com.paradogs.common.core.annoations.request.PdgRequestHolder; -import com.paradogs.common.core.annoations.rpc.PdgRPCHolder; -import com.paradogs.common.core.annoations.rpc.RpcResponseResolver; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.msg.MsgHeader; -import com.paradogs.common.core.msg.route.MsgMapping; -import com.paradogs.common.core.netty.initializer.ServerChannelInitializer; -import com.paradogs.common.core.netty.pipelines.ServerMsgHandler; -import com.paradogs.common.core.utils.SpringUtils; -import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.ByteToMessageCodec; -import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.concurrent.CompletableFuture; - -/** - * @author: yumi - * @date: 2023-02-08 11:43 - * @Description: TODO - * not allowed to be shared !! - * ps: 继承 BaseMsg 的实体类不能加 @slf4j,会被 JProtobuf 解析导致编码失败 - */ -@Slf4j -@Component -@Scope("prototype") -@ConditionalOnProperty(name = "paradogs.server.connector", havingValue = "false", matchIfMissing = true) -public class ServerCodec extends ByteToMessageCodec { - - @Override - protected void encode(ChannelHandlerContext ctx, BaseMsg msg, ByteBuf out) throws Exception { - - msg.getMsgHeader().serialization(out); - - msg.serialization(out); - } - - @Override - protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { - - // 读取请求头 - MsgHeader msgHeader = new MsgHeader(); - msgHeader.deserialization(in); - - // 获取消息实际类型 - MsgMapping msgMapping = PdgRequestHolder.getMappingMap().get(msgHeader.getRouteMethod()); - if (msgMapping == null) { - msgMapping = PdgRPCHolder.getMappingMap().get(msgHeader.getRouteMethod()); - } - - BaseMsg baseMsg = msgMapping != null && msgMapping.getMsgClass() != null && !msgMapping.getMsgClass().isAssignableFrom(void.class) - ? msgMapping.getMsgClass().newInstance() - : new ByteBodyMsg(); - - baseMsg.deserialization(in); - baseMsg.setMsgHeader(msgHeader); - - out.add(baseMsg); - - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/ClientChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/ClientChannelInitializer.java deleted file mode 100644 index 40e3c5a..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/ClientChannelInitializer.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.paradogs.common.core.netty.initializer; - -import com.paradogs.common.core.netty.pipelines.ClientMsgHandler; -import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelPipeline; -import io.netty.channel.socket.nio.NioSocketChannel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/28 13:48 - * @Description: TODO - */ -@Slf4j -@Component -@ConditionalOnMissingBean(ClientChannelInitializer.class) -@ChannelHandler.Sharable -public class ClientChannelInitializer extends BaseChannelInitializer { - - @Autowired - private ClientMsgHandler msgHandler; - - @Override - protected void initPipeline2(ChannelPipeline pipeline) { - pipeline.addLast(msgHandler); - } - - /** - * 客户端连接 channel.remoteAddress 为 null - * @param channel - */ - @Override - protected void initAfter(NioSocketChannel channel) { -// log.info("Open a new connection: [{}:{}]", channel.remoteAddress().getAddress(), channel.remoteAddress().getPort()); - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/ServerChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/ServerChannelInitializer.java deleted file mode 100644 index 0f48971..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/initializer/ServerChannelInitializer.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.paradogs.common.core.netty.initializer; - -import com.paradogs.common.core.netty.pipelines.ServerMsgHandler; -import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelPipeline; -import io.netty.channel.socket.nio.NioSocketChannel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/28 13:48 - * @Description: TODO - */ -@Slf4j -@Component -@ConditionalOnMissingBean(ServerChannelInitializer.class) -@ChannelHandler.Sharable -public class ServerChannelInitializer extends BaseChannelInitializer { - - @Autowired - private ServerMsgHandler serverMsgHandler; - - @Override - protected void initPipeline2(ChannelPipeline pipeline) { - pipeline.addLast(serverMsgHandler); - } - - @Override - protected void initAfter(NioSocketChannel channel) { - log.info("Open a new connection: [{}:{}], Channel: {}", channel.remoteAddress().getAddress(), channel.remoteAddress().getPort(), channel.id()); - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ForwardMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ForwardMsgHandler.java deleted file mode 100644 index 4c82c7a..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ForwardMsgHandler.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.paradogs.common.core.netty.pipelines; - -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.utils.MsgUtils; -import io.netty.channel.ChannelHandler; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/26 16:01 - * @Description: TODO - */ -public abstract class ForwardMsgHandler extends ServerMsgHandler { - - @Override - protected void processMsg(BaseMsg msg) throws Exception { - if (directProcessCondition(msg)) { - directProcess(msg); - return; - } - MsgUtils.send(msg.getMsgHeader().getRoute(), msg); - } - - /** - * 直接处理方法 - */ - protected abstract void directProcess(BaseMsg msg); - - /** - * 直接处理的条件 - * @return - */ - protected abstract boolean directProcessCondition(BaseMsg msg); - - - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHeaderWrapper.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHeaderWrapper.java deleted file mode 100644 index 68ebaed..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/MsgHeaderWrapper.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.paradogs.common.core.netty.pipelines; - -import io.netty.channel.*; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/1 10:44 - * @Description: TODO - */ -@Slf4j -@Component -@ChannelHandler.Sharable -public class MsgHeaderWrapper extends ChannelDuplexHandler { - - @Override - public void write(ChannelHandlerContext ctx, Object data, ChannelPromise promise) throws Exception { - // 执行下一个 - super.write(ctx, data, promise); - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java deleted file mode 100644 index 4cf3825..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/pipelines/ServerMsgHandler.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.paradogs.common.core.netty.pipelines; - -import com.paradogs.common.core.events.ChannelActiveEvent; -import com.paradogs.common.core.events.ChannelInactiveEvent; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.utils.EventUtils; -import io.netty.channel.ChannelHandlerContext; - -/** - * @author: yumi - * @date: 2023/8/28 14:12 - * @Description: TODO - */ -public abstract class ServerMsgHandler extends BaseMsgHandler { - - - @Override - protected void processMsg(BaseMsg msg) throws Exception { - - } - - /** - * 连接建立事件 - * @param ctx - * @throws Exception - */ - @Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - EventUtils.publishEvent(new ChannelActiveEvent(ctx)); - } - - /** - * 连接断开事件 - * @param ctx - * @throws Exception - */ - @Override - public void channelInactive(ChannelHandlerContext ctx) throws Exception { - EventUtils.publishEvent(new ChannelInactiveEvent(ctx)); - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/Server.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java similarity index 69% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/Server.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java index 29a943a..8116311 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/Server.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java @@ -1,8 +1,7 @@ -package com.paradogs.common.core.server; +package com.paradogs.common.core.netty.server; import com.paradogs.common.core.events.ServerStartEvent; -import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; -import com.paradogs.common.core.netty.initializer.ServerChannelInitializer; +import com.paradogs.common.core.netty.PRAbstractServerChannelInitializer; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.SpringUtils; import io.netty.bootstrap.ServerBootstrap; @@ -12,6 +11,9 @@ import io.netty.channel.socket.nio.NioServerSocketChannel; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; /** * @author: yumi @@ -19,7 +21,8 @@ import org.springframework.beans.factory.annotation.Autowired; * @Description: TODO */ @Slf4j -public class Server { +@Component +public class PRServer implements ApplicationRunner { @Autowired private ServerProperties properties; @@ -27,32 +30,38 @@ public class Server { private ServerBootstrap server; private NioEventLoopGroup boss; + private NioEventLoopGroup worker; @Getter private Channel channel; - public Server(ServerProperties serverProperties) { - this.properties = serverProperties; - } + public PRServer.State state = State.STOP; /** * 启动 netty 服务器 */ public void start() { + if (this.state != PRServer.State.STOP) { + log.error("Start fail: Server is not stop"); + return; + } + boss = new NioEventLoopGroup(); worker = new NioEventLoopGroup(); try { long startTime = System.currentTimeMillis(); + PRAbstractServerChannelInitializer channelInitializer = SpringUtils.getBean(PRAbstractServerChannelInitializer.class); this.server = new ServerBootstrap() .group(boss, worker) .channel(NioServerSocketChannel.class) - .childHandler(SpringUtils.getBean(ServerChannelInitializer.class)); + .childHandler(channelInitializer); this.channel = this.server.bind(properties.getPort()).sync().channel(); log.info("Server start success: [{} localhost:{}]", properties.getName(), properties.getPort()); + this.state = State.RUNNING; EventUtils.publishEvent(new ServerStartEvent(System.currentTimeMillis() - startTime)); channel.closeFuture().addListener(future -> { @@ -79,7 +88,7 @@ public class Server { if (!worker.isShutdown()) { worker.shutdownGracefully(); } - + this.state = State.STOP; return true; } catch (Exception e) { e.printStackTrace(); @@ -88,4 +97,14 @@ public class Server { } + @Override + public void run(ApplicationArguments args) throws Exception { + this.start(); + PRServerHolder.setServer(this); + } + + public enum State { + RUNNING, + STOP + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServerHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServerHolder.java new file mode 100644 index 0000000..0d7d3af --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServerHolder.java @@ -0,0 +1,32 @@ +package com.paradogs.common.core.netty.server; + +import com.paradogs.common.core.netty.clients.PRClient; +import io.netty.channel.Channel; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author: yumi + * @date: 2023/8/26 17:18 + * @Description: TODO + */ +public class PRServerHolder { + + @Getter + private static PRServer server; + + @Getter + private static List clients = new ArrayList<>(); + + + public static void setServer(PRServer server) { + PRServerHolder.server = server; + } + + public static void addClient(PRClient client) { + PRServerHolder.clients.add(client); + } + +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java similarity index 96% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerProperties.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java index 8857611..92c57ca 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerProperties.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.server; +package com.paradogs.common.core.netty.server; import com.paradogs.common.core.msg.CGMsg; import lombok.AllArgsConstructor; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java index 73f991b..135450e 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java @@ -3,7 +3,7 @@ package com.paradogs.common.core.rpc; import com.paradogs.common.core.annoations.request.PdgMsg; import com.paradogs.common.core.annoations.rpc.PdgRPC; import com.paradogs.common.core.annoations.rpc.PdgRPCMapping; -import com.paradogs.common.core.server.ServerProperties; +import com.paradogs.common.core.netty.server.ServerProperties; import java.util.concurrent.CompletableFuture; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerHolder.java deleted file mode 100644 index 63d2a52..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerHolder.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.paradogs.common.core.server; - -import io.netty.channel.Channel; -import lombok.Getter; -import lombok.Setter; - -/** - * @author: yumi - * @date: 2023/8/26 17:18 - * @Description: TODO - */ -public class ServerHolder { - - @Getter - private static Server server; - - @Getter - private static Channel channel; - - public static void setServer(Server server) { - ServerHolder.server = server; - ServerHolder.channel = server.getChannel(); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerLauncher.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerLauncher.java deleted file mode 100644 index 5abf4e1..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/ServerLauncher.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.paradogs.common.core.server; - -import com.paradogs.common.core.events.ServerStartEvent; -import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.SpringUtils; -import io.netty.bootstrap.ServerBootstrap; -import io.netty.channel.Channel; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.nio.NioServerSocketChannel; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/7/28 23:41 - * @Description: TODO - */ -@Slf4j -@Component -public class ServerLauncher implements ApplicationRunner { - - private Server server; - - @Autowired - private ServerProperties serverProperties; - - - - @Override - public void run(ApplicationArguments args) throws Exception { - /** - * 启动服务器 - */ - this.server = new Server(serverProperties); - this.server.start(); - ServerHolder.setServer(this.server); - - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/state/ServerState.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/state/ServerState.java deleted file mode 100644 index 57b4fea..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/server/state/ServerState.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.paradogs.common.core.server.state; - -import com.paradogs.common.core.server.Server; -import com.paradogs.common.core.server.ServerHolder; -import com.paradogs.common.core.server.ServerProperties; -import com.paradogs.common.core.utils.SpringUtils; -import lombok.extern.slf4j.Slf4j; - -/** - * @author: yumi - * @date: 2023/8/29 10:27 - * @Description: TODO - */ -@Slf4j -public enum ServerState { - - /** - * 启动服务器 - */ - WAIT_START { - @Override - public ServerState flow() { - Server server = new Server(SpringUtils.getBean(ServerProperties.class)); - server.start(); - ServerHolder.setServer(server); - return ServerState.WAIT_INIT; - } - }, - - /** - * 初始化服务器信息 - */ - WAIT_INIT { - @Override - public ServerState flow() { - return ServerState.RUNNING; - } - }, - - /** - * 运行中 - */ - RUNNING { - @Override - public ServerState flow() { - log.warn("ServerState is already OVER"); - return ServerState.RUNNING; - } - }; - - /** - * 执行并返回下一个状态 - * @return - */ - public abstract ServerState flow(); - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java index 238769f..6a09a52 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java @@ -1,15 +1,15 @@ package com.paradogs.common.core.utils; -import com.paradogs.common.core.annoations.request.PdgRequestHolder; +import com.paradogs.common.core.annoations.request.PRMsgMappingHolder; import com.paradogs.common.core.annoations.rpc.PdgRPCHolder; -import com.paradogs.common.core.annoations.rpc.RpcResponseResolver; import com.paradogs.common.core.events.RPCRequestEvent; import com.paradogs.common.core.events.RPCRespEvent; import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.ByteBodyMsg; import com.paradogs.common.core.msg.MsgContextHolder; import com.paradogs.common.core.msg.MsgHeader; import com.paradogs.common.core.msg.route.MsgMapping; -import com.paradogs.common.core.server.ServerProperties; +import com.paradogs.common.core.netty.server.ServerProperties; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; @@ -111,45 +111,54 @@ public class MsgUtils { } /** - * 处理消息 + * 根据 route 适配执行对应的 Handler * @param msg * @throws InvocationTargetException * @throws IllegalAccessException */ - public static void adapterHandle(BaseMsg msg) throws InvocationTargetException, IllegalAccessException { - MsgMapping msgMapping = PdgRequestHolder.getMappingMap().get(msg.getMsgHeader().getRouteMethod()); - if (msgMapping == null) { - msgMapping = PdgRPCHolder.getMappingMap().get(msg.getMsgHeader().getRouteMethod()); - } + public static void adapterHandle(ByteBodyMsg msg) throws InvocationTargetException, IllegalAccessException { + + MsgHeader header = msg.getMsgHeader(); - if (msgMapping == null) { - log.error("MsgMapping not found, route: [{}]", msg.getMsgHeader().getRouteMethod()); + // 获取映射 + MsgMapping mapping = PRMsgMappingHolder.getMsgMapping(header.getRouteMethod()); + if (mapping == null) { + log.warn("Not found Mapping Method, route: {}", header.getRoute()); return; } + Class msgClass = PRMsgMappingHolder.getMsgMappingClass(header.getRouteMethod()); + + // 获取请求参数对象 + Object param = msgClass == null ? null : ProtoUtils.decode(msg.getDataBytes(), msgClass); /** - * 响应处理 + * 如果是响应的回调消息,则通知回调事件 */ - if (msg.getMsgHeader().isResp()) { - EventUtils.publishEvent(new RPCRespEvent<>(msg)); + if (header.isResp()) { + BaseMsg callbackMsg = new BaseMsg(); + callbackMsg.setMsgHeader(msg.getMsgHeader()); + callbackMsg.deserialization(msg.getDataBytes()); + EventUtils.publishEvent(new RPCRespEvent(callbackMsg)); return; } - Method method = msgMapping.getMethod(); + /** + * 执行对应 Handler 方法 + */ + Method method = mapping.getMethod(); Object pdgController = SpringUtils.getBean(method.getDeclaringClass()); if (pdgController == null) { - log.error("class [{}] not managed by Spring", method.getDeclaringClass()); + log.error("Class not managed by Spring: {}", method.getDeclaringClass()); return; } - /** * 待优化:这里可以像 SpringMVC 一样,根据方法参数注入相关变量,目前暂时只有 BaseMsg */ Object result = method.invoke( pdgController, Stream.of(method.getParameterTypes()) - .map(type -> msg.getClass().isAssignableFrom(type) ? msg : null) + .map(type -> param.getClass().isAssignableFrom(type) ? param : null) .toArray() ); @@ -164,11 +173,11 @@ public class MsgUtils { // !! 如果把请求参数返回,返回值的类会和请求参数地址一样,英文就是 msg == gcMsg // 准备返回消息 BaseMsg gcMsg = (BaseMsg) result; - MsgHeader header = new MsgHeader(); - header.setPlayerId(msg.getMsgHeader().getPlayerId()); - header.setRoute(msg.getMsgHeader().getCallbackRoute()); - header.setReplyMsgId(msg.getMsgHeader().getId()); - gcMsg.setMsgHeader(header); + MsgHeader gcHeader = new MsgHeader(); + gcHeader.setPlayerId(msg.getMsgHeader().getPlayerId()); + gcHeader.setRoute(msg.getMsgHeader().getCallbackRoute()); + gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); + gcMsg.setMsgHeader(gcHeader); /** * 返回值作为消息返回给请求者 @@ -181,4 +190,6 @@ public class MsgUtils { log.info("reply >> {}", msg.getMsgHeader()); } + + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java index f50be05..a28f7aa 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java @@ -15,7 +15,7 @@ import java.util.concurrent.ConcurrentHashMap; public class ProtoUtils { /** - * 优化效率,避免每次都创建一个编解码器 + * 优化效率,避免每次都创建一个编解码器,享元模式? */ public static Map, Codec> codecMap = new ConcurrentHashMap<>(); diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 84fed76..f78a22a 100644 --- a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,11 +1,7 @@ com.paradogs.common.core.config.NettyConfiguration -com.paradogs.common.core.config.ServerConfiguration - com.paradogs.common.core.config.UtilsConfiguration -com.paradogs.common.core.config.MasterClientConfiguration - com.paradogs.common.core.config.RPCConfiguration com.paradogs.common.core.CoreStarter diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/config/ControllerConfiguration.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java similarity index 93% rename from paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/config/ControllerConfiguration.java rename to paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java index b44d18c..6b78a35 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/config/ControllerConfiguration.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java @@ -1,4 +1,4 @@ -package com.paradogs.common.master.config; +package com.paradogs.common.master; import com.paradogs.common.master.controller.InitController; import com.paradogs.common.master.controller.MasterController; diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java index 025e1b1..8bb2299 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java @@ -2,7 +2,7 @@ package com.paradogs.common.master; import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; -import com.paradogs.common.master.master.MasterServerMsgHandler; +import com.paradogs.common.core.netty.PRAbstractServerMsgHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -20,8 +20,8 @@ import org.springframework.context.annotation.Import; public class MasterStarter { @Bean - public MasterServerMsgHandler serverMsgHandler() { - return new MasterServerMsgHandler(); + public PRAbstractServerMsgHandler serverMsgHandler() { + return new PRMasterServerMsgHandler(); } } diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/master/MasterServerMsgHandler.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/PRMasterServerMsgHandler.java similarity index 39% rename from paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/master/MasterServerMsgHandler.java rename to paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/PRMasterServerMsgHandler.java index dde9567..8aab0be 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/master/MasterServerMsgHandler.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/PRMasterServerMsgHandler.java @@ -1,12 +1,9 @@ -package com.paradogs.common.master.master; +package com.paradogs.common.master; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.MsgContextHolder; -import com.paradogs.common.core.netty.pipelines.ServerMsgHandler; -import com.paradogs.common.core.pojo.Connection; -import com.paradogs.common.core.server.ServerHolder; -import com.paradogs.common.core.server.ServerProperties; -import com.paradogs.common.core.utils.ConnectionUtils; +import com.paradogs.common.core.msg.ByteBodyMsg; +import com.paradogs.common.core.msg.MsgHeader; +import com.paradogs.common.core.netty.PRAbstractServerMsgHandler; +import com.paradogs.common.core.netty.server.ServerProperties; import com.paradogs.common.core.utils.MsgUtils; import io.netty.channel.ChannelHandler; import lombok.extern.slf4j.Slf4j; @@ -21,26 +18,32 @@ import org.springframework.stereotype.Component; @Slf4j @Component @ChannelHandler.Sharable -public class MasterServerMsgHandler extends ServerMsgHandler { +public class PRMasterServerMsgHandler extends PRAbstractServerMsgHandler { @Autowired private ServerProperties serverProperties; /** * 处理消息 - * @param msg + * @param byteBodyMsg * @throws Exception */ @Override - protected void processMsg(BaseMsg msg) throws Exception { + protected void processMsg(ByteBodyMsg byteBodyMsg) throws Exception { - // 发给自己的消息直接处理 - if (msg.getMsgHeader().getServer().equals(serverProperties.getType())) { - MsgUtils.adapterHandle(msg); + MsgHeader header = byteBodyMsg.getMsgHeader(); + + /** + * 发给自己的消息直接处理 + */ + if (header.getServer().equals(serverProperties.getType())) { + MsgUtils.adapterHandle(byteBodyMsg); return; } - // 其他消息 Master 进行转发 - MsgUtils.forward(msg); + /** + * 其他 RPC 消息通过 Master 进行转发 + */ + MsgUtils.forward(byteBodyMsg); } } diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/InitController.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/InitController.java index 52a937f..796d09c 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/InitController.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/InitController.java @@ -3,7 +3,7 @@ package com.paradogs.common.master.controller; import com.paradogs.common.core.annoations.request.PdgController; import com.paradogs.common.core.annoations.request.PdgMsg; import com.paradogs.common.core.annoations.request.PdgMsgMapping; -import com.paradogs.common.core.server.ServerProperties; +import com.paradogs.common.core.netty.server.ServerProperties; import com.paradogs.common.core.utils.MsgUtils; import com.paradogs.common.core.pojo.Connection; import com.paradogs.common.core.utils.ConnectionUtils; diff --git a/paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 8c4286d..8e60f84 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,6 +1,8 @@ com.paradogs.common.master.MasterStarter -com.paradogs.common.master.config.ControllerConfiguration +com.paradogs.common.master.PRMasterServerMsgHandler + +com.paradogs.common.master.ControllerConfiguration diff --git a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml b/paradogs-test/paradogs-test-connector/src/main/resources/application.yml index a284dfa..26217d3 100644 --- a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-connector/src/main/resources/application.yml @@ -4,9 +4,9 @@ paradogs: type: connector name: connector-1 connector: false - masters: - - host: localhost - port: 8888 + master: + host: localhost + port: 8888 # 日志级别配置 logging: diff --git a/paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java b/paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java index 3298d32..f5f6a45 100644 --- a/paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java +++ b/paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java @@ -1,8 +1,6 @@ package com.paradogs.test.master; import com.paradogs.common.core.annoations.EnableParadogs; -import com.paradogs.common.core.netty.initializer.ServerChannelInitializer; -import com.paradogs.common.core.utils.SpringUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -- Gitee From 079cf2735629086a155efe2ce4022d03fa2fc5bd Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Sat, 4 Nov 2023 17:47:38 +0800 Subject: [PATCH 13/32] =?UTF-8?q?=E9=87=8D=E6=9E=84=EF=BC=8C=E4=B8=8B?= =?UTF-8?q?=E4=B8=80=E6=AD=A5:=20RPC=20=E8=B0=83=E7=94=A8=E6=88=90?= =?UTF-8?q?=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ot.autoconfigure.AutoConfiguration.imports | 7 ++ .../target/classes/config/application.yml | 0 ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../target/classes/config/application.yml | 6 ++ ...ot.autoconfigure.AutoConfiguration.imports | 11 +++ .../target/classes/config/application.yml | 0 .../target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 93 +++++++++++++++++++ .../compile/default-compile/inputFiles.lst | 85 +++++++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 7 ++ .../target/classes/config/application.yml | 0 ...ot.autoconfigure.AutoConfiguration.imports | 9 ++ .../target/classes/config/application.yml | 0 .../target/classes/application.yml | 6 ++ .../target/classes/application.yml | 15 +++ .../target/classes/application.yml | 14 +++ .../target/classes/application.yml | 11 +++ .../target/classes/application.yml | 17 ++++ 18 files changed, 287 insertions(+) create mode 100644 paradogs-common/paradogs-common-client-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 paradogs-common/paradogs-common-client-starter/target/classes/config/application.yml create mode 100644 paradogs-common/paradogs-common-connector-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 paradogs-common/paradogs-common-connector-starter/target/classes/config/application.yml create mode 100644 paradogs-common/paradogs-common-core/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 paradogs-common/paradogs-common-core/target/classes/config/application.yml create mode 100644 paradogs-common/paradogs-common-core/target/maven-archiver/pom.properties create mode 100644 paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 paradogs-common/paradogs-common-game-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 paradogs-common/paradogs-common-game-starter/target/classes/config/application.yml create mode 100644 paradogs-common/paradogs-common-master-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 paradogs-common/paradogs-common-master-starter/target/classes/config/application.yml create mode 100644 paradogs-test/paradogs-test-client/target/classes/application.yml create mode 100644 paradogs-test/paradogs-test-connector/target/classes/application.yml create mode 100644 paradogs-test/paradogs-test-login/target/classes/application.yml create mode 100644 paradogs-test/paradogs-test-master/target/classes/application.yml create mode 100644 paradogs-test/paradogs-test-server/target/classes/application.yml diff --git a/paradogs-common/paradogs-common-client-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-client-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..fde7f69 --- /dev/null +++ b/paradogs-common/paradogs-common-client-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,7 @@ +com.paradogs.common.client.netty.Client +com.paradogs.common.client.netty.ClientProperties +com.paradogs.common.client.netty.ClientLauncher +com.paradogs.common.client.netty.ClientChannelInitializer +com.paradogs.common.client.netty.ClientMsgHandler + + diff --git a/paradogs-common/paradogs-common-client-starter/target/classes/config/application.yml b/paradogs-common/paradogs-common-client-starter/target/classes/config/application.yml new file mode 100644 index 0000000..e69de29 diff --git a/paradogs-common/paradogs-common-connector-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-connector-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..3334cfe --- /dev/null +++ b/paradogs-common/paradogs-common-connector-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.paradogs.common.connector.PRConnectorServerMsgHandler \ No newline at end of file diff --git a/paradogs-common/paradogs-common-connector-starter/target/classes/config/application.yml b/paradogs-common/paradogs-common-connector-starter/target/classes/config/application.yml new file mode 100644 index 0000000..cfc460e --- /dev/null +++ b/paradogs-common/paradogs-common-connector-starter/target/classes/config/application.yml @@ -0,0 +1,6 @@ +paradogs: + queue: + enable: false + main-size: 1 + db-size: 1 + diff --git a/paradogs-common/paradogs-common-core/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..f78a22a --- /dev/null +++ b/paradogs-common/paradogs-common-core/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,11 @@ +com.paradogs.common.core.config.NettyConfiguration + +com.paradogs.common.core.config.UtilsConfiguration + +com.paradogs.common.core.config.RPCConfiguration + +com.paradogs.common.core.CoreStarter + + + + diff --git a/paradogs-common/paradogs-common-core/target/classes/config/application.yml b/paradogs-common/paradogs-common-core/target/classes/config/application.yml new file mode 100644 index 0000000..e69de29 diff --git a/paradogs-common/paradogs-common-core/target/maven-archiver/pom.properties b/paradogs-common/paradogs-common-core/target/maven-archiver/pom.properties new file mode 100644 index 0000000..0353ec7 --- /dev/null +++ b/paradogs-common/paradogs-common-core/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Sat Aug 26 17:09:23 CST 2023 +version=0.0.1 +groupId=com.paradogs +artifactId=paradogs-common-core-starter diff --git a/paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..7b633e5 --- /dev/null +++ b/paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,93 @@ +com\paradogs\common\core\server\ServerLauncher.class +com\paradogs\common\core\events\ReceiveMsgEvent.class +com\paradogs\common\core\master\MasterChannelInitializer.class +com\paradogs\common\core\msg\MsgContextHolder.class +com\paradogs\common\core\annoations\rpc\RPCInterfaceScanner.class +com\paradogs\common\core\queue\QueueManager$QueueType.class +com\paradogs\common\core\annoations\rpc\RpcResponseResolver.class +com\paradogs\common\core\annoations\exception\PdgExceptionHandler.class +com\paradogs\common\core\netty\pipelines\MsgHeaderWrapper.class +com\paradogs\common\core\annoations\base\BaseScanner.class +com\paradogs\common\core\annoations\request\PdgController.class +com\paradogs\common\core\netty\codec\ServerCodec.class +com\paradogs\common\core\master\MasterLauncher.class +com\paradogs\common\core\utils\MsgUtils.class +com\paradogs\common\core\annoations\EnableParadogs.class +com\paradogs\common\core\msg\BaseMsg.class +com\paradogs\common\core\utils\RouteUtils.class +com\paradogs\common\core\netty\events\MainLoopEvent.class +com\paradogs\common\core\utils\TimeUtils.class +com\paradogs\common\core\events\base\AnonEvent$AnonObject.class +com\paradogs\common\core\events\base\BaseEvent.class +com\paradogs\common\core\server\ServerLauncher$Server.class +com\paradogs\common\core\events\SyncMsgEvent.class +com\paradogs\common\core\annoations\request\PdgMsg.class +com\paradogs\common\core\msg\GCTestMsg.class +com\paradogs\common\core\events\ChannelInactiveEvent.class +com\paradogs\common\core\msg\CGTestMsg.class +com\paradogs\common\core\queue\QueueConfiguration.class +com\paradogs\common\core\rpc\InitRPC.class +com\paradogs\common\core\utils\BeanUtils.class +com\paradogs\common\core\utils\ProtoUtils.class +com\paradogs\common\core\msg\BaseMsg_CmdVersion.class +com\paradogs\common\core\events\base\AnonEvent.class +com\paradogs\common\core\annoations\request\PdgMsgMapping.class +com\paradogs\common\core\events\ServerStartEvent.class +com\paradogs\common\core\netty\events\ServerEvent$START.class +com\paradogs\common\core\server\ServerProperties.class +com\paradogs\common\core\exceptions\ServiceException.class +com\paradogs\common\core\msg\MsgHeader.class +com\paradogs\common\core\annoations\rpc\RPCProxyBean.class +com\paradogs\common\core\queue\MainMsgConsumerThread.class +com\paradogs\common\core\events\RPCRequestEvent.class +com\paradogs\common\core\master\MasterClient.class +com\paradogs\common\core\utils\StringUtils.class +com\paradogs\common\core\events\ServerConnectionInitEvent.class +com\paradogs\common\core\netty\events\ServerEvent.class +com\paradogs\common\core\netty\pipelines\BaseMsgHandler.class +com\paradogs\common\core\utils\EventUtils.class +com\paradogs\common\core\annoations\rpc\RPCProxyInterceptor.class +com\paradogs\common\core\annoations\rpc\PdgRPCMapping.class +com\paradogs\common\core\master\MasterProperties$MasterConfig.class +com\paradogs\common\core\msg\IMsgSerializable.class +com\paradogs\common\core\annoations\rpc\RpcResponseResolver$RespData.class +com\paradogs\common\core\listeners\PdgEventListener.class +com\paradogs\common\core\events\RPCRespEvent.class +com\paradogs\common\core\netty\codec\ConnectorCodec.class +com\paradogs\common\core\msg\MsgContextHolder$Snapshot.class +com\paradogs\common\core\netty\initializer\BaseChannelInitializer.class +com\paradogs\common\core\netty\initializer\DefaultChannelInitializer.class +com\paradogs\common\core\annoations\exception\PdgExceptionHandlerClass.class +com\paradogs\common\core\queue\QueueManager.class +com\paradogs\common\core\exceptions\base\BaseUncheckedException.class +com\paradogs\common\core\netty\codec\CodecConfiguration.class +com\paradogs\common\core\queue\DBTaskConsumerThread.class +com\paradogs\common\core\annoations\rpc\PdgRPC.class +com\paradogs\common\core\master\MasterProperties.class +com\paradogs\common\core\annoations\request\PdgRequestHolder.class +com\paradogs\common\core\queue\QueueProperties.class +com\paradogs\common\core\msg\CGMsg.class +com\paradogs\common\core\exceptions\base\BaseCheckedException.class +com\paradogs\common\core\annoations\request\PdgRequestInterfaceSelector.class +com\paradogs\common\core\annoations\base\BaseImportSelector.class +com\paradogs\common\core\exceptions\SerializationException.class +com\paradogs\common\core\utils\ConnectionUtils.class +com\paradogs\common\core\queue\QueueConsumerThread.class +com\paradogs\common\core\events\ChannelActiveEvent.class +com\paradogs\common\core\msg\DBTask.class +com\paradogs\common\core\exceptions\GlobalExceptionDispatch.class +com\paradogs\common\core\msg\ByteBodyMsg.class +com\paradogs\common\core\msg\GCMsg.class +com\paradogs\common\core\pojo\Connection.class +com\paradogs\common\core\annoations\request\PdgRequestScanner.class +com\paradogs\common\core\pojo\Connection$State.class +com\paradogs\common\core\msg\route\MsgMapping.class +com\paradogs\common\core\msg\VoidMsg.class +com\paradogs\common\core\netty\pipelines\ForwardMsgHandler.class +com\paradogs\common\core\netty\protocol\ProtocolProperties.class +com\paradogs\common\core\utils\SpringUtils.class +com\paradogs\common\core\annoations\rpc\PdgRPCProxyBeanImportSelector.class +com\paradogs\common\core\msg\CommonController.class +com\paradogs\common\core\annoations\loop\PdgIdleLoop.class +com\paradogs\common\core\annoations\rpc\PdgRPCHolder.class +com\paradogs\common\core\netty\ServerMsgHandler.class diff --git a/paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..458b56a --- /dev/null +++ b/paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,85 @@ +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\request\PdgRequestInterfaceSelector.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\pojo\Connection.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\CGMsg.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\queue\QueueManager.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\exceptions\SerializationException.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\queue\QueueConfiguration.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\BaseMsg.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\initializer\BaseChannelInitializer.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\exceptions\base\BaseCheckedException.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\exceptions\base\BaseUncheckedException.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\SyncMsgEvent.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\BeanUtils.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\VoidMsg.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\ServerMsgHandler.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\base\BaseEvent.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\queue\QueueConsumerThread.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\base\AnonEvent.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\DBTask.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\exception\PdgExceptionHandler.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\request\PdgRequestHolder.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\events\ServerEvent.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\pipelines\ForwardMsgHandler.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\request\PdgMsg.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\exceptions\GlobalExceptionDispatch.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\GCMsg.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\exception\PdgExceptionHandlerClass.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\loop\PdgIdleLoop.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\RPCRespEvent.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\listeners\PdgEventListener.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\RPCProxyInterceptor.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\protocol\ProtocolProperties.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\pipelines\MsgHeaderWrapper.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\CGTestMsg.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\exceptions\ServiceException.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\MsgHeader.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\MsgUtils.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\ServerConnectionInitEvent.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\request\PdgRequestScanner.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\ChannelInactiveEvent.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\server\ServerLauncher.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\master\MasterClient.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\queue\DBTaskConsumerThread.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\GCTestMsg.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\route\MsgMapping.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\codec\ServerCodec.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\master\MasterChannelInitializer.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\IMsgSerializable.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\RouteUtils.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\PdgRPC.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\rpc\InitRPC.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\ChannelActiveEvent.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\request\PdgMsgMapping.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\master\MasterProperties.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\CommonController.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\codec\CodecConfiguration.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\PdgRPCProxyBeanImportSelector.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\master\MasterLauncher.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\EnableParadogs.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\RPCProxyBean.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\EventUtils.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\codec\ConnectorCodec.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\base\BaseScanner.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\BaseMsg_CmdVersion.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\ReceiveMsgEvent.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\ProtoUtils.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\ByteBodyMsg.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\TimeUtils.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\initializer\DefaultChannelInitializer.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\ServerStartEvent.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\ConnectionUtils.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\base\BaseImportSelector.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\RPCInterfaceScanner.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\StringUtils.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\PdgRPCMapping.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\RPCRequestEvent.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\events\MainLoopEvent.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\queue\QueueProperties.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\request\PdgController.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\PdgRPCHolder.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\queue\MainMsgConsumerThread.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\MsgContextHolder.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\pipelines\BaseMsgHandler.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\RpcResponseResolver.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\SpringUtils.java +G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\server\ServerProperties.java diff --git a/paradogs-common/paradogs-common-game-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-game-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..ba6cf06 --- /dev/null +++ b/paradogs-common/paradogs-common-game-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,7 @@ +com.paradogs.common.game.config.NettyConfiguration + +com.paradogs.common.game.config.QueueConfiguration + + + + diff --git a/paradogs-common/paradogs-common-game-starter/target/classes/config/application.yml b/paradogs-common/paradogs-common-game-starter/target/classes/config/application.yml new file mode 100644 index 0000000..e69de29 diff --git a/paradogs-common/paradogs-common-master-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-master-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..8e60f84 --- /dev/null +++ b/paradogs-common/paradogs-common-master-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,9 @@ +com.paradogs.common.master.MasterStarter + +com.paradogs.common.master.PRMasterServerMsgHandler + +com.paradogs.common.master.ControllerConfiguration + + + + diff --git a/paradogs-common/paradogs-common-master-starter/target/classes/config/application.yml b/paradogs-common/paradogs-common-master-starter/target/classes/config/application.yml new file mode 100644 index 0000000..e69de29 diff --git a/paradogs-test/paradogs-test-client/target/classes/application.yml b/paradogs-test/paradogs-test-client/target/classes/application.yml new file mode 100644 index 0000000..9f0c30f --- /dev/null +++ b/paradogs-test/paradogs-test-client/target/classes/application.yml @@ -0,0 +1,6 @@ +paradogs: + clients: + - host: localhost + port: 80 + server: connector + diff --git a/paradogs-test/paradogs-test-connector/target/classes/application.yml b/paradogs-test/paradogs-test-connector/target/classes/application.yml new file mode 100644 index 0000000..26217d3 --- /dev/null +++ b/paradogs-test/paradogs-test-connector/target/classes/application.yml @@ -0,0 +1,15 @@ +paradogs: + server: + port: 80 + type: connector + name: connector-1 + connector: false + master: + host: localhost + port: 8888 + +# 日志级别配置 +logging: + level: + # 指定的包路径 + com.paradogs: debug diff --git a/paradogs-test/paradogs-test-login/target/classes/application.yml b/paradogs-test/paradogs-test-login/target/classes/application.yml new file mode 100644 index 0000000..e7c1f91 --- /dev/null +++ b/paradogs-test/paradogs-test-login/target/classes/application.yml @@ -0,0 +1,14 @@ +paradogs: + server: + port: 8080 + type: login + name: login-1 + connector: false + masters: + - host: localhost + port: 8888 +# 日志级别配置 +logging: + level: + # 指定的包路径 + com.paradogs: debug \ No newline at end of file diff --git a/paradogs-test/paradogs-test-master/target/classes/application.yml b/paradogs-test/paradogs-test-master/target/classes/application.yml new file mode 100644 index 0000000..5447101 --- /dev/null +++ b/paradogs-test/paradogs-test-master/target/classes/application.yml @@ -0,0 +1,11 @@ +paradogs: + server: + port: 8888 + type: master + name: master-1 + master: true +# 日志级别配置 +logging: + level: + # 指定的包路径 + com.paradogs: debug \ No newline at end of file diff --git a/paradogs-test/paradogs-test-server/target/classes/application.yml b/paradogs-test/paradogs-test-server/target/classes/application.yml new file mode 100644 index 0000000..d129bca --- /dev/null +++ b/paradogs-test/paradogs-test-server/target/classes/application.yml @@ -0,0 +1,17 @@ +paradogs: + server: + port: 8001 + type: test + name: test-1 + connector: false + masters: + - host: localhost + port: 8888 + queue: + main-size: 1 + +# 日志级别配置 +logging: + level: + # 指定的包路径 + com.paradogs: debug \ No newline at end of file -- Gitee From e9fc38f98d886d92d47315646601121893d00945 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Sat, 4 Nov 2023 17:50:00 +0800 Subject: [PATCH 14/32] target --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index a1c2a23..434f260 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,6 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* + +# target +target/ \ No newline at end of file -- Gitee From c09d0d92ef3d964ff32b08c8c847539d62195e2d Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Tue, 7 Nov 2023 09:29:39 +0800 Subject: [PATCH 15/32] =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=B9=B6=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E5=88=B0Server=E6=B3=A8=E5=86=8CMaster=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/connector/EventHandler.java | 2 - .../com/paradogs/common/core/CoreStarter.java | 2 + .../request/PRMsgMappingHolder.java | 2 +- .../annoations/rpc/RpcResponseResolver.java | 45 ++++--- .../PdgIdleLoop.java => tick/PRTick.java} | 6 +- .../core/config/NettyConfiguration.java | 6 + .../core}/config/QueueConfiguration.java | 28 ++--- .../common/core/config/RPCConfiguration.java | 6 + .../core/config/UtilsConfiguration.java | 6 - .../core/listeners/PdgEventListener.java | 4 +- .../common/core/msg/CommonController.java | 27 +++++ .../com/paradogs/common/core/msg/GCMsg.java | 2 +- .../paradogs/common/core/msg/MsgHeader.java | 50 ++++---- ...extHolder.java => PRMsgContextHolder.java} | 18 +-- .../netty/PRAbstractClientMsgHandler.java | 1 + .../core/netty/PRAbstractMsgHandler.java | 55 +++++++-- .../core/netty/PRDefaultMsgHandler.java | 12 ++ .../common/core/netty/clients/PRClient.java | 12 +- .../core/netty/clients/PRMasterClient.java | 10 +- .../clients/PRMasterClientMsgHandler.java | 23 +++- .../core/netty/server/PRConnection.java | 33 ++++++ .../core/netty/server/PRConnectionHolder.java | 112 ++++++++++++++++++ .../common/core/netty/server/PRServer.java | 6 +- .../core/netty/server/PRServerHolder.java | 32 ----- .../core/netty/server/ServerProperties.java | 10 +- .../core/queue/AbstractMsgConsumer.java | 21 ++++ .../core/queue/MsgDefaultConsumer.java} | 19 +-- .../common/core/queue/PRQueueHolder.java} | 73 +++++------- .../core}/queue/QueueConsumerThread.java | 18 ++- .../common/core}/queue/QueueProperties.java | 9 +- .../com/paradogs/common/core/rpc/InitRPC.java | 4 +- .../common/core/utils/ConnectionUtils.java | 86 -------------- .../common/core/utils/EventUtils.java | 2 +- .../paradogs/common/core/utils/MsgUtils.java | 77 +++++++----- .../common/core/utils/RandomUtils.java | 16 +++ ...ot.autoconfigure.AutoConfiguration.imports | 3 + ...ot.autoconfigure.AutoConfiguration.imports | 3 + .../game/queue/DBTaskConsumerThread.java | 36 ------ .../game/server/GameServerMsgHandler.java | 6 +- ...ot.autoconfigure.AutoConfiguration.imports | 2 +- .../master/ControllerConfiguration.java | 6 - .../paradogs/common/master/MasterStarter.java | 8 +- .../master/controller/InitController.java | 42 ------- .../master/controller/MasterController.java | 38 +++--- .../common/master/events/EventHandler.java | 2 - .../MasterMsgConsumer.java} | 24 ++-- ...ot.autoconfigure.AutoConfiguration.imports | 6 +- ...ot.autoconfigure.AutoConfiguration.imports | 6 +- .../src/main/resources/application.yml | 2 +- .../target/classes/application.yml | 2 +- .../paradogs/test/login/rpc/MasterClient.java | 2 +- 51 files changed, 556 insertions(+), 467 deletions(-) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/{loop/PdgIdleLoop.java => tick/PRTick.java} (64%) rename paradogs-common/{paradogs-common-game-starter/src/main/java/com/paradogs/common/game => paradogs-common-core/src/main/java/com/paradogs/common/core}/config/QueueConfiguration.java (44%) rename paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/{MsgContextHolder.java => PRMsgContextHolder.java} (64%) create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultMsgHandler.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRConnection.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServerHolder.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/AbstractMsgConsumer.java rename paradogs-common/{paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/MainMsgConsumerThread.java => paradogs-common-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java} (55%) rename paradogs-common/{paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueManager.java => paradogs-common-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java} (48%) rename paradogs-common/{paradogs-common-game-starter/src/main/java/com/paradogs/common/game => paradogs-common-core/src/main/java/com/paradogs/common/core}/queue/QueueConsumerThread.java (88%) rename paradogs-common/{paradogs-common-game-starter/src/main/java/com/paradogs/common/game => paradogs-common-core/src/main/java/com/paradogs/common/core}/queue/QueueProperties.java (65%) delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java create mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java delete mode 100644 paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/DBTaskConsumerThread.java delete mode 100644 paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/InitController.java rename paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/{PRMasterServerMsgHandler.java => queue/MasterMsgConsumer.java} (58%) diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java index 748b770..76d5a47 100644 --- a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java +++ b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java @@ -1,7 +1,6 @@ package com.paradogs.common.connector; import com.paradogs.common.core.events.ChannelActiveEvent; -import com.paradogs.common.core.utils.ConnectionUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; @@ -17,7 +16,6 @@ public class EventHandler { @EventListener(ChannelActiveEvent.class) public void onChannelActiveEvent(ChannelActiveEvent event) { - ConnectionUtils.saveNewConn(event.getCtx().channel()); log.info("a new client connect: [{}]", event.getCtx().channel().remoteAddress().toString()); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/CoreStarter.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/CoreStarter.java index d2ee95f..d980c48 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/CoreStarter.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/CoreStarter.java @@ -1,7 +1,9 @@ package com.paradogs.common.core; +import com.paradogs.common.core.annoations.EnableParadogs; import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java index 98e53e5..c9a36a3 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java @@ -43,7 +43,7 @@ public class PRMsgMappingHolder { * @param route * @return */ - public static Class getMsgMappingClass(String route) { + public static Class getMsgMappingClass(String route) { MsgMapping msgMapping = PRMsgMappingHolder.getMsgMapping(route); if (msgMapping == null || msgMapping.getMsgClass() == null || msgMapping.getMsgClass().isAssignableFrom(void.class)) { return null; diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java index d75c14c..cdd3635 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java @@ -2,7 +2,8 @@ package com.paradogs.common.core.annoations.rpc; import com.paradogs.common.core.events.RPCRespEvent; import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.MsgContextHolder; +import com.paradogs.common.core.msg.GCMsg; +import com.paradogs.common.core.msg.PRMsgContextHolder; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -35,28 +36,34 @@ public class RpcResponseResolver { * @param */ @EventListener(RPCRespEvent.class) - private void onRpcMsgResponse(RPCRespEvent event) { + private void onRpcMsgResponse(RPCRespEvent event) { - if (!event.getMsg().getMsgHeader().isResp()) { - return; - } + String key = getReplyMsgKey(event.getMsg()); try { // 执行回调方法 - String key = getMsgKey(event.getMsg().getMsgHeader().getRoute(), event.getMsg().getMsgHeader().getReplyMsgId()); RespData respInfo = waitRespMap.get(key); - if (respInfo != null && respInfo.getPromise() != null) { - // 设置上下文 - MsgContextHolder.setContext(respInfo.getMsgContextHolder()); - // 标记任务完成,执行回调 - boolean isSuccess = respInfo.getPromise().complete(respInfo.getReturnClass().cast(event.getMsg())); - if (!isSuccess) {log.error("RPC fail: {}", respInfo);} + if (respInfo == null) { + log.warn("Missing callback listener, maybe timeout"); + return; + } + if (respInfo.getPromise() == null) { + log.warn(""); + return; } + // 设置上下文 + PRMsgContextHolder.setContext(respInfo.getMsgContextHolder()); + + // 标记任务完成,执行回调 + boolean isSuccess = respInfo.getPromise().complete(respInfo.getReturnClass().cast(event.getMsg())); + if (!isSuccess) {log.error("Callback promise invoke is fail: {}", respInfo);} + } catch (Exception e) { log.error("{}", e.getMessage(), e); } finally { // 处理完毕移除响应监听 - waitRespMap.remove(getMsgKey(event.getMsg())); + waitRespMap.remove(key); + log.debug("release callback listener: {}", key); } } @@ -66,16 +73,16 @@ public class RpcResponseResolver { * @param cgMsgId * @param promise */ - public void on4Once(String route, String cgMsgId, Class returnClass, CompletableFuture promise) { - this.waitRespMap.put(getMsgKey(route, cgMsgId), new RespData(returnClass, promise, MsgContextHolder.getSnapshot())); + public void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { + this.waitRespMap.put(getMsgKey(route, cgMsgId), new RespData(returnClass, promise, PRMsgContextHolder.getSnapshot())); } - public static String getMsgKey(String route, String id) { + public static String getMsgKey(String route, Long id) { return route.substring(route.indexOf("-") + 1) + id; } - public static String getMsgKey(T msg) { - return getMsgKey(msg.getMsgHeader().getRoute(), msg.getMsgHeader().getId()); + public static String getReplyMsgKey(T msg) { + return getMsgKey(msg.getMsgHeader().getRoute(), msg.getMsgHeader().getReplyMsgId()); } @Data @@ -96,7 +103,7 @@ public class RpcResponseResolver { /** * 开始监听时的上下文状态 */ - private MsgContextHolder.Snapshot msgContextHolder; + private PRMsgContextHolder.Snapshot msgContextHolder; } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/loop/PdgIdleLoop.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java similarity index 64% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/loop/PdgIdleLoop.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java index 6f52552..379c56a 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/loop/PdgIdleLoop.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations.loop; +package com.paradogs.common.core.annoations.tick; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -8,9 +8,9 @@ import java.lang.annotation.Target; /** * @author: yumi * @date: 2023/8/4 9:54 - * @Description: TODO + * @Description: 添加上该注解的方法,会在每次主循环执行一次 */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) -public @interface PdgIdleLoop { +public @interface PRTick { } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java index eaa5253..eb76408 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java @@ -39,6 +39,12 @@ public class NettyConfiguration { public PRMasterClientChannelInitializer PRMasterClientChannelInitializer(PRMasterClientMsgHandler clientMsgHandler) { return new PRMasterClientChannelInitializer(clientMsgHandler); } + + @Bean + public PRAbstractServerMsgHandler serverMsgHandler() { + return new PRDefaultMsgHandler(); + } + @Bean public PRMasterClientMsgHandler PRMasterClientMsgHandler() { return new PRMasterClientMsgHandler(); diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/QueueConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/QueueConfiguration.java similarity index 44% rename from paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/QueueConfiguration.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/QueueConfiguration.java index e395343..b5186e4 100644 --- a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/QueueConfiguration.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/QueueConfiguration.java @@ -1,12 +1,14 @@ -package com.paradogs.common.game.config; +package com.paradogs.common.core.config; -import com.paradogs.common.game.queue.DBTaskConsumerThread; -import com.paradogs.common.game.queue.MainMsgConsumerThread; -import com.paradogs.common.game.queue.QueueManager; -import com.paradogs.common.game.queue.QueueProperties; +import com.paradogs.common.core.queue.AbstractMsgConsumer; +import com.paradogs.common.core.queue.MsgDefaultConsumer; +import com.paradogs.common.core.queue.PRQueueHolder; +import com.paradogs.common.core.queue.QueueProperties; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; +import org.springframework.core.annotation.Order; /** * @author: yumi @@ -18,14 +20,9 @@ public class QueueConfiguration { @Bean @Scope("prototype") - public DBTaskConsumerThread dbTaskConsumerThread() { - return new DBTaskConsumerThread(); - } - - @Bean - @Scope("prototype") - public MainMsgConsumerThread mainMsgConsumerThread() { - return new MainMsgConsumerThread(); + @ConditionalOnMissingBean(AbstractMsgConsumer.class) + public AbstractMsgConsumer defaultMsgConsumer() { + return new MsgDefaultConsumer(); } @Bean @@ -34,10 +31,11 @@ public class QueueConfiguration { } @Bean - public QueueManager queueManager(QueueProperties queueProperties) { - QueueManager queueManager = new QueueManager(); + public PRQueueHolder prQueueHolder(QueueProperties queueProperties) { + PRQueueHolder queueManager = new PRQueueHolder(); queueManager.setQueueProperties(queueProperties); return queueManager; } + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java index e4d1256..7100f8b 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java @@ -1,6 +1,7 @@ package com.paradogs.common.core.config; import com.paradogs.common.core.annoations.rpc.RpcResponseResolver; +import com.paradogs.common.core.msg.CommonController; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -16,4 +17,9 @@ public class RPCConfiguration { public RpcResponseResolver rpcResponseResolver() { return new RpcResponseResolver(); } + + @Bean + public CommonController commonController() { + return new CommonController(); + } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java index 6dd01f1..59c97bf 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java @@ -1,6 +1,5 @@ package com.paradogs.common.core.config; -import com.paradogs.common.core.utils.ConnectionUtils; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.MsgUtils; import com.paradogs.common.core.utils.SpringUtils; @@ -18,11 +17,6 @@ public class UtilsConfiguration { return new EventUtils(); } - @Bean - public ConnectionUtils connectionUtils() { - return new ConnectionUtils(); - } - @Bean public SpringUtils springUtils() { return new SpringUtils(); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java index a69da49..cdd5bdf 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java @@ -1,6 +1,6 @@ package com.paradogs.common.core.listeners; -import com.paradogs.common.core.annoations.loop.PdgIdleLoop; +import com.paradogs.common.core.annoations.tick.PRTick; import com.paradogs.common.core.netty.events.MainLoopEvent; import com.paradogs.common.core.utils.SpringUtils; import lombok.extern.slf4j.Slf4j; @@ -23,7 +23,7 @@ public class PdgEventListener { @EventListener(MainLoopEvent.class) public void onMainLoopEvent(MainLoopEvent event) { - for (Method method : SpringUtils.getMethodsWithAnnotation(PdgIdleLoop.class)) { + for (Method method : SpringUtils.getMethodsWithAnnotation(PRTick.class)) { /** * 待优化:方法参数注入,其他地方也有,可以提取成一个方法 */ diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java index 5ae3b9c..20c34b8 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java @@ -1,7 +1,12 @@ package com.paradogs.common.core.msg; import com.paradogs.common.core.annoations.request.PdgController; +import com.paradogs.common.core.annoations.request.PdgMsg; import com.paradogs.common.core.annoations.request.PdgMsgMapping; +import com.paradogs.common.core.events.RPCRespEvent; +import com.paradogs.common.core.netty.server.ServerProperties; +import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.MsgUtils; import lombok.extern.slf4j.Slf4j; /** @@ -19,4 +24,26 @@ public class CommonController { log.info("dist test success ..."); } + /** + * 回调处理,通知回调事件 + * GC 消息统一走这里,保证也按队列顺序处理 + * @param msg + */ + @PdgMsgMapping("callback") + public void callback(ByteBodyMsg msg) { + if (msg.getMsgHeader().getReplyMsgId() == null) { + log.error("Not found Callback header.replyMsgId: {}", msg); + return; + } + BaseMsg callbackMsg = new BaseMsg(); + callbackMsg.setMsgHeader(msg.getMsgHeader()); + callbackMsg.deserialization(msg.getDataBytes()); + EventUtils.publishEvent(new RPCRespEvent(callbackMsg)); + } + + @PdgMsgMapping("initInfo") + public void initInfo(@PdgMsg ServerProperties properties) { + log.info("Init success: {}", properties); + } + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java index 11a9f49..2cb8a91 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java @@ -13,5 +13,5 @@ public abstract class GCMsg extends BaseMsg { /** * 回复的 CG 消息 ID */ - private int cgMsgId; + private Long targetCGMsgId; } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java index 3aeae96..2513197 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java @@ -6,11 +6,13 @@ import com.baidu.bjf.remoting.protobuf.ProtobufProxy; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; import com.google.protobuf.InvalidProtocolBufferException; import com.paradogs.common.core.utils.BeanUtils; +import com.paradogs.common.core.utils.RandomUtils; import com.paradogs.common.core.utils.RouteUtils; import io.netty.buffer.ByteBuf; import lombok.Data; import java.io.IOException; +import java.time.LocalDateTime; import java.util.Date; import java.util.UUID; @@ -31,8 +33,8 @@ public class MsgHeader implements IMsgSerializable { /** * 消息唯一 ID,用于请求 - 响应 */ - @Protobuf(fieldType = FieldType.STRING, order = 1, required = false) - private String id = UUID.randomUUID().toString(); + @Protobuf(fieldType = FieldType.INT64, order = 1, required = false) + private Long id = RandomUtils.spawnSnowId(); /** * 消息类型,替代路由地址(java 使用类型对应,nodejs 可以使用字符串对应方法) @@ -48,45 +50,36 @@ public class MsgHeader implements IMsgSerializable { private String route; /** - * 玩家 ID -// * 本框架设计用户必须登录后才能调用相关接口,如果用户未登录,则无法请求任何接口(原因是服务返回网关时,找不到对应的玩家返回) -// * 可以自己在玩家匿名时,设定一个 playerId,玩家登录后再设置玩家真实的 playerId + * 回复的消息 ID */ - @Protobuf(fieldType = FieldType.INT64, order = 3, required = false) - private Long playerId; + @Protobuf(fieldType = FieldType.STRING, order = 3, required = false) + private String sendServer; /** - * 消息生成的时间戳 + * 回复的消息 ID */ @Protobuf(fieldType = FieldType.INT64, order = 4, required = false) - private Long timestamp; + private Long replyMsgId; + +// /** +// * 消息生成的时间戳 +// */ +// @Protobuf(fieldType = FieldType.INT64, order = 3, required = false) +// private Long timestamp; /** - * 回复的 CG 消息 ID + * >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 额外 Props */ - @Protobuf(fieldType = FieldType.STRING, order = 5, required = false) - private String replyMsgId; /** - * 回调时发送的路由地址 + * 玩家 ID */ - @Protobuf(fieldType = FieldType.STRING, order = 6, required = false) - private String callbackRoute; + private Long pId; /** - * >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 额外 Props + * 创建时间 */ - -// /** -// * Channel 上下文 -// */ -// private ChannelHandlerContext ctx; - - public MsgHeader() { - // - this.playerId = 1L; - this.timestamp = new Date().getTime(); - } + private LocalDateTime createTime = LocalDateTime.now(); /** * 序列化(编码) @@ -130,7 +123,4 @@ public class MsgHeader implements IMsgSerializable { return this.route.substring(0, this.route.indexOf("-")); } - public boolean isResp() { - return this.route.endsWith(RouteUtils.RESPONSE_SUFFIX); - } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgContextHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java similarity index 64% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgContextHolder.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java index d685d27..d98b72d 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgContextHolder.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java @@ -10,7 +10,7 @@ import lombok.*; * @Description: 消息上下文 */ @Data -public class MsgContextHolder { +public class PRMsgContextHolder { @Getter private static ChannelHandlerContext ctx; @@ -20,26 +20,26 @@ public class MsgContextHolder { public static void setContext(ChannelHandlerContext ctx, Long playerId) { - MsgContextHolder.ctx = ctx; - MsgContextHolder.playerId = playerId; + PRMsgContextHolder.ctx = ctx; + PRMsgContextHolder.playerId = playerId; } public static void setContext(Snapshot snapshot) { - MsgContextHolder.ctx = snapshot.ctx; - MsgContextHolder.playerId = snapshot.playId; + PRMsgContextHolder.ctx = snapshot.ctx; + PRMsgContextHolder.playerId = snapshot.playId; } /** * 返回当前上下文快照 */ - public static MsgContextHolder.Snapshot getSnapshot() { - return new MsgContextHolder.Snapshot(MsgContextHolder.ctx, playerId); + public static PRMsgContextHolder.Snapshot getSnapshot() { + return new PRMsgContextHolder.Snapshot(PRMsgContextHolder.ctx, playerId); } public static Channel getChannel() { - if (MsgContextHolder.getCtx() != null) { - return MsgContextHolder.getCtx().channel(); + if (PRMsgContextHolder.getCtx() != null) { + return PRMsgContextHolder.getCtx().channel(); } return null; } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java index 7a9ef37..b2485b0 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java @@ -6,4 +6,5 @@ package com.paradogs.common.core.netty; * @Description: TODO */ public abstract class PRAbstractClientMsgHandler extends PRAbstractMsgHandler { + } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java index de24e3f..b06d206 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java @@ -1,11 +1,12 @@ package com.paradogs.common.core.netty; -import com.paradogs.common.core.events.ChannelActiveEvent; -import com.paradogs.common.core.events.ChannelInactiveEvent; import com.paradogs.common.core.events.ReceiveMsgEvent; import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.msg.MsgContextHolder; +import com.paradogs.common.core.msg.PRMsgContextHolder; +import com.paradogs.common.core.msg.MsgHeader; +import com.paradogs.common.core.netty.server.PRConnectionHolder; +import com.paradogs.common.core.queue.PRQueueHolder; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.SpringUtils; import io.netty.channel.ChannelHandlerContext; @@ -23,12 +24,17 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler promise = initRPC.getServerInfo(); +// promise.whenComplete((properties, throwable) -> { +// if (throwable != null) { +// log.error("{}", throwable.getCause().getMessage()); +// return; +// } +// PRConnectionHolder.initConnection(ctx.channel(), properties); +// EventUtils.publishEvent(new ChannelActiveEvent(ctx)); +// }); } /** @@ -77,7 +118,7 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler clientMap = new HashMap<>(); + + /** + * 未初始化的连接 Map + */ + @Getter + private static Map uninitializedConnMap = new HashMap<>(); + + /** + * 正常的连接 Map + */ + @Getter + private static Map connMap = new HashMap<>(); + + /** + * 不需要权限的路由,一般为初始化操作等 + */ + private static List excludeRoutes = new ArrayList<>(); + + static { + excludeRoutes.add("_paradogs.initInfo"); + } + + + public static void setServer(PRServer server) { + PRConnectionHolder.server = server; + } + + public static void addClient(PRClient client) { + PRConnectionHolder.clientMap.put(client.getChannel(), client); + } + + public static void addNewConnection(PRConnection conn) { + PRConnectionHolder.uninitializedConnMap.put(conn.getChannel(), conn); + } + + public static void initConnection(Channel channel, ServerProperties properties) { + PRConnection conn = uninitializedConnMap.remove(channel); + conn.setConnInfo(properties); + connMap.put(conn.getConnInfo().getKey(), conn); + } + + public static String getConnKey(Channel channel) { + if (connMap.containsKey(channel)) { + PRConnection conn = connMap.get(channel); + return conn.getConnInfo().getKey(); + } + return null; + } + + public static void removeConn(Channel channel) { + PRConnectionHolder.uninitializedConnMap.remove(channel); + for (Map.Entry entry : PRConnectionHolder.connMap.entrySet()) { + String key = entry.getKey(); + PRConnection conn = PRConnectionHolder.connMap.get(key); + if (conn.getChannel() == channel) { + PRConnectionHolder.connMap.remove(key); + return; + } + + } + + } + + /** + * Channel 是否初始化 + * @param channel + * @return + */ + public static boolean isInitializedChannel(Channel channel) { + if (channel == null) { + return false; + } + if (PRConnectionHolder.clientMap.containsKey(channel) || PRConnectionHolder.connMap.containsKey(channel)) { + return true; + } + return false; + } + + public static boolean isExcludeRoute(String route) { + for (String excludeRoute : excludeRoutes) { + if (route.contains(excludeRoute)) { + return true; + } + } + return false; + + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java index 8116311..19e3025 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java @@ -60,12 +60,12 @@ public class PRServer implements ApplicationRunner { .childHandler(channelInitializer); this.channel = this.server.bind(properties.getPort()).sync().channel(); - log.info("Server start success: [{} localhost:{}]", properties.getName(), properties.getPort()); + log.info("Server start success: [{} localhost:{}]", properties.getKey(), properties.getPort()); this.state = State.RUNNING; EventUtils.publishEvent(new ServerStartEvent(System.currentTimeMillis() - startTime)); channel.closeFuture().addListener(future -> { - log.info("Server stop: [{}]", this.properties.getName()); + log.info("Server stop: [{}]", this.properties.getKey()); }); } catch (InterruptedException e) { @@ -100,7 +100,7 @@ public class PRServer implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { this.start(); - PRServerHolder.setServer(this); + PRConnectionHolder.setServer(this); } public enum State { diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServerHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServerHolder.java deleted file mode 100644 index 0d7d3af..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServerHolder.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.paradogs.common.core.netty.server; - -import com.paradogs.common.core.netty.clients.PRClient; -import io.netty.channel.Channel; -import lombok.Getter; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author: yumi - * @date: 2023/8/26 17:18 - * @Description: TODO - */ -public class PRServerHolder { - - @Getter - private static PRServer server; - - @Getter - private static List clients = new ArrayList<>(); - - - public static void setServer(PRServer server) { - PRServerHolder.server = server; - } - - public static void addClient(PRClient client) { - PRServerHolder.clients.add(client); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java index 92c57ca..d65c9fc 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java @@ -43,18 +43,18 @@ public class ServerProperties extends CGMsg { /** * 服务名称 */ - private String name; + private String key; /** * 是否为 master,用于判断 master 不连接自身 */ private boolean master = false; - public String getName() { - if (StringUtils.isNotBlank(this.name)) { - return this.name; + public String getKey() { + if (StringUtils.isNotBlank(this.key)) { + return this.key; } - return this.name = type + "-" + UUID.randomUUID().toString().replace("-", ""); + return this.key = type + "-" + UUID.randomUUID().toString().replace("-", ""); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/AbstractMsgConsumer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/AbstractMsgConsumer.java new file mode 100644 index 0000000..3583d48 --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/AbstractMsgConsumer.java @@ -0,0 +1,21 @@ +package com.paradogs.common.core.queue; + +import com.paradogs.common.core.msg.ByteBodyMsg; +import com.paradogs.common.core.netty.events.MainLoopEvent; +import com.paradogs.common.core.utils.EventUtils; + +/** + * @author: yumi + * @date: 2023/11/6 17:35 + * @Description: TODO + */ +public abstract class AbstractMsgConsumer extends QueueConsumerThread { + + private MainLoopEvent mainLoopEvent = new MainLoopEvent(); + + @Override + public void loop() { + EventUtils.publishEvent(mainLoopEvent); + } + +} diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/MainMsgConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java similarity index 55% rename from paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/MainMsgConsumerThread.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java index 5bd1da1..f1c8fb5 100644 --- a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/MainMsgConsumerThread.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java @@ -1,10 +1,12 @@ -package com.paradogs.common.game.queue; +package com.paradogs.common.core.queue; import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.ByteBodyMsg; import com.paradogs.common.core.netty.events.MainLoopEvent; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.MsgUtils; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -16,26 +18,15 @@ import java.lang.reflect.InvocationTargetException; * @Description: 消息处理线程 */ @Slf4j -@Component -@Scope("prototype") -public class MainMsgConsumerThread extends QueueConsumerThread { +public class MsgDefaultConsumer extends AbstractMsgConsumer { /** * 消息处理 * @param msg - * @throws InvocationTargetException - * @throws IllegalAccessException */ @Override - public void handle(BaseMsg msg) throws InvocationTargetException, IllegalAccessException { + public void handle(ByteBodyMsg msg) throws InvocationTargetException, IllegalAccessException { MsgUtils.adapterHandle(msg); } - private MainLoopEvent mainLoopEvent = new MainLoopEvent(); - - @Override - public void loop() { - EventUtils.publishEvent(mainLoopEvent); - } - } diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueManager.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java similarity index 48% rename from paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueManager.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java index f75124b..cb5a441 100644 --- a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueManager.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java @@ -1,4 +1,4 @@ -package com.paradogs.common.game.queue; +package com.paradogs.common.core.queue; import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.utils.SpringUtils; @@ -6,12 +6,11 @@ import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationListener; -import org.springframework.context.event.ContextRefreshedEvent; -import org.springframework.stereotype.Component; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; import java.util.*; -import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ConcurrentHashMap; /** * @author: yumi @@ -19,8 +18,7 @@ import java.util.concurrent.BlockingQueue; * @Description: 队列管理器 */ @Slf4j -@Component -public class QueueManager implements ApplicationListener { +public class PRQueueHolder implements ApplicationRunner { @Getter @Setter @@ -31,40 +29,35 @@ public class QueueManager implements ApplicationListener * 队列集合 * 待优化:有一些业务不需要保证顺序性,可以创建一个队列由多个消费者消费,不需要一对一,提高效率 */ - private static Map>> queueMap; + private static Map> consumerMap = new ConcurrentHashMap<>(); /** * 初始化相关队列 * ps: 这里要用自定义方法不能用构造器,因为构造器 properties 还未注入完成(空指针) */ public void init() { - - // 初始化队列 - queueMap = new HashMap<>(); - initQueue(QueueType.MAIN, queueProperties.getMainSize()); - - initQueue(QueueType.DB, queueProperties.getDbSize()); - } public void initQueue(QueueType type, int size) { if (size == 0) {return;} - queueMap.put(type, new ArrayList<>(size)); for (int i = 0; i < size; i++) { // 原型模式 getBean - QueueConsumerThread queueConsumerThread = SpringUtils.getBean(type.queueConsumerThreadClass); - queueMap.get(type).add(queueConsumerThread.getQueue()); - queueConsumerThread.start(); + QueueConsumerThread queueConsumer = SpringUtils.getBean(type.queueConsumerThreadClass); + if (i == 0) { // 第一个线程额外负责处理循环检测 + queueConsumer.setLoop(true); + } + queueConsumer.setKey(type.key + "-" + (i + 1)); + queueConsumer.start(); + if (!consumerMap.containsKey(type)) { + consumerMap.put(type, new ArrayList<>()); + } + consumerMap.get(type).add(queueConsumer); } } - /** - * Spring 加载好后初始化 - * @param event - */ @Override - public void onApplicationEvent(ContextRefreshedEvent event) { + public void run(ApplicationArguments args) throws Exception { this.init(); } @@ -73,39 +66,33 @@ public class QueueManager implements ApplicationListener /** * 消息逻辑处理 */ - MAIN(MainMsgConsumerThread.class), + MAIN(AbstractMsgConsumer.class, "MainMsgConsumer"); + /** - * DB 持久化处理 + * 消费对象类型 */ - DB(DBTaskConsumerThread.class); - private Class queueConsumerThreadClass; + /** + * 线程描述标识符 + */ + private String key; - QueueType(Class queueConsumerThreadClass) { + QueueType(Class queueConsumerThreadClass, String key) { this.queueConsumerThreadClass = queueConsumerThreadClass; + this.key = key; } } - public void pushMainMsg(BaseMsg msg) throws InterruptedException { - banl(queueMap.get(QueueType.MAIN), msg).put(msg); - } - - public void pushDBMsg(BaseMsg msg) throws InterruptedException { - banl(queueMap.get(QueueType.DB), msg).put(msg); + public static void putMsg(QueueType queueType, BaseMsg msg) throws InterruptedException { + balance(consumerMap.get(queueType), msg).produce(msg); } - // 不需要出队方法,由线程直接消费 - // ==================================== - - - /** * 待优化,负载均衡规则,可以换成一个接口 * @return */ - private BlockingQueue banl(List> list, BaseMsg msg) { - return list.get((int) (msg.getMsgHeader().getPlayerId() % list.size())); -// return list.get(random.nextInt(list.size())); + private static QueueConsumerThread balance(List list, BaseMsg msg) { + return list.get((int) (msg.getMsgHeader().getPId() % list.size())); } diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java similarity index 88% rename from paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueConsumerThread.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java index 0fb690b..3d4f40f 100644 --- a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueConsumerThread.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java @@ -1,4 +1,4 @@ -package com.paradogs.common.game.queue; +package com.paradogs.common.core.queue; import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; import com.paradogs.common.core.utils.StringUtils; @@ -43,8 +43,16 @@ public abstract class QueueConsumerThread extends Thread { /** * 唯一标识 */ + @Setter private String key; + /** + * 是否执行 Tick 循环,相同类型线程只要一个循环即可 + */ + @Getter + @Setter + private boolean isLoop = false; + /** * 全局异常处理转发器 */ @@ -75,8 +83,10 @@ public abstract class QueueConsumerThread extends Thread { while (true) { - // 循环检测事件 - loop(); + if (isLoop) { + // 循环检测事件 + loop(); + } T msg = queue.poll(); @@ -111,7 +121,7 @@ public abstract class QueueConsumerThread extends Thread { return this.key; } - public Boolean product(T data) { + public Boolean produce(T data) { return this.queue.add(data); } diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueProperties.java similarity index 65% rename from paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueProperties.java rename to paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueProperties.java index 89206d3..6d8aa4a 100644 --- a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/QueueProperties.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueProperties.java @@ -1,4 +1,4 @@ -package com.paradogs.common.game.queue; +package com.paradogs.common.core.queue; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -17,13 +17,8 @@ import org.springframework.stereotype.Component; public class QueueProperties { /** - * 消息逻辑处理队列(待优化:暂时为 1,heartbeat 重复执行问题未解决) + * 待优化:消息逻辑处理队列(待优化:暂时为 1,heartbeat 重复执行问题未解决) */ private int mainSize = 1; - /** - * DB 持久化队列 - */ - private int dbSize = 3; - } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java index 135450e..48031f5 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java @@ -15,7 +15,7 @@ import java.util.concurrent.CompletableFuture; @PdgRPC("master") public interface InitRPC { - @PdgRPCMapping(value = "_init.clientInfo") - CompletableFuture getClientInfo(@PdgMsg ServerProperties msg); + @PdgRPCMapping(value = "_init.serverInfo") + CompletableFuture getServerInfo(); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java deleted file mode 100644 index 5d98ce4..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ConnectionUtils.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.paradogs.common.core.utils; - -import com.paradogs.common.core.events.ChannelActiveEvent; -import com.paradogs.common.core.events.ChannelInactiveEvent; -import com.paradogs.common.core.pojo.Connection; -import io.netty.channel.Channel; -import lombok.Getter; -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -import java.util.Collection; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * @author: yumi - * @date: 2023/8/15 15:34 - * @Description: TODO - */ -@Slf4j -@Component -public class ConnectionUtils { - - private static Map connectionMap = new ConcurrentHashMap<>(); - /** - * server[channel] - */ - @Setter - @Getter - private static Channel masterChannel; - - - public static Connection saveNewConn(Channel channel) { - Connection conn = new Connection(channel); - if (connectionMap.containsKey(channel)) { - log.warn("Connection is already exists: {}", channel); - } - connectionMap.put(channel, conn); - return conn; - } - - public static Connection getConn(Channel channel) { return connectionMap.get(channel); } - public static Collection getConns() { - return connectionMap.values(); - } - - - public static void removeConn(Channel channel) { - connectionMap.remove(channel); - } - - public static String getServer(Channel channel) { - Connection connection = connectionMap.get(channel); - if (connection != null) { - return connection.getTargetServer(); - } - return null; - } - - /** - * 待优化: O(1) map - * @param server - * @return - */ - public static Channel getChannel(String server) { - for (Connection conn : connectionMap.values()) { - if (conn.getTargetServer().equals(server)) { - return conn.getChannel(); - } - } - return null; - } - - - @EventListener(ChannelActiveEvent.class) - public void onChannelActiveEvent(ChannelActiveEvent event) { - ConnectionUtils.saveNewConn(event.getCtx().channel()); - } - @EventListener(ChannelInactiveEvent.class) - public void onChannelActiveEvent(ChannelInactiveEvent event) { - ConnectionUtils.removeConn(event.getCtx().channel()); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java index 535b721..c295f6d 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java @@ -41,7 +41,7 @@ public class EventUtils implements ApplicationEventPublisherAware { * @param promise * @param */ - public static void on4Once(String route, String cgMsgId, Class returnClass, CompletableFuture promise) { + public static void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { SpringUtils.getBean(RpcResponseResolver.class).on4Once(route, cgMsgId, returnClass, promise); } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java index 6a09a52..13659d1 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java @@ -1,14 +1,11 @@ package com.paradogs.common.core.utils; import com.paradogs.common.core.annoations.request.PRMsgMappingHolder; -import com.paradogs.common.core.annoations.rpc.PdgRPCHolder; import com.paradogs.common.core.events.RPCRequestEvent; -import com.paradogs.common.core.events.RPCRespEvent; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.msg.MsgContextHolder; -import com.paradogs.common.core.msg.MsgHeader; +import com.paradogs.common.core.msg.*; import com.paradogs.common.core.msg.route.MsgMapping; +import com.paradogs.common.core.netty.server.PRConnection; +import com.paradogs.common.core.netty.server.PRConnectionHolder; import com.paradogs.common.core.netty.server.ServerProperties; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; @@ -19,6 +16,7 @@ import org.springframework.stereotype.Component; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.stream.Stream; @@ -42,15 +40,34 @@ public class MsgUtils { public static void send(String route, BaseMsg msg) { if (msg.getMsgHeader() == null) { msg.setMsgHeader(new MsgHeader()); + if (StringUtils.isBlank(route)) { + msg.getMsgHeader().setRoute(route); + } } - Channel channel = serverProperties.isMaster() ? ConnectionUtils.getChannel(RouteUtils.getServer(route)) : ConnectionUtils.getMasterChannel(); + Map connMap = PRConnectionHolder.getConnMap(); + PRConnection conn = connMap.get(RouteUtils.getServer(route)); + msg.getMsgHeader().setRoute(route); + if (conn.getChannel() != null) { + conn.getChannel().writeAndFlush(msg); + log.info("Send msg to >> {}", msg.getMsgHeader().getRoute()); + } else { + log.warn("Channel is null, route: {}", route); + } + } + public static void send(String route, BaseMsg msg, Channel channel) { + if (msg.getMsgHeader() == null) { + msg.setMsgHeader(new MsgHeader()); + } + if (StringUtils.isBlank(msg.getMsgHeader().getRoute())) { + msg.getMsgHeader().setRoute(route); + } if (channel != null) { channel.writeAndFlush(msg); log.info("Send msg to >> {}", msg.getMsgHeader().getRoute()); } else { - log.warn("channel is null, route: {}", route); + log.warn("Channel is null, route: {}", route); } } public static void send(BaseMsg msg) { @@ -62,6 +79,7 @@ public class MsgUtils { * @param msg */ public static void forward(BaseMsg msg) { + msg.getMsgHeader().setSendServer(PRConnectionHolder.getConnKey(PRMsgContextHolder.getChannel())); MsgUtils.send(msg); } @@ -77,7 +95,6 @@ public class MsgUtils { if (msg.getMsgHeader() == null) { msg.setMsgHeader(new MsgHeader()); } - msg.getMsgHeader().setCallbackRoute(RouteUtils.genRespRoute(route, serverProperties.getType())); // 发起请求 MsgUtils.send(route, msg); // 开启响应监听 @@ -94,15 +111,15 @@ public class MsgUtils { * 获取当前发送消息的 Ctx */ public static ChannelHandlerContext getCurCtx() { - return MsgContextHolder.getCtx(); + return PRMsgContextHolder.getCtx(); } /** * 获取当前发送消息的 Channel */ public static Channel getCurChannel() { - if (MsgContextHolder.getCtx() == null) {return null;} - return MsgContextHolder.getCtx().channel(); + if (PRMsgContextHolder.getCtx() == null) {return null;} + return PRMsgContextHolder.getCtx().channel(); } @EventListener(RPCRequestEvent.class) @@ -126,21 +143,7 @@ public class MsgUtils { log.warn("Not found Mapping Method, route: {}", header.getRoute()); return; } - Class msgClass = PRMsgMappingHolder.getMsgMappingClass(header.getRouteMethod()); - - // 获取请求参数对象 - Object param = msgClass == null ? null : ProtoUtils.decode(msg.getDataBytes(), msgClass); - - /** - * 如果是响应的回调消息,则通知回调事件 - */ - if (header.isResp()) { - BaseMsg callbackMsg = new BaseMsg(); - callbackMsg.setMsgHeader(msg.getMsgHeader()); - callbackMsg.deserialization(msg.getDataBytes()); - EventUtils.publishEvent(new RPCRespEvent(callbackMsg)); - return; - } + Class msgClass = PRMsgMappingHolder.getMsgMappingClass(header.getRouteMethod()); /** * 执行对应 Handler 方法 @@ -158,11 +161,23 @@ public class MsgUtils { Object result = method.invoke( pdgController, Stream.of(method.getParameterTypes()) - .map(type -> param.getClass().isAssignableFrom(type) ? param : null) + .map(type -> { + // 转换为参数类型传参 + if (type.isAssignableFrom(msgClass)) { + if (msgClass.isAssignableFrom(ByteBodyMsg.class)) { + return msg; + } else { + BaseMsg param = ProtoUtils.decode(msg.getDataBytes(), msgClass); + param.setMsgHeader(msg.getMsgHeader()); + return param; + } + } + return null; + }) .toArray() ); - if (result == null || StringUtils.isBlank(msg.getMsgHeader().getCallbackRoute())) { + if (result == null) { return; } if (!(result instanceof BaseMsg)) { @@ -174,8 +189,6 @@ public class MsgUtils { // 准备返回消息 BaseMsg gcMsg = (BaseMsg) result; MsgHeader gcHeader = new MsgHeader(); - gcHeader.setPlayerId(msg.getMsgHeader().getPlayerId()); - gcHeader.setRoute(msg.getMsgHeader().getCallbackRoute()); gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); gcMsg.setMsgHeader(gcHeader); @@ -184,7 +197,7 @@ public class MsgUtils { */ MsgUtils.send( // msg.getMsgHeader().getCtx().channel(), - gcMsg.getMsgHeader().getRoute(), + header.getSendServer() + "-_paradogs.callback", gcMsg ); log.info("reply >> {}", msg.getMsgHeader()); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java new file mode 100644 index 0000000..40ee54d --- /dev/null +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java @@ -0,0 +1,16 @@ +package com.paradogs.common.core.utils; + +import java.util.Random; + +/** + * @author: yumi + * @date: 2023/11/5 19:19 + * @Description: TODO + */ +public class RandomUtils { + + public static Long spawnSnowId() { + Random random = new Random(); + return random.nextLong(); + } +} diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index f78a22a..b332e87 100644 --- a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -6,6 +6,9 @@ com.paradogs.common.core.config.RPCConfiguration com.paradogs.common.core.CoreStarter +com.paradogs.common.core.config.QueueConfiguration + + diff --git a/paradogs-common/paradogs-common-core/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index f78a22a..b332e87 100644 --- a/paradogs-common/paradogs-common-core/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-core/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -6,6 +6,9 @@ com.paradogs.common.core.config.RPCConfiguration com.paradogs.common.core.CoreStarter +com.paradogs.common.core.config.QueueConfiguration + + diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/DBTaskConsumerThread.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/DBTaskConsumerThread.java deleted file mode 100644 index 92fd89a..0000000 --- a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/queue/DBTaskConsumerThread.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.paradogs.common.game.queue; - -import com.paradogs.common.core.msg.DBTask; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -import java.lang.reflect.InvocationTargetException; - -/** - * @author: yumi - * @date: 2023/7/28 22:47 - * @Description: DB 处理任务线程 - */ -@Slf4j -@Component -@Scope("prototype") -public class DBTaskConsumerThread extends QueueConsumerThread { - - /** - * 消息处理 - * @param task - * @throws InvocationTargetException - * @throws IllegalAccessException - */ - @Override - public void handle(DBTask task) throws InvocationTargetException, IllegalAccessException { - task.call(); - } - - @Override - public void loop() { - - } - -} diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java index c96742c..768d9ec 100644 --- a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java +++ b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java @@ -2,7 +2,7 @@ package com.paradogs.common.game.server; import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.netty.pipelines.ServerMsgHandler; -import com.paradogs.common.game.queue.QueueManager; +import com.paradogs.common.core.queue.PRQueueHolder; import io.netty.channel.ChannelHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -21,11 +21,11 @@ import org.springframework.stereotype.Component; public class GameServerMsgHandler extends ServerMsgHandler { @Autowired - private QueueManager queueManager; + private PRQueueHolder queueManager; @Override protected void processMsg(BaseMsg msg) throws Exception { - queueManager.pushMainMsg(msg); + queueManager.putMsg(msg); } } diff --git a/paradogs-common/paradogs-common-game-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-game-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index ba6cf06..cbe21a7 100644 --- a/paradogs-common/paradogs-common-game-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-game-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,6 +1,6 @@ com.paradogs.common.game.config.NettyConfiguration -com.paradogs.common.game.config.QueueConfiguration +com.paradogs.common.core.config.QueueConfiguration diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java index 6b78a35..1f4515f 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java @@ -1,6 +1,5 @@ package com.paradogs.common.master; -import com.paradogs.common.master.controller.InitController; import com.paradogs.common.master.controller.MasterController; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -13,11 +12,6 @@ import org.springframework.context.annotation.Configuration; @Configuration public class ControllerConfiguration { - @Bean - public InitController initController() { - return new InitController(); - } - @Bean public MasterController masterController() { return new MasterController(); diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java index 8bb2299..f907b3f 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java @@ -2,8 +2,7 @@ package com.paradogs.common.master; import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; -import com.paradogs.common.core.netty.PRAbstractServerMsgHandler; -import org.springframework.context.annotation.Bean; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -19,9 +18,4 @@ import org.springframework.context.annotation.Import; @Configuration public class MasterStarter { - @Bean - public PRAbstractServerMsgHandler serverMsgHandler() { - return new PRMasterServerMsgHandler(); - } - } diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/InitController.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/InitController.java deleted file mode 100644 index 796d09c..0000000 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/InitController.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.paradogs.common.master.controller; - -import com.paradogs.common.core.annoations.request.PdgController; -import com.paradogs.common.core.annoations.request.PdgMsg; -import com.paradogs.common.core.annoations.request.PdgMsgMapping; -import com.paradogs.common.core.netty.server.ServerProperties; -import com.paradogs.common.core.utils.MsgUtils; -import com.paradogs.common.core.pojo.Connection; -import com.paradogs.common.core.utils.ConnectionUtils; -import lombok.extern.slf4j.Slf4j; - -import java.util.Collection; - -/** - * @author: yumi - * @date: 2023/8/11 14:26 - * @Description: TODO - */ -@Slf4j -@PdgController -@PdgMsgMapping("_init") -public class InitController { - - /** - * 初始化记录连接的服务器数据 - * @param msg - * @return - */ - @PdgMsgMapping("clientInfo") - public ServerProperties initClientInfo(@PdgMsg ServerProperties msg) { - Connection conn = ConnectionUtils.getConn(MsgUtils.getCurChannel()); - conn.init(msg.getType(), msg.getName()); - - Collection conns = ConnectionUtils.getConns(); - for (Connection connection : conns) { - log.info("{}", connection); - } - - return msg; - } - -} diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java index 39fbbf8..21ad0ed 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java @@ -2,9 +2,12 @@ package com.paradogs.common.master.controller; import com.paradogs.common.core.annoations.request.PdgController; import com.paradogs.common.core.annoations.request.PdgMsgMapping; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.netty.server.PRConnection; +import com.paradogs.common.core.netty.server.PRConnectionHolder; import com.paradogs.common.core.pojo.Connection; import com.paradogs.common.core.pojo.ConnectorMessage; -import com.paradogs.common.core.utils.ConnectionUtils; +import lombok.extern.slf4j.Slf4j; import java.util.Collection; import java.util.List; @@ -15,26 +18,33 @@ import java.util.stream.Collectors; * @date: 2023/8/24 17:45 * @Description: TODO */ +@Slf4j @PdgController -@PdgMsgMapping("info") +@PdgMsgMapping("_info") public class MasterController { @PdgMsgMapping("getServerInfo") - public List getServerInfo(String serverType) { - Collection conns = ConnectionUtils.getConns(); - List collect = conns.stream().filter(conn -> conn.getTargetServer().equals(serverType)).collect(Collectors.toList()); + public List getServerInfo(String serverType) { + Collection conns = PRConnectionHolder.getConnMap().values(); + List collect = conns.stream().filter(conn -> conn.getConnInfo().getType().equals(serverType)).collect(Collectors.toList()); collect.forEach(System.out::println); return collect; } - /** - * 返回一个可连接的 Connector,目前暂时只为第一个 - * @return - */ - @PdgMsgMapping("getConnector") - public ConnectorMessage getConnector() { - Collection conns = ConnectionUtils.getConns(); - Connection connection = conns.stream().filter(conn -> conn.getTargetServer().equals("connector")).findFirst().get(); - return new ConnectorMessage(connection.getHost(), connection.getPort()); +// /** +// * 返回一个可连接的 Connector,目前暂时只为第一个 +// * @return +// */ +// @PdgMsgMapping("getConnector") +// public ConnectorMessage getConnector() { +// Collection conns = ConnectionUtils.getConns(); +// Connection connection = conns.stream().filter(conn -> conn.getTargetServer().equals("connector")).findFirst().get(); +// return new ConnectorMessage(connection.getHost(), connection.getPort()); +// } + + @PdgMsgMapping("hello") + public BaseMsg hello() { + log.info("receive hello..."); + return new BaseMsg(); } } diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java index 8165ea4..602c3a9 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java @@ -1,7 +1,6 @@ package com.paradogs.common.master.events; import com.paradogs.common.core.events.ChannelActiveEvent; -import com.paradogs.common.core.utils.ConnectionUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; @@ -17,7 +16,6 @@ public class EventHandler { @EventListener(ChannelActiveEvent.class) public void onChannelActiveEvent(ChannelActiveEvent event) { - ConnectionUtils.saveNewConn(event.getCtx().channel()); log.info("a new client connect: [{}]", event.getCtx().channel().remoteAddress().toString()); } diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/PRMasterServerMsgHandler.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java similarity index 58% rename from paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/PRMasterServerMsgHandler.java rename to paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java index 8aab0be..a6498e8 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/PRMasterServerMsgHandler.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java @@ -1,35 +1,35 @@ -package com.paradogs.common.master; +package com.paradogs.common.master.queue; import com.paradogs.common.core.msg.ByteBodyMsg; import com.paradogs.common.core.msg.MsgHeader; -import com.paradogs.common.core.netty.PRAbstractServerMsgHandler; +import com.paradogs.common.core.msg.PRMsgContextHolder; +import com.paradogs.common.core.netty.server.PRConnectionHolder; import com.paradogs.common.core.netty.server.ServerProperties; +import com.paradogs.common.core.queue.AbstractMsgConsumer; import com.paradogs.common.core.utils.MsgUtils; -import io.netty.channel.ChannelHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; +import java.lang.reflect.InvocationTargetException; + /** * @author: yumi - * @date: 2023/8/26 15:56 + * @date: 2023/11/6 17:27 * @Description: TODO */ @Slf4j +@Primary // 不好控制 bean 注册顺序, @onMissingBean 会失败,使用 @Primary 覆盖默认类 @Component -@ChannelHandler.Sharable -public class PRMasterServerMsgHandler extends PRAbstractServerMsgHandler { +public class MasterMsgConsumer extends AbstractMsgConsumer { + @Autowired private ServerProperties serverProperties; - /** - * 处理消息 - * @param byteBodyMsg - * @throws Exception - */ @Override - protected void processMsg(ByteBodyMsg byteBodyMsg) throws Exception { + public void handle(ByteBodyMsg byteBodyMsg) throws InvocationTargetException, IllegalAccessException { MsgHeader header = byteBodyMsg.getMsgHeader(); diff --git a/paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 8e60f84..1f69c2a 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,9 +1,9 @@ -com.paradogs.common.master.MasterStarter - -com.paradogs.common.master.PRMasterServerMsgHandler +com.paradogs.common.master.queue.MasterMsgConsumer com.paradogs.common.master.ControllerConfiguration +com.paradogs.common.master.MasterStarter + diff --git a/paradogs-common/paradogs-common-master-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-master-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 8e60f84..1f69c2a 100644 --- a/paradogs-common/paradogs-common-master-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-common/paradogs-common-master-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,9 +1,9 @@ -com.paradogs.common.master.MasterStarter - -com.paradogs.common.master.PRMasterServerMsgHandler +com.paradogs.common.master.queue.MasterMsgConsumer com.paradogs.common.master.ControllerConfiguration +com.paradogs.common.master.MasterStarter + diff --git a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml b/paradogs-test/paradogs-test-connector/src/main/resources/application.yml index 26217d3..0ef42c3 100644 --- a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml +++ b/paradogs-test/paradogs-test-connector/src/main/resources/application.yml @@ -2,7 +2,7 @@ paradogs: server: port: 80 type: connector - name: connector-1 + key: connector-1 connector: false master: host: localhost diff --git a/paradogs-test/paradogs-test-connector/target/classes/application.yml b/paradogs-test/paradogs-test-connector/target/classes/application.yml index 26217d3..0ef42c3 100644 --- a/paradogs-test/paradogs-test-connector/target/classes/application.yml +++ b/paradogs-test/paradogs-test-connector/target/classes/application.yml @@ -2,7 +2,7 @@ paradogs: server: port: 80 type: connector - name: connector-1 + key: connector-1 connector: false master: host: localhost diff --git a/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/rpc/MasterClient.java b/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/rpc/MasterClient.java index 3be947c..f266f3f 100644 --- a/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/rpc/MasterClient.java +++ b/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/rpc/MasterClient.java @@ -14,7 +14,7 @@ import java.util.concurrent.CompletableFuture; @PdgRPC("master") public interface MasterClient { - @PdgRPCMapping("info.getConnector") + @PdgRPCMapping("_info.getConnector") CompletableFuture getConnector(); } -- Gitee From 9876b9b83517a7943c7f6eea4d4da8dac786aec5 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Thu, 9 Nov 2023 14:24:29 +0800 Subject: [PATCH 16/32] save --- .../common/core/msg/CommonController.java | 22 ++++++++++++++++++- .../core/netty/PRAbstractMsgHandler.java | 18 ++++----------- .../clients/PRMasterClientMsgHandler.java | 10 --------- .../core/netty/server/PRConnectionHolder.java | 11 +++++++--- 4 files changed, 33 insertions(+), 28 deletions(-) diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java index 20c34b8..847ca56 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java @@ -3,12 +3,20 @@ package com.paradogs.common.core.msg; import com.paradogs.common.core.annoations.request.PdgController; import com.paradogs.common.core.annoations.request.PdgMsg; import com.paradogs.common.core.annoations.request.PdgMsgMapping; +import com.paradogs.common.core.events.ChannelActiveEvent; import com.paradogs.common.core.events.RPCRespEvent; +import com.paradogs.common.core.netty.server.PRConnection; +import com.paradogs.common.core.netty.server.PRConnectionHolder; import com.paradogs.common.core.netty.server.ServerProperties; +import com.paradogs.common.core.rpc.InitRPC; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.SpringUtils; import lombok.extern.slf4j.Slf4j; +import java.time.LocalDateTime; +import java.util.concurrent.CompletableFuture; + /** * @author: yumi * @date: 2023/8/7 16:04 @@ -41,9 +49,21 @@ public class CommonController { EventUtils.publishEvent(new RPCRespEvent(callbackMsg)); } + /** + * 客户端服务器发来的初始化信息 + * @param properties + */ @PdgMsgMapping("initInfo") public void initInfo(@PdgMsg ServerProperties properties) { - log.info("Init success: {}", properties); + // 初始化连接的服务器信息(建立连接后,服务器主动发送自己的信息) + PRConnectionHolder.initConnection(PRMsgContextHolder.getChannel(), properties); + log.info("Init success: {}-{}", properties.getType(), properties.getKey()); + + BaseMsg msg = new BaseMsg(); + MsgHeader header = new MsgHeader(); + header.setRoute("master-_info.hello"); + msg.setMsgHeader(header); + PRMsgContextHolder.getChannel().writeAndFlush(msg); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java index b06d206..89d560b 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java @@ -5,6 +5,7 @@ import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; import com.paradogs.common.core.msg.ByteBodyMsg; import com.paradogs.common.core.msg.PRMsgContextHolder; import com.paradogs.common.core.msg.MsgHeader; +import com.paradogs.common.core.netty.server.PRConnection; import com.paradogs.common.core.netty.server.PRConnectionHolder; import com.paradogs.common.core.queue.PRQueueHolder; import com.paradogs.common.core.utils.EventUtils; @@ -13,6 +14,8 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import lombok.extern.slf4j.Slf4j; +import java.time.LocalDateTime; + /** * @author: yumi * @date: 2023/7/27 9:32 @@ -95,20 +98,7 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler promise = initRPC.getServerInfo(); -// promise.whenComplete((properties, throwable) -> { -// if (throwable != null) { -// log.error("{}", throwable.getCause().getMessage()); -// return; -// } -// PRConnectionHolder.initConnection(ctx.channel(), properties); -// EventUtils.publishEvent(new ChannelActiveEvent(ctx)); -// }); + PRConnectionHolder.addNewConnection(ctx.channel()); } /** diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java index 5405ceb..8ebd51f 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java @@ -27,16 +27,6 @@ public class PRMasterClientMsgHandler extends PRAbstractClientMsgHandler { log.info("Receive master message: {}", msg); } -// @Override -// public void channelActive(ChannelHandlerContext ctx) throws Exception { -//// super.channelActive(ctx); -//// log.info("Master[{}] connect success", ctx.channel().remoteAddress()); -//// BaseMsg msg = new BaseMsg(); -//// MsgHeader header = new MsgHeader(); -//// header.setRoute("master-_info.hello"); -//// msg.setMsgHeader(header); -//// ctx.channel().writeAndFlush(msg); -// } @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { super.channelActive(ctx); diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java index 603924d..b8fe0ff 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java @@ -5,6 +5,7 @@ import com.paradogs.common.core.netty.clients.PRClient; import io.netty.channel.Channel; import lombok.Getter; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -53,12 +54,16 @@ public class PRConnectionHolder { PRConnectionHolder.clientMap.put(client.getChannel(), client); } - public static void addNewConnection(PRConnection conn) { - PRConnectionHolder.uninitializedConnMap.put(conn.getChannel(), conn); + public static void addNewConnection(Channel channel) { + PRConnection conn = new PRConnection(); + conn.setCreateTime(LocalDateTime.now()); + conn.setExpiredTime(LocalDateTime.now().plusSeconds(10)); + PRConnectionHolder.uninitializedConnMap.put(channel, conn); } public static void initConnection(Channel channel, ServerProperties properties) { - PRConnection conn = uninitializedConnMap.remove(channel); + PRConnection conn = uninitializedConnMap.get(channel); + uninitializedConnMap.remove(channel); conn.setConnInfo(properties); connMap.put(conn.getConnInfo().getKey(), conn); } -- Gitee From ddf1d212f262f882f2b7bbcb6a02ba8735e2e840 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Fri, 10 Nov 2023 10:49:59 +0800 Subject: [PATCH 17/32] save --- .../com/paradogs/common/core/queue/QueueConsumerThread.java | 4 ++-- .../main/java/com/paradogs/common/master/MasterStarter.java | 1 - .../main/java/com/paradogs/test/master/MasterApplication.java | 2 ++ 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java index 3d4f40f..0b48c27 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java +++ b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java @@ -1,6 +1,7 @@ package com.paradogs.common.core.queue; import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; +import com.paradogs.common.core.utils.SpringUtils; import com.paradogs.common.core.utils.StringUtils; import lombok.Getter; import lombok.Setter; @@ -56,8 +57,7 @@ public abstract class QueueConsumerThread extends Thread { /** * 全局异常处理转发器 */ - @Autowired - private GlobalExceptionDispatch globalExceptionDispatch; + private GlobalExceptionDispatch globalExceptionDispatch = SpringUtils.getBean(GlobalExceptionDispatch.class); public QueueConsumerThread() { diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java index f907b3f..b158859 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java +++ b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java @@ -2,7 +2,6 @@ package com.paradogs.common.master; import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; diff --git a/paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java b/paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java index f5f6a45..7711cde 100644 --- a/paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java +++ b/paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java @@ -1,6 +1,8 @@ package com.paradogs.test.master; import com.paradogs.common.core.annoations.EnableParadogs; +import com.paradogs.common.core.netty.server.PRServer; +import com.paradogs.common.core.utils.SpringUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -- Gitee From 142b48d134317b2eef5391bc87af77cb767b37ee Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Mon, 13 Nov 2023 10:19:22 +0800 Subject: [PATCH 18/32] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=BA=95=E5=B1=82?= =?UTF-8?q?=E7=BD=91=E7=BB=9C=E6=9E=B6=E6=9E=84+=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=9E=B6=E6=9E=84=E8=AE=BE=E8=AE=A1=EF=BC=8C?= =?UTF-8?q?=E6=9A=82=E6=97=B6=E5=85=88=E4=B8=8D=E6=94=B9=E4=BA=86=EF=BC=8C?= =?UTF-8?q?=E6=8E=A5=E4=B8=8B=E6=9D=A5=E5=81=9A=E7=B3=BB=E7=BB=9F=E6=9E=B6?= =?UTF-8?q?=E6=9E=84=E5=92=8C=E4=B8=9A=E5=8A=A1=E6=9E=B6=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../paradogs/common/client/netty/Client.java | 85 ------------- .../netty/ClientChannelInitializer.java | 30 ----- .../client/netty/ClientContextHolder.java | 13 -- .../common/client/netty/ClientLauncher.java | 64 ---------- .../common/client/netty/ClientMsgHandler.java | 21 ---- .../common/client/netty/ClientProperties.java | 53 -------- .../common/client/utils/ClientUtils.java | 29 ----- ...ot.autoconfigure.AutoConfiguration.imports | 7 -- ...ot.autoconfigure.AutoConfiguration.imports | 7 -- .../target/classes/config/application.yml | 0 .../common/connector/PRConnectorStarter.java | 19 --- .../src/resources/config/application.yml | 6 - ...ot.autoconfigure.AutoConfiguration.imports | 1 - .../target/classes/config/application.yml | 6 - .../core/annoations/EnableParadogs.java | 32 ----- .../annoations/base/BaseImportSelector.java | 94 -------------- .../exception/PdgExceptionHandler.java | 19 --- .../exception/PdgExceptionHandlerClass.java | 19 --- .../request/PRMsgMappingHolder.java | 63 ---------- .../annoations/request/PdgMsgMapping.java | 24 ---- .../common/core/annoations/rpc/PdgRPC.java | 21 ---- .../core/annoations/rpc/PdgRPCHolder.java | 19 --- .../core/annoations/rpc/RPCProxyBean.java | 63 ---------- .../annoations/rpc/RpcResponseResolver.java | 109 ---------------- .../common/core/annoations/tick/PRTick.java | 16 --- .../core/config/UtilsConfiguration.java | 30 ----- .../core/events/ChannelInactiveEvent.java | 21 ---- .../common/core/events/ReceiveMsgEvent.java | 21 ---- .../events/ServerConnectionInitEvent.java | 17 --- .../exceptions/GlobalExceptionDispatch.java | 76 ----------- .../exceptions/SerializationException.java | 15 --- .../core/listeners/PdgEventListener.java | 51 -------- .../common/core/msg/CommonController.java | 69 ---------- .../com/paradogs/common/core/msg/DBTask.java | 41 ------ .../com/paradogs/common/core/msg/GCMsg.java | 17 --- .../common/core/msg/IMsgSerializable.java | 21 ---- .../common/core/msg/PRMsgContextHolder.java | 58 --------- .../com/paradogs/common/core/msg/VoidMsg.java | 9 -- .../netty/PRAbstractChannelInitializer.java | 67 ---------- .../core/netty/PRAbstractMsgHandler.java | 118 ------------------ .../PRAbstractServerChannelInitializer.java | 14 --- .../netty/PRAbstractServerMsgHandler.java | 9 -- .../core/netty/PRDefaultMsgHandler.java | 12 -- .../PRDefaultServerChannelInitializer.java | 18 --- .../common/core/netty/ProtocolProperties.java | 28 ----- .../netty/clients/MasterClientProperties.java | 43 ------- .../common/core/netty/clients/PRClient.java | 52 -------- .../PRMasterClientChannelInitializer.java | 18 --- .../core/netty/events/MainLoopEvent.java | 15 --- .../core/netty/server/PRConnectionHolder.java | 117 ----------------- .../common/core/pojo/ConnectorMessage.java | 22 ---- .../common/core/queue/MsgDefaultConsumer.java | 32 ----- .../common/core/queue/PRQueueHolder.java | 99 --------------- .../com/paradogs/common/core/rpc/InitRPC.java | 21 ---- .../paradogs/common/core/utils/BeanUtils.java | 48 ------- .../common/core/utils/RandomUtils.java | 16 --- .../common/core/utils/ReflectUtils.java | 37 ------ .../common/core/utils/StringUtils.java | 15 --- .../src/main/resources/config/application.yml | 0 ...ot.autoconfigure.AutoConfiguration.imports | 14 --- .../target/classes/config/application.yml | 0 .../target/maven-archiver/pom.properties | 5 - .../compile/default-compile/createdFiles.lst | 93 -------------- .../compile/default-compile/inputFiles.lst | 85 ------------- .../game/config/NettyConfiguration.java | 22 ---- .../game/server/GameServerMsgHandler.java | 31 ----- .../src/main/resources/config/application.yml | 0 ...ot.autoconfigure.AutoConfiguration.imports | 7 -- .../target/classes/config/application.yml | 0 .../paradogs/common/master/MasterStarter.java | 20 --- .../master/controller/MasterController.java | 50 -------- .../src/main/resources/config/application.yml | 0 ...ot.autoconfigure.AutoConfiguration.imports | 9 -- .../target/classes/config/application.yml | 0 .../paradogs-demo-client}/pom.xml | 4 +- .../test/client/TestClientApplication.java | 0 .../paradogs/test/client/demo/BaseMsg.java | 0 .../com/paradogs/test/client/demo/Client.java | 0 .../paradogs/test/client/demo/MsgHeader.java | 13 -- .../paradogs/test/client/demo/ProtoUtils.java | 0 .../test/client/demo/ProtocolProperties.java | 0 .../src/main/resources/application.yml | 0 .../paradogs-demo-gateway}/pom.xml | 6 +- .../gateway}/TestConnectorApplication.java | 3 +- .../src/main/resources}/application.yml | 3 +- .../paradogs-demo-login}/pom.xml | 6 +- .../paradogs/test/login/LoginApplication.java | 0 .../src/main/resources/application.yml | 5 +- .../paradogs-demo-master}/pom.xml | 6 +- .../demo}/master/MasterApplication.java | 4 +- .../src/main/resources/application.yml | 0 .../paradogs-demo-server}/pom.xml | 6 +- .../test/server/TestServerApplication.java | 0 .../server/controller/TestController.java | 0 .../exceptions/GobalExceptionHandler.java | 0 .../paradogs/test/server/misc/LoopTest.java | 0 .../src/main/resources/application.yml | 0 {paradogs-test => paradogs-demo}/pom.xml | 12 +- .../pom.xml | 26 ++++ .../common/connector/EventHandler.java | 0 .../PRConnectorServerMsgHandler.java | 0 ...ot.autoconfigure.AutoConfiguration.imports | 0 .../paradogs-framework-core}/pom.xml | 4 +- .../com/paradogs/common/core/CoreStarter.java | 0 .../core/annoations/base/BaseScanner.java | 0 .../annoations/request/PdgController.java | 0 .../core/annoations/request/PdgMsg.java | 0 .../request/PdgRequestInterfaceSelector.java | 0 .../annoations/request/PdgRequestScanner.java | 0 .../core/annoations/rpc/PdgRPCMapping.java | 0 .../rpc/PdgRPCProxyBeanImportSelector.java | 0 .../annoations/rpc/RPCInterfaceScanner.java | 0 .../annoations/rpc/RPCProxyInterceptor.java | 3 +- .../core/config/NettyConfiguration.java | 0 .../core/config/QueueConfiguration.java | 0 .../common/core/config/RPCConfiguration.java | 0 .../core/events/ChannelActiveEvent.java | 0 .../common/core/events/RPCRequestEvent.java | 0 .../common/core/events/RPCRespEvent.java | 0 .../common/core/events/ServerStartEvent.java | 0 .../common/core/events/SyncMsgEvent.java | 0 .../common/core/events/base/AnonEvent.java | 0 .../common/core/events/base/BaseEvent.java | 0 .../core/exceptions/ServiceException.java | 0 .../exceptions/base/BaseCheckedException.java | 0 .../base/BaseUncheckedException.java | 0 .../com/paradogs/common/core/msg/BaseMsg.java | 0 .../common/core/msg/BaseMsg_CmdVersion.java | 0 .../paradogs/common/core/msg/ByteBodyMsg.java | 0 .../com/paradogs/common/core/msg/CGMsg.java | 0 .../paradogs/common/core/msg/CGTestMsg.java | 0 .../paradogs/common/core/msg/GCTestMsg.java | 0 .../paradogs/common/core/msg/MsgHeader.java | 10 +- .../common/core/msg/route/MsgMapping.java | 0 .../PRAbstractClientChannelInitializer.java | 0 .../netty/PRAbstractClientMsgHandler.java | 0 .../paradogs/common/core/netty/PRCodec.java | 0 .../core/netty/clients/PRMasterClient.java | 0 .../clients/PRMasterClientMsgHandler.java | 2 +- .../common/core/netty/events/ServerEvent.java | 0 .../core/netty/server/PRConnection.java | 0 .../common/core/netty/server/PRServer.java | 0 .../core/netty/server/ServerProperties.java | 3 +- .../paradogs/common/core/pojo/Connection.java | 0 .../core/queue/AbstractMsgConsumer.java | 0 .../core/queue/QueueConsumerThread.java | 0 .../common/core/queue/QueueProperties.java | 0 .../common/core/utils/EventUtils.java | 0 .../paradogs/common/core/utils/MsgUtils.java | 6 +- .../common/core/utils/ProtoUtils.java | 0 .../common/core/utils/RouteUtils.java | 18 +-- .../common/core/utils/SpringUtils.java | 0 .../paradogs/common/core/utils/TimeUtils.java | 0 ...ot.autoconfigure.AutoConfiguration.imports | 0 .../src/main/resources/config/application.yml | 0 .../pom.xml | 6 +- .../master/ControllerConfiguration.java | 0 .../common/master/events/EventHandler.java | 0 .../master/queue/MasterMsgConsumer.java | 2 +- ...ot.autoconfigure.AutoConfiguration.imports | 0 .../paradogs-framework-server-starter/pom.xml | 26 ++++ ...ot.autoconfigure.AutoConfiguration.imports | 0 .../pom.xml | 11 +- .../target/classes/application.yml | 6 - paradogs-test/paradogs-test-login/pom.xml | 26 ---- .../login/controller/LoginController.java | 34 ----- .../paradogs/test/login/rpc/MasterClient.java | 20 --- .../src/main/resources/application.yml | 14 --- .../target/classes/application.yml | 14 --- paradogs-test/paradogs-test-master/pom.xml | 26 ---- .../target/classes/application.yml | 11 -- paradogs-test/paradogs-test-server/pom.xml | 26 ---- .../target/classes/application.yml | 17 --- pom.xml | 26 ++-- 174 files changed, 109 insertions(+), 2699 deletions(-) delete mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/Client.java delete mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientChannelInitializer.java delete mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientContextHolder.java delete mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientLauncher.java delete mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientMsgHandler.java delete mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientProperties.java delete mode 100644 paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java delete mode 100644 paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 paradogs-common/paradogs-common-client-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 paradogs-common/paradogs-common-client-starter/target/classes/config/application.yml delete mode 100644 paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java delete mode 100644 paradogs-common/paradogs-common-connector-starter/src/resources/config/application.yml delete mode 100644 paradogs-common/paradogs-common-connector-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 paradogs-common/paradogs-common-connector-starter/target/classes/config/application.yml delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/DBTask.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultMsgHandler.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java delete mode 100644 paradogs-common/paradogs-common-core/src/main/resources/config/application.yml delete mode 100644 paradogs-common/paradogs-common-core/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 paradogs-common/paradogs-common-core/target/classes/config/application.yml delete mode 100644 paradogs-common/paradogs-common-core/target/maven-archiver/pom.properties delete mode 100644 paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst delete mode 100644 paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst delete mode 100644 paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java delete mode 100644 paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java delete mode 100644 paradogs-common/paradogs-common-game-starter/src/main/resources/config/application.yml delete mode 100644 paradogs-common/paradogs-common-game-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 paradogs-common/paradogs-common-game-starter/target/classes/config/application.yml delete mode 100644 paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java delete mode 100644 paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java delete mode 100644 paradogs-common/paradogs-common-master-starter/src/main/resources/config/application.yml delete mode 100644 paradogs-common/paradogs-common-master-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 paradogs-common/paradogs-common-master-starter/target/classes/config/application.yml rename {paradogs-test/paradogs-test-client => paradogs-demo/paradogs-demo-client}/pom.xml (92%) rename {paradogs-test/paradogs-test-client => paradogs-demo/paradogs-demo-client}/src/main/java/com/paradogs/test/client/TestClientApplication.java (100%) rename {paradogs-test/paradogs-test-client => paradogs-demo/paradogs-demo-client}/src/main/java/com/paradogs/test/client/demo/BaseMsg.java (100%) rename {paradogs-test/paradogs-test-client => paradogs-demo/paradogs-demo-client}/src/main/java/com/paradogs/test/client/demo/Client.java (100%) rename {paradogs-test/paradogs-test-client => paradogs-demo/paradogs-demo-client}/src/main/java/com/paradogs/test/client/demo/MsgHeader.java (89%) rename {paradogs-test/paradogs-test-client => paradogs-demo/paradogs-demo-client}/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java (100%) rename {paradogs-test/paradogs-test-client => paradogs-demo/paradogs-demo-client}/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java (100%) rename {paradogs-test/paradogs-test-client => paradogs-demo/paradogs-demo-client}/src/main/resources/application.yml (100%) rename {paradogs-common/paradogs-common-master-starter => paradogs-demo/paradogs-demo-gateway}/pom.xml (80%) rename {paradogs-test/paradogs-test-connector/src/main/java/com/paradogs/test/connector => paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway}/TestConnectorApplication.java (92%) rename {paradogs-test/paradogs-test-connector/target/classes => paradogs-demo/paradogs-demo-gateway/src/main/resources}/application.yml (85%) rename {paradogs-common/paradogs-common-connector-starter => paradogs-demo/paradogs-demo-login}/pom.xml (80%) rename {paradogs-test/paradogs-test-login => paradogs-demo/paradogs-demo-login}/src/main/java/com/paradogs/test/login/LoginApplication.java (100%) rename {paradogs-test/paradogs-test-connector => paradogs-demo/paradogs-demo-login}/src/main/resources/application.yml (72%) rename {paradogs-test/paradogs-test-connector => paradogs-demo/paradogs-demo-master}/pom.xml (80%) rename {paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test => paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo}/master/MasterApplication.java (75%) rename {paradogs-test/paradogs-test-master => paradogs-demo/paradogs-demo-master}/src/main/resources/application.yml (100%) rename {paradogs-common/paradogs-common-client-starter => paradogs-demo/paradogs-demo-server}/pom.xml (80%) rename {paradogs-test/paradogs-test-server => paradogs-demo/paradogs-demo-server}/src/main/java/com/paradogs/test/server/TestServerApplication.java (100%) rename {paradogs-test/paradogs-test-server => paradogs-demo/paradogs-demo-server}/src/main/java/com/paradogs/test/server/controller/TestController.java (100%) rename {paradogs-test/paradogs-test-server => paradogs-demo/paradogs-demo-server}/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java (100%) rename {paradogs-test/paradogs-test-server => paradogs-demo/paradogs-demo-server}/src/main/java/com/paradogs/test/server/misc/LoopTest.java (100%) rename {paradogs-test/paradogs-test-server => paradogs-demo/paradogs-demo-server}/src/main/resources/application.yml (100%) rename {paradogs-test => paradogs-demo}/pom.xml (70%) create mode 100644 paradogs-framework/paradogs-framework-connector-starter/pom.xml rename {paradogs-common/paradogs-common-connector-starter => paradogs-framework/paradogs-framework-connector-starter}/src/main/java/com/paradogs/common/connector/EventHandler.java (100%) rename {paradogs-common/paradogs-common-connector-starter => paradogs-framework/paradogs-framework-connector-starter}/src/main/java/com/paradogs/common/connector/PRConnectorServerMsgHandler.java (100%) rename {paradogs-common/paradogs-common-connector-starter => paradogs-framework/paradogs-framework-connector-starter}/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/pom.xml (92%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/CoreStarter.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/annoations/base/BaseScanner.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/annoations/request/PdgController.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/annoations/request/PdgMsg.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestScanner.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/annoations/rpc/RPCInterfaceScanner.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java (96%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/config/QueueConfiguration.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/events/ChannelActiveEvent.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/events/ServerStartEvent.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/events/base/AnonEvent.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/exceptions/ServiceException.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/exceptions/base/BaseCheckedException.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/msg/BaseMsg.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/msg/CGMsg.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/msg/CGTestMsg.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/msg/GCTestMsg.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/msg/MsgHeader.java (91%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/msg/route/MsgMapping.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/netty/PRAbstractClientChannelInitializer.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/netty/PRCodec.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClient.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java (95%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/netty/server/PRConnection.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/netty/server/PRServer.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java (89%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/pojo/Connection.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/queue/AbstractMsgConsumer.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/queue/QueueProperties.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/utils/EventUtils.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/utils/MsgUtils.java (96%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/utils/RouteUtils.java (37%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/utils/SpringUtils.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/java/com/paradogs/common/core/utils/TimeUtils.java (100%) rename {paradogs-common/paradogs-common-core => paradogs-framework/paradogs-framework-core}/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (100%) rename {paradogs-common/paradogs-common-client-starter => paradogs-framework/paradogs-framework-core}/src/main/resources/config/application.yml (100%) rename {paradogs-common/paradogs-common-game-starter => paradogs-framework/paradogs-framework-master-starter}/pom.xml (79%) rename {paradogs-common/paradogs-common-master-starter => paradogs-framework/paradogs-framework-master-starter}/src/main/java/com/paradogs/common/master/ControllerConfiguration.java (100%) rename {paradogs-common/paradogs-common-master-starter => paradogs-framework/paradogs-framework-master-starter}/src/main/java/com/paradogs/common/master/events/EventHandler.java (100%) rename {paradogs-common/paradogs-common-master-starter => paradogs-framework/paradogs-framework-master-starter}/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java (95%) rename {paradogs-common/paradogs-common-master-starter => paradogs-framework/paradogs-framework-master-starter}/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (100%) create mode 100644 paradogs-framework/paradogs-framework-server-starter/pom.xml rename {paradogs-common/paradogs-common-game-starter => paradogs-framework/paradogs-framework-server-starter}/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (100%) rename {paradogs-common => paradogs-framework}/pom.xml (61%) delete mode 100644 paradogs-test/paradogs-test-client/target/classes/application.yml delete mode 100644 paradogs-test/paradogs-test-login/pom.xml delete mode 100644 paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/controller/LoginController.java delete mode 100644 paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/rpc/MasterClient.java delete mode 100644 paradogs-test/paradogs-test-login/src/main/resources/application.yml delete mode 100644 paradogs-test/paradogs-test-login/target/classes/application.yml delete mode 100644 paradogs-test/paradogs-test-master/pom.xml delete mode 100644 paradogs-test/paradogs-test-master/target/classes/application.yml delete mode 100644 paradogs-test/paradogs-test-server/pom.xml delete mode 100644 paradogs-test/paradogs-test-server/target/classes/application.yml diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/Client.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/Client.java deleted file mode 100644 index fbd41ff..0000000 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/Client.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.paradogs.common.client.netty; - -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.SpringUtils; -import io.netty.bootstrap.Bootstrap; -import io.netty.channel.Channel; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.nio.NioSocketChannel; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; - -/** - * @author: yumi - * @date: 2023/7/31 22:36 - * @Description: TODO - */ -@Slf4j -public class Client { - - private Bootstrap client; - - @Getter - private Channel channel; - - private NioEventLoopGroup worker; - - private ClientProperties.ClientConfig properties; - - public Client(ClientProperties.ClientConfig clientConfig) { - this.properties = clientConfig; - } - - /** - * 启动 netty 服务器 - */ - public void start() { - - try { - this.worker = new NioEventLoopGroup(); - - this.client = new Bootstrap() - .group(worker) - .channel(NioSocketChannel.class) - .handler(SpringUtils.getBean(ClientChannelInitializer.class)); - - - this.channel = client.connect(properties.getHost(), properties.getPort()).sync().channel(); - - - log.info("{}:{} Connect success", properties.getHost(), properties.getPort()); - - channel.closeFuture().addListener(future -> { - log.info("[{}] server stop", this.properties.getName()); - }); - - - } catch (Exception e) { - log.error("server error:[{}]", e.getMessage(), e); - this.closeSync(); - } - - } - - /** - * 同步关闭连接 - * ***ps: 关闭后进度未结束是因为消息处理队列还开着未关闭 - * @return - */ - public boolean closeSync() { - try { - if (this.channel.isOpen()) { - channel.close().sync(); - } - if (!worker.isShutdown()) { - worker.shutdownGracefully(); - } - return true; - } catch (Exception e) { - e.printStackTrace(); - return false; - } - - } - -} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientChannelInitializer.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientChannelInitializer.java deleted file mode 100644 index 40ba267..0000000 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientChannelInitializer.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.paradogs.common.client.netty; - -import com.paradogs.common.core.netty.initializer.BaseChannelInitializer; -import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelPipeline; -import io.netty.channel.socket.nio.NioSocketChannel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/7 15:31 - * @Description: TODO - */ -@Slf4j -@Component -@ChannelHandler.Sharable -public class ClientChannelInitializer extends BaseChannelInitializer { - - - @Override - protected void initPipeline2(ChannelPipeline pipeline) { -// pipeline.addLast() - } - - @Override - protected void initAfter(NioSocketChannel channel) { - } - -} \ No newline at end of file diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientContextHolder.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientContextHolder.java deleted file mode 100644 index a7a1957..0000000 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientContextHolder.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.paradogs.common.client.netty; - -/** - * @author: yumi - * @date: 2023/8/20 20:33 - * @Description: TODO - * 目前客户端仅连接一个,就是玩家连接 connector,所以一个上下文 Client 够了 - */ -public class ClientContextHolder { - - public static Client client; - -} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientLauncher.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientLauncher.java deleted file mode 100644 index 55973a5..0000000 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientLauncher.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.paradogs.common.client.netty; - -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023/7/31 23:29 - * @Description: TODO - */ -@Slf4j -@Getter -@Component -public class ClientLauncher implements ApplicationRunner { - - @Autowired - private ClientProperties clientProperties; - - /** - * server[name[client]] - */ - private Map> clientMap = new HashMap<>(); - - - @Override - public void run(ApplicationArguments args) { - - if (clientProperties == null || clientProperties.getClients() == null) { - return; -// throw new RuntimeException("no found clientProperties: null"); - } - - for (ClientProperties.ClientConfig clientConfig : clientProperties.getClients()) { - if (clientMap.get(clientConfig.getServer()) == null) { - clientMap.put(clientConfig.getServer(), new HashMap<>()); - } - clientMap.get(clientConfig.getServer()).put(clientConfig.getName(), new Client(clientConfig)); - } - - for (Map clientTypeList : clientMap.values()) { - for (Client client : clientTypeList.values()) { - client.start(); - ClientContextHolder.client = client; - } - } - - } - - public void closeAll() { - for (Map clientTypeList : clientMap.values()) { - for (Client client : clientTypeList.values()) { - client.closeSync(); - } - } - } - -} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientMsgHandler.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientMsgHandler.java deleted file mode 100644 index 6b69b4e..0000000 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientMsgHandler.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.paradogs.common.client.netty; - -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.netty.pipelines.BaseMsgHandler; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/20 20:47 - * @Description: TODO - */ -@Slf4j -@Component -public class ClientMsgHandler extends com.paradogs.common.core.netty.pipelines.ClientMsgHandler { - - @Override - protected void processMsg(BaseMsg msg) { - log.info("receive msg >> {}", msg); - } -} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientProperties.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientProperties.java deleted file mode 100644 index 9ac5e43..0000000 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/netty/ClientProperties.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.paradogs.common.client.netty; - -import com.paradogs.common.core.utils.StringUtils; -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * @author: yumi - * @date: 2023/7/31 22:39 - * @Description: TODO - */ -@Data -@Component -@ConfigurationProperties("paradogs") -public class ClientProperties { - - private List clients; - - @Data - @Component - public static class ClientConfig { - /** - * 主机 ip - */ - private String host; - - /** - * 端口号 - */ - private int port; - - /** - * 服务标识类型 - */ - private String server; - - /** - * 服务名称 - */ - private String name; - - public String getName() { - if (StringUtils.isBlank(this.name)) { - this.name = "Client"; - } - return name; - } - } - -} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java b/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java deleted file mode 100644 index 0e4fee7..0000000 --- a/paradogs-common/paradogs-common-client-starter/src/main/java/com/paradogs/common/client/utils/ClientUtils.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.paradogs.common.client.utils; - -import com.paradogs.common.client.netty.ClientContextHolder; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.MsgHeader; - -/** - * @author: yumi - * @date: 2023/8/20 20:33 - * @Description: TODO - */ -public class ClientUtils { - - public static void send(String route, BaseMsg msg) { - MsgHeader header = new MsgHeader(); - header.setRoute(route); - msg.setMsgHeader(header); - ClientContextHolder.client.getChannel().writeAndFlush(msg); - } - - public static void send(String route) { - MsgHeader header = new MsgHeader(); - BaseMsg msg = new BaseMsg(); - header.setRoute(route); - msg.setMsgHeader(header); - ClientContextHolder.client.getChannel().writeAndFlush(msg); - } - -} diff --git a/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index fde7f69..0000000 --- a/paradogs-common/paradogs-common-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,7 +0,0 @@ -com.paradogs.common.client.netty.Client -com.paradogs.common.client.netty.ClientProperties -com.paradogs.common.client.netty.ClientLauncher -com.paradogs.common.client.netty.ClientChannelInitializer -com.paradogs.common.client.netty.ClientMsgHandler - - diff --git a/paradogs-common/paradogs-common-client-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-client-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index fde7f69..0000000 --- a/paradogs-common/paradogs-common-client-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,7 +0,0 @@ -com.paradogs.common.client.netty.Client -com.paradogs.common.client.netty.ClientProperties -com.paradogs.common.client.netty.ClientLauncher -com.paradogs.common.client.netty.ClientChannelInitializer -com.paradogs.common.client.netty.ClientMsgHandler - - diff --git a/paradogs-common/paradogs-common-client-starter/target/classes/config/application.yml b/paradogs-common/paradogs-common-client-starter/target/classes/config/application.yml deleted file mode 100644 index e69de29..0000000 diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java b/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java deleted file mode 100644 index 4dfa813..0000000 --- a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.paradogs.common.connector; - -import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; -import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -/** - * @author: yumi - * @date: 2023/8/28 17:53 - * @Description: TODO - */ -@Import({ - PdgRPCProxyBeanImportSelector.class, - PdgRequestInterfaceSelector.class -}) -@Configuration -public class PRConnectorStarter { -} diff --git a/paradogs-common/paradogs-common-connector-starter/src/resources/config/application.yml b/paradogs-common/paradogs-common-connector-starter/src/resources/config/application.yml deleted file mode 100644 index cfc460e..0000000 --- a/paradogs-common/paradogs-common-connector-starter/src/resources/config/application.yml +++ /dev/null @@ -1,6 +0,0 @@ -paradogs: - queue: - enable: false - main-size: 1 - db-size: 1 - diff --git a/paradogs-common/paradogs-common-connector-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-connector-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 3334cfe..0000000 --- a/paradogs-common/paradogs-common-connector-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -com.paradogs.common.connector.PRConnectorServerMsgHandler \ No newline at end of file diff --git a/paradogs-common/paradogs-common-connector-starter/target/classes/config/application.yml b/paradogs-common/paradogs-common-connector-starter/target/classes/config/application.yml deleted file mode 100644 index cfc460e..0000000 --- a/paradogs-common/paradogs-common-connector-starter/target/classes/config/application.yml +++ /dev/null @@ -1,6 +0,0 @@ -paradogs: - queue: - enable: false - main-size: 1 - db-size: 1 - diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java deleted file mode 100644 index 2652879..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.paradogs.common.core.annoations; - -import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; -import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; -import org.springframework.context.annotation.Import; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author: yumi - * @date: 2023/8/14 9:45 - * @Description: TODO - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Import({ - // 等同于使用 META-INF.spring,看 @Import 注释,主要区别在于 @Import 可以手动注册,META-INF 为导入依赖自动注册 - PdgRPCProxyBeanImportSelector.class, - PdgRequestInterfaceSelector.class, -// ServerLauncher.class -}) -public @interface EnableParadogs { - -// /** -// * 扫描包 -// * @return -// */ -// String[] scanPackages(); -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java deleted file mode 100644 index 6677a48..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.paradogs.common.core.annoations.base; - -import com.paradogs.common.core.utils.TimeUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.BeanFactoryAware; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.context.annotation.ImportSelector; -import org.springframework.core.type.AnnotationMetadata; - -import java.util.Set; - -/** - * @author: yumi - * @date: 2023/8/25 16:56 - * @Description: TODO - */ -@Slf4j -public abstract class BaseImportSelector implements ImportSelector, BeanFactoryAware { - - private BeanFactory beanFactory; - - @Override - public void setBeanFactory(BeanFactory beanFactory) throws BeansException { - this.beanFactory = beanFactory; - } - - /** - * 使用 @Import 引入时执行的逻辑 - * @param importingClassMetadata - * @return - */ - @Override - public String[] selectImports(AnnotationMetadata importingClassMetadata) { - - long startTime = System.currentTimeMillis(); - - // 设置扫描路径,扫描出符合条件的 bean (接口、类等) - String[] scanPackages = getScanPackages(importingClassMetadata); - - // 获取扫描类 - BaseScanner scanner = getScanner(importingClassMetadata, beanFactory); - - // 扫描出符合条件的 bean - Set beanDefinitions = scanner.isNeedRegister() ? - scanner.findAndRegisterComponents(scanPackages) : - scanner.findCandidateComponents(scanPackages); - - // 循环处理每个被扫描到的bean对象 - for (BeanDefinition beanDefinition : beanDefinitions) { - handle(beanDefinition); - } - - log.debug("Scan: {}, {}", scanPackages, this.getClass().getSimpleName()); - - return new String[0]; - } - - /** - * 设置扫描的路径 - * @param importingClassMetadata - * @return - */ - public String[] getScanPackages(AnnotationMetadata importingClassMetadata) { - try { - // 获取被注解的类(启动类)的 Class,以及包路径 - String startupClassStr = importingClassMetadata.getClassName(); - Class startupClass = Class.forName(startupClassStr); - String startupPackage = startupClass.getPackage().getName(); - - String[] result = new String[]{startupPackage}; - - return result; - - } catch (ClassNotFoundException e) { - throw new RuntimeException(e); - } - } - - /** - * 设置要扫描的 Scanner - * @param importingClassMetadata - * @param beanFactory - * @return - */ - public abstract BaseScanner getScanner(AnnotationMetadata importingClassMetadata, BeanFactory beanFactory); - - /** - * 处理扫描到的 Bean - * @param beanDefinition - */ - public abstract void handle(BeanDefinition beanDefinition); -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java deleted file mode 100644 index 92c3fac..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.paradogs.common.core.annoations.exception; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author: yumi - * @date: 2023/8/2 9:15 - * @Description: TODO - */ -@Target({ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -public @interface PdgExceptionHandler { - - Class value(); - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java deleted file mode 100644 index c670599..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.paradogs.common.core.annoations.exception; - -import org.springframework.stereotype.Component; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author: yumi - * @date: 2023/8/2 9:16 - * @Description: TODO - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Component -public @interface PdgExceptionHandlerClass { -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java deleted file mode 100644 index c9a36a3..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.paradogs.common.core.annoations.request; - -import com.paradogs.common.core.events.RPCRespEvent; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.msg.MsgHeader; -import com.paradogs.common.core.msg.route.MsgMapping; -import com.paradogs.common.core.utils.*; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Stream; - -/** - * @author: yumi - * @date: 2023/8/25 17:28 - * @Description: TODO - */ -@Slf4j -public class PRMsgMappingHolder { - - private static Map mappingMap = new HashMap<>(); - - public static MsgMapping put(String route, MsgMapping mapping) { - return mappingMap.put(route, mapping); - } - - /** - * 获取映射 - * @param route - * @return - */ - public static MsgMapping getMsgMapping(String route) { - return PRMsgMappingHolder.mappingMap.get(route); - } - - /** - * 获取路由映射的传参数据对象类型 - * @param route - * @return - */ - public static Class getMsgMappingClass(String route) { - MsgMapping msgMapping = PRMsgMappingHolder.getMsgMapping(route); - if (msgMapping == null || msgMapping.getMsgClass() == null || msgMapping.getMsgClass().isAssignableFrom(void.class)) { - return null; - } - return msgMapping.getMsgClass(); - } - - /** - * 是否存在对应路由映射 - * @param route - * @return - */ - public static boolean containsRoute(String route) { - return PRMsgMappingHolder.mappingMap.containsKey(route); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java deleted file mode 100644 index e63882b..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.paradogs.common.core.annoations.request; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author: yumi - * @date: 2023/8/1 15:19 - * @Description: TODO - * 根据消息 class 映射找到对应的处理方法 - */ -@Target({ElementType.METHOD, ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -public @interface PdgMsgMapping { - - /** - * 路由路径 - * @return - */ - String value(); - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java deleted file mode 100644 index 01e573d..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.paradogs.common.core.annoations.rpc; - -import java.lang.annotation.*; - -/** - * @author: yumi - * @date: 2023/8/13 12:19 - * @Description: TODO - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface PdgRPC { - - /** - * 服务名 - * @return - */ - String value(); - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java deleted file mode 100644 index 4aac54f..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.paradogs.common.core.annoations.rpc; - -import com.paradogs.common.core.msg.route.MsgMapping; -import lombok.Getter; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023/8/25 17:33 - * @Description: TODO - */ -public class PdgRPCHolder { - - @Getter - private static Map mappingMap = new HashMap<>(); - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java deleted file mode 100644 index f8fd7d3..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.paradogs.common.core.annoations.rpc; - -import org.springframework.beans.factory.FactoryBean; -import org.springframework.cglib.proxy.Enhancer; - -/** - * @author: yumi - * @date: 2023/8/13 9:37 - * @Description: TODO - */ -public class RPCProxyBean implements FactoryBean { - - /** - * 被代理的接口 - */ - private Class myInterfaceClass; - - /** - * 构造函数 - * @param myInterfaceClass 被代理的接口类型,该参数,由注解解析器自动赋值 - */ - public RPCProxyBean(Class myInterfaceClass) { - this.myInterfaceClass = myInterfaceClass; - } - - /** - * 返回该bean是否为单例类型 - * @return - */ - @Override - public boolean isSingleton() { - return FactoryBean.super.isSingleton(); - } - - /** - * 当 ioc 容器提取对象时,调用此方法获取一个代理对象 - * @return - * @throws Exception - */ - @Override - public T getObject() throws Exception { - - //用于创建代理对象的增强器,可以对目标对象进行扩展 - Enhancer enhancer = new Enhancer(); - //将目标对象设置为父类 - enhancer.setSuperclass(myInterfaceClass); - //设置目标拦截器 - enhancer.setCallback(new RPCProxyInterceptor()); - // 创建代理对象 - return (T)enhancer.create(); - - } - - /** - * 当 ioc 容器获取类型时,从此方法获取类型 - * @return - */ - @Override - public Class getObjectType() { - return myInterfaceClass; - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java deleted file mode 100644 index cdd3635..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.paradogs.common.core.annoations.rpc; - -import com.paradogs.common.core.events.RPCRespEvent; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.GCMsg; -import com.paradogs.common.core.msg.PRMsgContextHolder; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ConcurrentHashMap; - -/** - * @author: yumi - * @date: 2023/8/11 13:45 - * @Description: RPC 响应处理 - */ -@Slf4j -@Component -public class RpcResponseResolver { - - /** - * 等待响应的消息 map - */ - private volatile Map waitRespMap = new ConcurrentHashMap<>(); - - - /** - * 监听 rpc 响应 - * @param event - * @param - */ - @EventListener(RPCRespEvent.class) - private void onRpcMsgResponse(RPCRespEvent event) { - - String key = getReplyMsgKey(event.getMsg()); - try { - // 执行回调方法 - RespData respInfo = waitRespMap.get(key); - if (respInfo == null) { - log.warn("Missing callback listener, maybe timeout"); - return; - } - if (respInfo.getPromise() == null) { - log.warn(""); - return; - } - - // 设置上下文 - PRMsgContextHolder.setContext(respInfo.getMsgContextHolder()); - - // 标记任务完成,执行回调 - boolean isSuccess = respInfo.getPromise().complete(respInfo.getReturnClass().cast(event.getMsg())); - if (!isSuccess) {log.error("Callback promise invoke is fail: {}", respInfo);} - - } catch (Exception e) { - log.error("{}", e.getMessage(), e); - } finally { - // 处理完毕移除响应监听 - waitRespMap.remove(key); - log.debug("release callback listener: {}", key); - } - } - - /** - * 监听一次 - * @param route - * @param cgMsgId - * @param promise - */ - public void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { - this.waitRespMap.put(getMsgKey(route, cgMsgId), new RespData(returnClass, promise, PRMsgContextHolder.getSnapshot())); - } - - public static String getMsgKey(String route, Long id) { - return route.substring(route.indexOf("-") + 1) + id; - } - - public static String getReplyMsgKey(T msg) { - return getMsgKey(msg.getMsgHeader().getRoute(), msg.getMsgHeader().getReplyMsgId()); - } - - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class RespData { - - /** - * 返回消息类型 - */ - private Class returnClass; - - /** - * 回调方法 - */ - private CompletableFuture promise; - - /** - * 开始监听时的上下文状态 - */ - private PRMsgContextHolder.Snapshot msgContextHolder; - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java deleted file mode 100644 index 379c56a..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.paradogs.common.core.annoations.tick; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * @author: yumi - * @date: 2023/8/4 9:54 - * @Description: 添加上该注解的方法,会在每次主循环执行一次 - */ -@Target({ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -public @interface PRTick { -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java deleted file mode 100644 index 59c97bf..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.paradogs.common.core.config; - -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.MsgUtils; -import com.paradogs.common.core.utils.SpringUtils; -import org.springframework.context.annotation.Bean; - -/** - * @author: yumi - * @date: 2023/8/26 17:28 - * @Description: TODO - */ -public class UtilsConfiguration { - - @Bean - public EventUtils eventUtils() { - return new EventUtils(); - } - - @Bean - public SpringUtils springUtils() { - return new SpringUtils(); - } - - @Bean - public MsgUtils msgUtils() { - return new MsgUtils(); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java deleted file mode 100644 index 8c0b1b8..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.paradogs.common.core.events; - -import com.paradogs.common.core.events.base.AnonEvent; -import io.netty.channel.ChannelHandlerContext; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author: yumi - * @date: 2023/8/10 14:57 - * @Description: 连接断开 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ChannelInactiveEvent extends AnonEvent { - - private ChannelHandlerContext ctx; - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java deleted file mode 100644 index c9b457a..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.paradogs.common.core.events; - -import com.paradogs.common.core.events.base.AnonEvent; -import com.paradogs.common.core.msg.BaseMsg; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author: yumi - * @date: 2023/8/11 9:57 - * @Description: TODO - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ReceiveMsgEvent extends AnonEvent { - - private T msg; - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java deleted file mode 100644 index 21aee01..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.paradogs.common.core.events; - -import com.paradogs.common.core.events.base.AnonEvent; -import com.paradogs.common.core.pojo.Connection; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023/8/16 16:53 - * @Description: 服务器客户端连接初始化事件 - */ -@Data -public class ServerConnectionInitEvent extends AnonEvent { - - private Connection connection; - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java deleted file mode 100644 index e4923ed..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.paradogs.common.core.exceptions; - -import com.paradogs.common.core.annoations.exception.PdgExceptionHandler; -import com.paradogs.common.core.annoations.exception.PdgExceptionHandlerClass; -import com.paradogs.common.core.utils.SpringUtils; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Stream; - -/** - * @author: yumi - * @date: 2023/8/2 9:12 - * @Description: TODO - */ -@Slf4j -@Component -public class GlobalExceptionDispatch { - - @Getter - private Map, Method> exceptionHandlerMap = new HashMap<>(); - - /** - * 加载注册异常处理 - */ - @PostConstruct - public void registerExceptionHandler() { - for (Object bean : SpringUtils.getBeansWithAnnotation(PdgExceptionHandlerClass.class).values()) { - for (Method method : bean.getClass().getDeclaredMethods()) { - PdgExceptionHandler pdgExceptionHandler = method.getAnnotation(PdgExceptionHandler.class); - if (pdgExceptionHandler == null) { - continue; - } - exceptionHandlerMap.put(pdgExceptionHandler.value(), method); - } - } - - } - - /** - * 将异常转发到对应异常处理方法 - * ps: 会自动优先找最相近的类 - * @param throwable - */ - public void forward(Throwable throwable) { - - if (throwable == null) {return;} - - Throwable realThrowable = throwable.getCause() != null ? throwable.getCause() : throwable; - - // 这里的异常时 InvocationTargetException 反射异常,转换成真正的异常 - Method method = exceptionHandlerMap.get(realThrowable.getClass()); - if (method == null && (method = exceptionHandlerMap.get(Exception.class)) == null) { - realThrowable.printStackTrace(); - return; - } - try { - method.invoke( - SpringUtils.getBean(method.getDeclaringClass()), - Stream.of(method.getParameterTypes()) - .map(type -> Exception.class.isAssignableFrom(type) ? realThrowable : null) - .toArray() - ); - } catch (Exception e) { - // 可能会死循环 - forward(e.getCause()); - } - } - - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java deleted file mode 100644 index d4407c1..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.paradogs.common.core.exceptions; - -import com.paradogs.common.core.exceptions.base.BaseUncheckedException; - -/** - * @author: yumi - * @date: 2023/8/1 16:28 - * @Description: TODO - */ -public class SerializationException extends BaseUncheckedException { - - public SerializationException() { - super(1, "序列化异常"); - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java deleted file mode 100644 index cdd5bdf..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.paradogs.common.core.listeners; - -import com.paradogs.common.core.annoations.tick.PRTick; -import com.paradogs.common.core.netty.events.MainLoopEvent; -import com.paradogs.common.core.utils.SpringUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -/** - * @author: yumi - * @date: 2023/7/26 16:30 - * @Description: TODO - */ -@Slf4j -@Component -public class PdgEventListener { - - @EventListener(MainLoopEvent.class) - public void onMainLoopEvent(MainLoopEvent event) { - for (Method method : SpringUtils.getMethodsWithAnnotation(PRTick.class)) { - /** - * 待优化:方法参数注入,其他地方也有,可以提取成一个方法 - */ - try { - if (method.getParameterCount() == 0) { - method.invoke( - SpringUtils.getBean(method.getDeclaringClass()) - ); - } else { - method.invoke( - SpringUtils.getBean(method.getDeclaringClass()), - Stream.of(method.getParameterTypes()).map(aClass -> new Object()).collect(Collectors.toList()) - ); - } - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java deleted file mode 100644 index 847ca56..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CommonController.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.paradogs.common.core.msg; - -import com.paradogs.common.core.annoations.request.PdgController; -import com.paradogs.common.core.annoations.request.PdgMsg; -import com.paradogs.common.core.annoations.request.PdgMsgMapping; -import com.paradogs.common.core.events.ChannelActiveEvent; -import com.paradogs.common.core.events.RPCRespEvent; -import com.paradogs.common.core.netty.server.PRConnection; -import com.paradogs.common.core.netty.server.PRConnectionHolder; -import com.paradogs.common.core.netty.server.ServerProperties; -import com.paradogs.common.core.rpc.InitRPC; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.MsgUtils; -import com.paradogs.common.core.utils.SpringUtils; -import lombok.extern.slf4j.Slf4j; - -import java.time.LocalDateTime; -import java.util.concurrent.CompletableFuture; - -/** - * @author: yumi - * @date: 2023/8/7 16:04 - * @Description: TODO - */ -@Slf4j -@PdgController -@PdgMsgMapping("_paradogs") -public class CommonController { - - @PdgMsgMapping("dist") - public void dist() { - log.info("dist test success ..."); - } - - /** - * 回调处理,通知回调事件 - * GC 消息统一走这里,保证也按队列顺序处理 - * @param msg - */ - @PdgMsgMapping("callback") - public void callback(ByteBodyMsg msg) { - if (msg.getMsgHeader().getReplyMsgId() == null) { - log.error("Not found Callback header.replyMsgId: {}", msg); - return; - } - BaseMsg callbackMsg = new BaseMsg(); - callbackMsg.setMsgHeader(msg.getMsgHeader()); - callbackMsg.deserialization(msg.getDataBytes()); - EventUtils.publishEvent(new RPCRespEvent(callbackMsg)); - } - - /** - * 客户端服务器发来的初始化信息 - * @param properties - */ - @PdgMsgMapping("initInfo") - public void initInfo(@PdgMsg ServerProperties properties) { - // 初始化连接的服务器信息(建立连接后,服务器主动发送自己的信息) - PRConnectionHolder.initConnection(PRMsgContextHolder.getChannel(), properties); - log.info("Init success: {}-{}", properties.getType(), properties.getKey()); - - BaseMsg msg = new BaseMsg(); - MsgHeader header = new MsgHeader(); - header.setRoute("master-_info.hello"); - msg.setMsgHeader(header); - PRMsgContextHolder.getChannel().writeAndFlush(msg); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/DBTask.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/DBTask.java deleted file mode 100644 index 399116f..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/DBTask.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.paradogs.common.core.msg; - -import lombok.Data; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.time.LocalDateTime; - -/** - * @author: yumi - * @date: 2023/7/28 22:50 - * @Description: DB 线程异步数据更新任务 - */ -@Data -public class DBTask { - - /** - * 操作类 - */ - private Object operateObj; - - /** - * 调用方法 - */ - private Method callMethod; - - /** - * 调用参数 - */ - private Object[] params; - - /** - * 任务发起时间 - */ - private LocalDateTime startTime; - - public void call() throws InvocationTargetException, IllegalAccessException { - callMethod.invoke(operateObj, params); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java deleted file mode 100644 index 2cb8a91..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.paradogs.common.core.msg; - -import lombok.Data; - -/** - * @author: yumi - * @date: 2023/2/16 23:27 - * @Description: TODO - */ -@Data -public abstract class GCMsg extends BaseMsg { - - /** - * 回复的 CG 消息 ID - */ - private Long targetCGMsgId; -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java deleted file mode 100644 index 2c1e3c3..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.paradogs.common.core.msg; - -import io.netty.buffer.ByteBuf; - -import java.io.IOException; - - -/** - * @author: yumi - * @date: 2023/2/15 21:07 - * @Description: TODO - */ -public interface IMsgSerializable { - - void serialization(ByteBuf out) throws IOException; - - void deserialization(ByteBuf in) throws IOException; - - void deserialization(byte[] bytes) throws IOException; - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java deleted file mode 100644 index d98b72d..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.paradogs.common.core.msg; - -import io.netty.channel.Channel; -import io.netty.channel.ChannelHandlerContext; -import lombok.*; - -/** - * @author: yumi - * @date: 2023/8/13 13:56 - * @Description: 消息上下文 - */ -@Data -public class PRMsgContextHolder { - - @Getter - private static ChannelHandlerContext ctx; - - @Getter - private static Long playerId; - - - public static void setContext(ChannelHandlerContext ctx, Long playerId) { - PRMsgContextHolder.ctx = ctx; - PRMsgContextHolder.playerId = playerId; - } - - public static void setContext(Snapshot snapshot) { - PRMsgContextHolder.ctx = snapshot.ctx; - PRMsgContextHolder.playerId = snapshot.playId; - } - - - /** - * 返回当前上下文快照 - */ - public static PRMsgContextHolder.Snapshot getSnapshot() { - return new PRMsgContextHolder.Snapshot(PRMsgContextHolder.ctx, playerId); - } - - public static Channel getChannel() { - if (PRMsgContextHolder.getCtx() != null) { - return PRMsgContextHolder.getCtx().channel(); - } - return null; - } - - /** - * 快照,与 MsgContextHolder 属性相同 - */ - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class Snapshot { - private ChannelHandlerContext ctx; - private Long playId; - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java deleted file mode 100644 index 977ff35..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.paradogs.common.core.msg; - -/** - * @author: yumi - * @date: 2023/8/26 16:10 - * @Description: TODO - */ -public class VoidMsg extends BaseMsg { -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java deleted file mode 100644 index 08e3933..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.paradogs.common.core.netty; - -import com.paradogs.common.core.utils.SpringUtils; -import io.netty.channel.*; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.LengthFieldBasedFrameDecoder; -import io.netty.handler.codec.LengthFieldPrepender; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; - -/** - * @author: yumi - * @date: 2023/2/18 13:14 - * @Description: TODO - */ -@Slf4j -public abstract class PRAbstractChannelInitializer extends ChannelInitializer { - - @Autowired - private ProtocolProperties protocolProperties; - - private PRAbstractMsgHandler msgHandler; - - public PRAbstractChannelInitializer(PRAbstractMsgHandler msgHandler) { - this.msgHandler = msgHandler; - } - - /** - * 建立连接,初始化通道(还不能传输消息) - * @param channel - * @throws Exception - */ - @Override - protected void initChannel(NioSocketChannel channel) throws Exception { - - channel.pipeline().addLast(new LengthFieldBasedFrameDecoder( - protocolProperties.getMaxFrameLength(), - protocolProperties.getLengthFieldOffset(), - protocolProperties.getLengthFieldLength(), - protocolProperties.getLengthAdjustment(), - protocolProperties.getInitialBytesToStrip())); - - channel.pipeline().addLast(new LengthFieldPrepender(protocolProperties.getLengthFieldLength())); - - channel.pipeline().addLast(SpringUtils.getBean(PRCodec.class)); - - channel.pipeline().addLast(msgHandler); - - } - - /** - * ChannelInitializer 的 ChannelActive 和 ChannelInboundHandlerAdapter 的不一样,一般用 ChannelInboundHandlerAdapter - * ChannelInitializer.ChannelActive 会不触发 - */ - - /** - * ChannelInitializer 的异常处理 - * @param ctx - * @throws Exception - */ - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - cause.printStackTrace(); - log.error("{}", cause.getMessage()); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java deleted file mode 100644 index 89d560b..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.paradogs.common.core.netty; - -import com.paradogs.common.core.events.ReceiveMsgEvent; -import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.msg.PRMsgContextHolder; -import com.paradogs.common.core.msg.MsgHeader; -import com.paradogs.common.core.netty.server.PRConnection; -import com.paradogs.common.core.netty.server.PRConnectionHolder; -import com.paradogs.common.core.queue.PRQueueHolder; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.SpringUtils; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.SimpleChannelInboundHandler; -import lombok.extern.slf4j.Slf4j; - -import java.time.LocalDateTime; - -/** - * @author: yumi - * @date: 2023/7/27 9:32 - * @Description: 消息加入到 MAIN 处理队列 - */ -@Slf4j -public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler { - - /** - * 消息处理 - */ - protected void processMsg(ByteBodyMsg msg) throws Exception { - PRQueueHolder.putMsg(PRQueueHolder.QueueType.MAIN, msg); - } - - /** - * 设置自定义参数 - */ - protected void setProps(ChannelHandlerContext ctx, ByteBodyMsg msg) { - MsgHeader header = msg.getMsgHeader(); - header.setPId(1L); - header.setSendServer(PRConnectionHolder.getConnKey(ctx.channel())); - } - - /** - * 设置消息上下文 - * @param ctx - * @param msg - */ - protected void setContext(ChannelHandlerContext ctx, ByteBodyMsg msg) { - PRMsgContextHolder.setContext(ctx, msg.getMsgHeader().getPId()); - } - - /** - * 校验权限,是否可以处理消息 - * @param ctx - * @param msg - * @return - */ - protected boolean validPerm(ChannelHandlerContext ctx, ByteBodyMsg msg) { - if (PRConnectionHolder.isExcludeRoute(msg.getMsgHeader().getRoute())) { - return true; - } - return PRConnectionHolder.isInitializedChannel(ctx.channel()); - } - - /** - * 消息处理 - * @param ctx - * @param msg - */ - protected final void channelRead0(ChannelHandlerContext ctx, ByteBodyMsg msg) { - - setProps(ctx, msg); - - setContext(ctx, msg); - - if (!validPerm(ctx, msg)) { - log.error("Connection not initialized: {}", PRConnectionHolder.getConnKey(ctx.channel())); - return; - } - - try { - // 消息处理 - processMsg(msg); - - } catch (Exception e) { - // 全局异常处理 - SpringUtils.getBean(GlobalExceptionDispatch.class).forward(e); - - } finally { - EventUtils.publishEvent(new ReceiveMsgEvent<>(msg)); - } - } - - /** - * 连接建立事件 - * @param ctx - * @throws Exception - */ - @Override - public void channelActive(ChannelHandlerContext ctx) throws Exception { - PRConnectionHolder.addNewConnection(ctx.channel()); - } - - /** - * 连接断开事件 - * @param ctx - * @throws Exception - */ - @Override - public void channelInactive(ChannelHandlerContext ctx) throws Exception { - PRConnectionHolder.removeConn(ctx.channel()); - } - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - log.info("{}", cause.getMessage(), cause); - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java deleted file mode 100644 index f611f4e..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.paradogs.common.core.netty; - -/** - * @author: yumi - * @date: 2023/11/3 11:10 - * @Description: TODO - */ -public abstract class PRAbstractServerChannelInitializer extends PRAbstractChannelInitializer { - - public PRAbstractServerChannelInitializer(PRAbstractMsgHandler msgHandler) { - super(msgHandler); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java deleted file mode 100644 index 0fe2365..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.paradogs.common.core.netty; - -/** - * @author: yumi - * @date: 2023/11/3 11:18 - * @Description: TODO - */ -public abstract class PRAbstractServerMsgHandler extends PRAbstractMsgHandler { -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultMsgHandler.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultMsgHandler.java deleted file mode 100644 index 2db2f3a..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultMsgHandler.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.paradogs.common.core.netty; - -import io.netty.channel.ChannelHandler; - -/** - * @author: yumi - * @date: 2023/11/6 17:31 - * @Description: TODO - */ -@ChannelHandler.Sharable -public class PRDefaultMsgHandler extends PRAbstractServerMsgHandler { -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java deleted file mode 100644 index 96eca09..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.paradogs.common.core.netty; - -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/11/3 11:25 - * @Description: TODO - */ -@Component -@ConditionalOnMissingBean -public class PRDefaultServerChannelInitializer extends PRAbstractServerChannelInitializer { - - public PRDefaultServerChannelInitializer(PRAbstractMsgHandler msgHandler) { - super(msgHandler); - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java deleted file mode 100644 index afd796a..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.paradogs.common.core.netty; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/1 9:15 - * @Description: TODO - * 待优化:加上注释和用法 - */ -@Data -@Component -@ConfigurationProperties("paradogs.protocoal") -public class ProtocolProperties { - - private int maxFrameLength = 65534; - - private int lengthFieldOffset = 0; - - private int lengthFieldLength = 2; - - private int lengthAdjustment = 0; - - private int initialBytesToStrip = 2; - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java deleted file mode 100644 index 4870041..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.paradogs.common.core.netty.clients; - -import com.paradogs.common.core.utils.StringUtils; -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * @author: yumi - * @date: 2023/7/31 22:39 - * @Description: TODO - */ -@Data -@Component -@ConfigurationProperties("paradogs.master") -public class MasterClientProperties { - - /** - * 主机 ip - */ - private String host; - - /** - * 端口号 - */ - private int port; - - /** - * 服务名称 - */ - private String name; - - - public String getName() { - if (StringUtils.isBlank(this.name)) { - this.name = "Master"; - } - return name; - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java deleted file mode 100644 index 2534189..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.paradogs.common.core.netty.clients; - -import com.paradogs.common.core.netty.server.PRConnectionHolder; -import io.netty.channel.Channel; -import lombok.Getter; -import lombok.Setter; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; - -/** - * @author: yumi - * @date: 2023/11/4 14:31 - * @Description: TODO - */ -public abstract class PRClient implements ApplicationRunner { - - @Getter - @Setter - private PRClient.State state = PRClient.State.STOP; - - @Getter - private Channel channel; - - /** - * 连接服务器 - * @return - */ - protected abstract PRClient connect(); - - /** - * 是否需要连接服务器 - * @return - */ - protected abstract boolean isNeedConnect(); - - @Override - public void run(ApplicationArguments args) throws Exception { - if (isNeedConnect()) { - this.connect(); - PRConnectionHolder.addClient(this); - } - } - - protected void setChannel(Channel channel) { - this.channel = channel; - } - - public enum State { - RUNNING, - STOP - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java deleted file mode 100644 index 74b24cd..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.paradogs.common.core.netty.clients; - -import com.paradogs.common.core.netty.PRAbstractClientChannelInitializer; -import com.paradogs.common.core.netty.PRAbstractMsgHandler; -import io.netty.channel.ChannelHandlerContext; - -/** - * @author: yumi - * @date: 2023/11/4 14:33 - * @Description: TODO - */ -public class PRMasterClientChannelInitializer extends PRAbstractClientChannelInitializer { - - public PRMasterClientChannelInitializer(PRAbstractMsgHandler msgHandler) { - super(msgHandler); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java deleted file mode 100644 index cafac37..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.paradogs.common.core.netty.events; - -import org.springframework.context.ApplicationEvent; - -/** - * @author: yumi - * @date: 2023/8/4 9:46 - * @Description: TODO - */ -public class MainLoopEvent extends ApplicationEvent { - - public MainLoopEvent() { - super(new Object()); - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java deleted file mode 100644 index b8fe0ff..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.paradogs.common.core.netty.server; - -import com.paradogs.common.core.msg.PRMsgContextHolder; -import com.paradogs.common.core.netty.clients.PRClient; -import io.netty.channel.Channel; -import lombok.Getter; - -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023/8/26 17:18 - * @Description: TODO - */ -public class PRConnectionHolder { - - @Getter - private static PRServer server; - - @Getter - private static Map clientMap = new HashMap<>(); - - /** - * 未初始化的连接 Map - */ - @Getter - private static Map uninitializedConnMap = new HashMap<>(); - - /** - * 正常的连接 Map - */ - @Getter - private static Map connMap = new HashMap<>(); - - /** - * 不需要权限的路由,一般为初始化操作等 - */ - private static List excludeRoutes = new ArrayList<>(); - - static { - excludeRoutes.add("_paradogs.initInfo"); - } - - - public static void setServer(PRServer server) { - PRConnectionHolder.server = server; - } - - public static void addClient(PRClient client) { - PRConnectionHolder.clientMap.put(client.getChannel(), client); - } - - public static void addNewConnection(Channel channel) { - PRConnection conn = new PRConnection(); - conn.setCreateTime(LocalDateTime.now()); - conn.setExpiredTime(LocalDateTime.now().plusSeconds(10)); - PRConnectionHolder.uninitializedConnMap.put(channel, conn); - } - - public static void initConnection(Channel channel, ServerProperties properties) { - PRConnection conn = uninitializedConnMap.get(channel); - uninitializedConnMap.remove(channel); - conn.setConnInfo(properties); - connMap.put(conn.getConnInfo().getKey(), conn); - } - - public static String getConnKey(Channel channel) { - if (connMap.containsKey(channel)) { - PRConnection conn = connMap.get(channel); - return conn.getConnInfo().getKey(); - } - return null; - } - - public static void removeConn(Channel channel) { - PRConnectionHolder.uninitializedConnMap.remove(channel); - for (Map.Entry entry : PRConnectionHolder.connMap.entrySet()) { - String key = entry.getKey(); - PRConnection conn = PRConnectionHolder.connMap.get(key); - if (conn.getChannel() == channel) { - PRConnectionHolder.connMap.remove(key); - return; - } - - } - - } - - /** - * Channel 是否初始化 - * @param channel - * @return - */ - public static boolean isInitializedChannel(Channel channel) { - if (channel == null) { - return false; - } - if (PRConnectionHolder.clientMap.containsKey(channel) || PRConnectionHolder.connMap.containsKey(channel)) { - return true; - } - return false; - } - - public static boolean isExcludeRoute(String route) { - for (String excludeRoute : excludeRoutes) { - if (route.contains(excludeRoute)) { - return true; - } - } - return false; - - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java deleted file mode 100644 index 8f26206..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.paradogs.common.core.pojo; - -import com.paradogs.common.core.msg.BaseMsg; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author: yumi - * @date: 2023/9/5 14:13 - * @Description: TODO - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class ConnectorMessage extends BaseMsg { - - private String host; - - private int port; - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java deleted file mode 100644 index f1c8fb5..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.paradogs.common.core.queue; - -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.netty.events.MainLoopEvent; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.MsgUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -import java.lang.reflect.InvocationTargetException; - -/** - * @author: yumi - * @date: 2023/7/28 9:27 - * @Description: 消息处理线程 - */ -@Slf4j -public class MsgDefaultConsumer extends AbstractMsgConsumer { - - /** - * 消息处理 - * @param msg - */ - @Override - public void handle(ByteBodyMsg msg) throws InvocationTargetException, IllegalAccessException { - MsgUtils.adapterHandle(msg); - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java deleted file mode 100644 index cb5a441..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.paradogs.common.core.queue; - -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.utils.SpringUtils; -import lombok.Getter; -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; - -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; - -/** - * @author: yumi - * @date: 2023/7/27 14:22 - * @Description: 队列管理器 - */ -@Slf4j -public class PRQueueHolder implements ApplicationRunner { - - @Getter - @Setter - @Autowired - private QueueProperties queueProperties; - - /** - * 队列集合 - * 待优化:有一些业务不需要保证顺序性,可以创建一个队列由多个消费者消费,不需要一对一,提高效率 - */ - private static Map> consumerMap = new ConcurrentHashMap<>(); - - /** - * 初始化相关队列 - * ps: 这里要用自定义方法不能用构造器,因为构造器 properties 还未注入完成(空指针) - */ - public void init() { - initQueue(QueueType.MAIN, queueProperties.getMainSize()); - } - - public void initQueue(QueueType type, int size) { - if (size == 0) {return;} - for (int i = 0; i < size; i++) { - // 原型模式 getBean - QueueConsumerThread queueConsumer = SpringUtils.getBean(type.queueConsumerThreadClass); - if (i == 0) { // 第一个线程额外负责处理循环检测 - queueConsumer.setLoop(true); - } - queueConsumer.setKey(type.key + "-" + (i + 1)); - queueConsumer.start(); - if (!consumerMap.containsKey(type)) { - consumerMap.put(type, new ArrayList<>()); - } - consumerMap.get(type).add(queueConsumer); - } - } - - @Override - public void run(ApplicationArguments args) throws Exception { - this.init(); - } - - public enum QueueType { - - /** - * 消息逻辑处理 - */ - MAIN(AbstractMsgConsumer.class, "MainMsgConsumer"); - - /** - * 消费对象类型 - */ - private Class queueConsumerThreadClass; - /** - * 线程描述标识符 - */ - private String key; - - QueueType(Class queueConsumerThreadClass, String key) { - this.queueConsumerThreadClass = queueConsumerThreadClass; - this.key = key; - } - } - - public static void putMsg(QueueType queueType, BaseMsg msg) throws InterruptedException { - balance(consumerMap.get(queueType), msg).produce(msg); - } - - /** - * 待优化,负载均衡规则,可以换成一个接口 - * @return - */ - private static QueueConsumerThread balance(List list, BaseMsg msg) { - return list.get((int) (msg.getMsgHeader().getPId() % list.size())); - } - - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java deleted file mode 100644 index 48031f5..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.paradogs.common.core.rpc; - -import com.paradogs.common.core.annoations.request.PdgMsg; -import com.paradogs.common.core.annoations.rpc.PdgRPC; -import com.paradogs.common.core.annoations.rpc.PdgRPCMapping; -import com.paradogs.common.core.netty.server.ServerProperties; - -import java.util.concurrent.CompletableFuture; - -/** - * @author: yumi - * @date: 2023/8/10 15:26 - * @Description: TODO - */ -@PdgRPC("master") -public interface InitRPC { - - @PdgRPCMapping(value = "_init.serverInfo") - CompletableFuture getServerInfo(); - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java deleted file mode 100644 index f8fdfeb..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.paradogs.common.core.utils; - - -import lombok.extern.slf4j.Slf4j; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023/2/16 21:17 - * @Description: TODO - */ -@Slf4j -public class BeanUtils extends org.springframework.beans.BeanUtils { - - - /** - * 包装类和基本数据类型映射 - */ - private static Map, Class> primitiveAndWrap; - - private static Map, Class> wrapAndPrimitive; - - static { - primitiveAndWrap = new HashMap<>(); - wrapAndPrimitive = new HashMap<>(); - - primitiveAndWrap.put(byte.class, Byte.class); - primitiveAndWrap.put(short.class, Short.class); - primitiveAndWrap.put(int.class, Integer.class); - primitiveAndWrap.put(long.class, Long.class); - primitiveAndWrap.put(float.class, Float.class); - primitiveAndWrap.put(double.class, Double.class); - primitiveAndWrap.put(char.class, Character.class); - primitiveAndWrap.put(boolean.class, Boolean.class); - - primitiveAndWrap.entrySet().forEach(entry -> wrapAndPrimitive.put(entry.getValue(), entry.getKey())); - - - } - - public static V copy(T source, V target) { - copyProperties(source, target); - return target; - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java deleted file mode 100644 index 40ee54d..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.paradogs.common.core.utils; - -import java.util.Random; - -/** - * @author: yumi - * @date: 2023/11/5 19:19 - * @Description: TODO - */ -public class RandomUtils { - - public static Long spawnSnowId() { - Random random = new Random(); - return random.nextLong(); - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java deleted file mode 100644 index c2bd2ca..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.paradogs.common.core.utils; - -import com.paradogs.common.core.msg.BaseMsg; - -import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; - -/** - * @author: yumi - * @date: 2023/9/23 9:57 - * @Description: 反射工具类 - */ -public class ReflectUtils { - - /** - * 获取返回类中的泛型类型 - * @param method - * @return - */ - public static Class getGenericReturnType(Method method) { - // 获取方法的返回类型信息 - Type type = method.getGenericReturnType(); - // 判断返回类型是否为参数化类型(即带有泛型参数) - if (type instanceof ParameterizedType) { - // 获取泛型参数的实际类型 - Type typeArg = ((ParameterizedType) type).getActualTypeArguments()[0]; - // 判断实际类型是否为 Class 对象 - if (typeArg instanceof Class) { - // 将实际类型转换为 Class 对象 - return (Class) typeArg; - } - } - return null; - } - -} diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java b/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java deleted file mode 100644 index aff4e75..0000000 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.paradogs.common.core.utils; - - -/** - * @author: yumi - * @date: 2023/2/17 0:25 - * @Description: TODO - */ -public class StringUtils extends org.apache.commons.lang.StringUtils { - - public static String firstChar2UpperCase(String str) { - if (isBlank(str)) {return "";} - return str.substring(0, 1).toUpperCase() + str.substring(1); - } -} diff --git a/paradogs-common/paradogs-common-core/src/main/resources/config/application.yml b/paradogs-common/paradogs-common-core/src/main/resources/config/application.yml deleted file mode 100644 index e69de29..0000000 diff --git a/paradogs-common/paradogs-common-core/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-core/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index b332e87..0000000 --- a/paradogs-common/paradogs-common-core/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,14 +0,0 @@ -com.paradogs.common.core.config.NettyConfiguration - -com.paradogs.common.core.config.UtilsConfiguration - -com.paradogs.common.core.config.RPCConfiguration - -com.paradogs.common.core.CoreStarter - -com.paradogs.common.core.config.QueueConfiguration - - - - - diff --git a/paradogs-common/paradogs-common-core/target/classes/config/application.yml b/paradogs-common/paradogs-common-core/target/classes/config/application.yml deleted file mode 100644 index e69de29..0000000 diff --git a/paradogs-common/paradogs-common-core/target/maven-archiver/pom.properties b/paradogs-common/paradogs-common-core/target/maven-archiver/pom.properties deleted file mode 100644 index 0353ec7..0000000 --- a/paradogs-common/paradogs-common-core/target/maven-archiver/pom.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Generated by Maven -#Sat Aug 26 17:09:23 CST 2023 -version=0.0.1 -groupId=com.paradogs -artifactId=paradogs-common-core-starter diff --git a/paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index 7b633e5..0000000 --- a/paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,93 +0,0 @@ -com\paradogs\common\core\server\ServerLauncher.class -com\paradogs\common\core\events\ReceiveMsgEvent.class -com\paradogs\common\core\master\MasterChannelInitializer.class -com\paradogs\common\core\msg\MsgContextHolder.class -com\paradogs\common\core\annoations\rpc\RPCInterfaceScanner.class -com\paradogs\common\core\queue\QueueManager$QueueType.class -com\paradogs\common\core\annoations\rpc\RpcResponseResolver.class -com\paradogs\common\core\annoations\exception\PdgExceptionHandler.class -com\paradogs\common\core\netty\pipelines\MsgHeaderWrapper.class -com\paradogs\common\core\annoations\base\BaseScanner.class -com\paradogs\common\core\annoations\request\PdgController.class -com\paradogs\common\core\netty\codec\ServerCodec.class -com\paradogs\common\core\master\MasterLauncher.class -com\paradogs\common\core\utils\MsgUtils.class -com\paradogs\common\core\annoations\EnableParadogs.class -com\paradogs\common\core\msg\BaseMsg.class -com\paradogs\common\core\utils\RouteUtils.class -com\paradogs\common\core\netty\events\MainLoopEvent.class -com\paradogs\common\core\utils\TimeUtils.class -com\paradogs\common\core\events\base\AnonEvent$AnonObject.class -com\paradogs\common\core\events\base\BaseEvent.class -com\paradogs\common\core\server\ServerLauncher$Server.class -com\paradogs\common\core\events\SyncMsgEvent.class -com\paradogs\common\core\annoations\request\PdgMsg.class -com\paradogs\common\core\msg\GCTestMsg.class -com\paradogs\common\core\events\ChannelInactiveEvent.class -com\paradogs\common\core\msg\CGTestMsg.class -com\paradogs\common\core\queue\QueueConfiguration.class -com\paradogs\common\core\rpc\InitRPC.class -com\paradogs\common\core\utils\BeanUtils.class -com\paradogs\common\core\utils\ProtoUtils.class -com\paradogs\common\core\msg\BaseMsg_CmdVersion.class -com\paradogs\common\core\events\base\AnonEvent.class -com\paradogs\common\core\annoations\request\PdgMsgMapping.class -com\paradogs\common\core\events\ServerStartEvent.class -com\paradogs\common\core\netty\events\ServerEvent$START.class -com\paradogs\common\core\server\ServerProperties.class -com\paradogs\common\core\exceptions\ServiceException.class -com\paradogs\common\core\msg\MsgHeader.class -com\paradogs\common\core\annoations\rpc\RPCProxyBean.class -com\paradogs\common\core\queue\MainMsgConsumerThread.class -com\paradogs\common\core\events\RPCRequestEvent.class -com\paradogs\common\core\master\MasterClient.class -com\paradogs\common\core\utils\StringUtils.class -com\paradogs\common\core\events\ServerConnectionInitEvent.class -com\paradogs\common\core\netty\events\ServerEvent.class -com\paradogs\common\core\netty\pipelines\BaseMsgHandler.class -com\paradogs\common\core\utils\EventUtils.class -com\paradogs\common\core\annoations\rpc\RPCProxyInterceptor.class -com\paradogs\common\core\annoations\rpc\PdgRPCMapping.class -com\paradogs\common\core\master\MasterProperties$MasterConfig.class -com\paradogs\common\core\msg\IMsgSerializable.class -com\paradogs\common\core\annoations\rpc\RpcResponseResolver$RespData.class -com\paradogs\common\core\listeners\PdgEventListener.class -com\paradogs\common\core\events\RPCRespEvent.class -com\paradogs\common\core\netty\codec\ConnectorCodec.class -com\paradogs\common\core\msg\MsgContextHolder$Snapshot.class -com\paradogs\common\core\netty\initializer\BaseChannelInitializer.class -com\paradogs\common\core\netty\initializer\DefaultChannelInitializer.class -com\paradogs\common\core\annoations\exception\PdgExceptionHandlerClass.class -com\paradogs\common\core\queue\QueueManager.class -com\paradogs\common\core\exceptions\base\BaseUncheckedException.class -com\paradogs\common\core\netty\codec\CodecConfiguration.class -com\paradogs\common\core\queue\DBTaskConsumerThread.class -com\paradogs\common\core\annoations\rpc\PdgRPC.class -com\paradogs\common\core\master\MasterProperties.class -com\paradogs\common\core\annoations\request\PdgRequestHolder.class -com\paradogs\common\core\queue\QueueProperties.class -com\paradogs\common\core\msg\CGMsg.class -com\paradogs\common\core\exceptions\base\BaseCheckedException.class -com\paradogs\common\core\annoations\request\PdgRequestInterfaceSelector.class -com\paradogs\common\core\annoations\base\BaseImportSelector.class -com\paradogs\common\core\exceptions\SerializationException.class -com\paradogs\common\core\utils\ConnectionUtils.class -com\paradogs\common\core\queue\QueueConsumerThread.class -com\paradogs\common\core\events\ChannelActiveEvent.class -com\paradogs\common\core\msg\DBTask.class -com\paradogs\common\core\exceptions\GlobalExceptionDispatch.class -com\paradogs\common\core\msg\ByteBodyMsg.class -com\paradogs\common\core\msg\GCMsg.class -com\paradogs\common\core\pojo\Connection.class -com\paradogs\common\core\annoations\request\PdgRequestScanner.class -com\paradogs\common\core\pojo\Connection$State.class -com\paradogs\common\core\msg\route\MsgMapping.class -com\paradogs\common\core\msg\VoidMsg.class -com\paradogs\common\core\netty\pipelines\ForwardMsgHandler.class -com\paradogs\common\core\netty\protocol\ProtocolProperties.class -com\paradogs\common\core\utils\SpringUtils.class -com\paradogs\common\core\annoations\rpc\PdgRPCProxyBeanImportSelector.class -com\paradogs\common\core\msg\CommonController.class -com\paradogs\common\core\annoations\loop\PdgIdleLoop.class -com\paradogs\common\core\annoations\rpc\PdgRPCHolder.class -com\paradogs\common\core\netty\ServerMsgHandler.class diff --git a/paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index 458b56a..0000000 --- a/paradogs-common/paradogs-common-core/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,85 +0,0 @@ -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\request\PdgRequestInterfaceSelector.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\pojo\Connection.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\CGMsg.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\queue\QueueManager.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\exceptions\SerializationException.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\queue\QueueConfiguration.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\BaseMsg.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\initializer\BaseChannelInitializer.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\exceptions\base\BaseCheckedException.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\exceptions\base\BaseUncheckedException.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\SyncMsgEvent.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\BeanUtils.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\VoidMsg.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\ServerMsgHandler.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\base\BaseEvent.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\queue\QueueConsumerThread.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\base\AnonEvent.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\DBTask.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\exception\PdgExceptionHandler.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\request\PdgRequestHolder.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\events\ServerEvent.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\pipelines\ForwardMsgHandler.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\request\PdgMsg.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\exceptions\GlobalExceptionDispatch.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\GCMsg.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\exception\PdgExceptionHandlerClass.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\loop\PdgIdleLoop.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\RPCRespEvent.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\listeners\PdgEventListener.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\RPCProxyInterceptor.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\protocol\ProtocolProperties.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\pipelines\MsgHeaderWrapper.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\CGTestMsg.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\exceptions\ServiceException.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\MsgHeader.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\MsgUtils.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\ServerConnectionInitEvent.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\request\PdgRequestScanner.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\ChannelInactiveEvent.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\server\ServerLauncher.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\master\MasterClient.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\queue\DBTaskConsumerThread.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\GCTestMsg.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\route\MsgMapping.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\codec\ServerCodec.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\master\MasterChannelInitializer.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\IMsgSerializable.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\RouteUtils.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\PdgRPC.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\rpc\InitRPC.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\ChannelActiveEvent.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\request\PdgMsgMapping.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\master\MasterProperties.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\CommonController.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\codec\CodecConfiguration.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\PdgRPCProxyBeanImportSelector.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\master\MasterLauncher.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\EnableParadogs.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\RPCProxyBean.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\EventUtils.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\codec\ConnectorCodec.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\base\BaseScanner.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\BaseMsg_CmdVersion.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\ReceiveMsgEvent.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\ProtoUtils.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\ByteBodyMsg.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\TimeUtils.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\initializer\DefaultChannelInitializer.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\ServerStartEvent.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\ConnectionUtils.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\base\BaseImportSelector.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\RPCInterfaceScanner.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\StringUtils.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\PdgRPCMapping.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\events\RPCRequestEvent.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\events\MainLoopEvent.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\queue\QueueProperties.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\request\PdgController.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\PdgRPCHolder.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\queue\MainMsgConsumerThread.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\msg\MsgContextHolder.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\netty\pipelines\BaseMsgHandler.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\annoations\rpc\RpcResponseResolver.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\utils\SpringUtils.java -G:\project\me\git\paradogs\paradogs-common\paradogs-common-core\src\main\java\com\paradogs\common\core\server\ServerProperties.java diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java deleted file mode 100644 index dbbee26..0000000 --- a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.paradogs.common.game.config; - -import com.paradogs.common.core.netty.pipelines.ServerMsgHandler; -import com.paradogs.common.game.server.GameServerMsgHandler; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @author: yumi - * @date: 2023/8/26 17:16 - * @Description: TODO - */ -@Configuration -public class NettyConfiguration { - - @Bean - @ConditionalOnMissingBean(ServerMsgHandler.class) - public ServerMsgHandler baseMsgHandler() { - return new GameServerMsgHandler(); - } -} diff --git a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java b/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java deleted file mode 100644 index 768d9ec..0000000 --- a/paradogs-common/paradogs-common-game-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.paradogs.common.game.server; - -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.netty.pipelines.ServerMsgHandler; -import com.paradogs.common.core.queue.PRQueueHolder; -import io.netty.channel.ChannelHandler; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/26 17:05 - * @Description: TODO - */ -@Slf4j -@Component -@ConditionalOnMissingBean(ServerMsgHandler.class) -@ChannelHandler.Sharable -public class GameServerMsgHandler extends ServerMsgHandler { - - @Autowired - private PRQueueHolder queueManager; - - @Override - protected void processMsg(BaseMsg msg) throws Exception { - queueManager.putMsg(msg); - } - -} diff --git a/paradogs-common/paradogs-common-game-starter/src/main/resources/config/application.yml b/paradogs-common/paradogs-common-game-starter/src/main/resources/config/application.yml deleted file mode 100644 index e69de29..0000000 diff --git a/paradogs-common/paradogs-common-game-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-game-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index ba6cf06..0000000 --- a/paradogs-common/paradogs-common-game-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,7 +0,0 @@ -com.paradogs.common.game.config.NettyConfiguration - -com.paradogs.common.game.config.QueueConfiguration - - - - diff --git a/paradogs-common/paradogs-common-game-starter/target/classes/config/application.yml b/paradogs-common/paradogs-common-game-starter/target/classes/config/application.yml deleted file mode 100644 index e69de29..0000000 diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java deleted file mode 100644 index b158859..0000000 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.paradogs.common.master; - -import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; -import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -/** - * @author: yumi - * @date: 2023/8/26 17:56 - * @Description: TODO - */ -@Import({ - PdgRPCProxyBeanImportSelector.class, - PdgRequestInterfaceSelector.class -}) -@Configuration -public class MasterStarter { - -} diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java b/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java deleted file mode 100644 index 21ad0ed..0000000 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.paradogs.common.master.controller; - -import com.paradogs.common.core.annoations.request.PdgController; -import com.paradogs.common.core.annoations.request.PdgMsgMapping; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.netty.server.PRConnection; -import com.paradogs.common.core.netty.server.PRConnectionHolder; -import com.paradogs.common.core.pojo.Connection; -import com.paradogs.common.core.pojo.ConnectorMessage; -import lombok.extern.slf4j.Slf4j; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @author: yumi - * @date: 2023/8/24 17:45 - * @Description: TODO - */ -@Slf4j -@PdgController -@PdgMsgMapping("_info") -public class MasterController { - - @PdgMsgMapping("getServerInfo") - public List getServerInfo(String serverType) { - Collection conns = PRConnectionHolder.getConnMap().values(); - List collect = conns.stream().filter(conn -> conn.getConnInfo().getType().equals(serverType)).collect(Collectors.toList()); - collect.forEach(System.out::println); - return collect; - } - -// /** -// * 返回一个可连接的 Connector,目前暂时只为第一个 -// * @return -// */ -// @PdgMsgMapping("getConnector") -// public ConnectorMessage getConnector() { -// Collection conns = ConnectionUtils.getConns(); -// Connection connection = conns.stream().filter(conn -> conn.getTargetServer().equals("connector")).findFirst().get(); -// return new ConnectorMessage(connection.getHost(), connection.getPort()); -// } - - @PdgMsgMapping("hello") - public BaseMsg hello() { - log.info("receive hello..."); - return new BaseMsg(); - } -} diff --git a/paradogs-common/paradogs-common-master-starter/src/main/resources/config/application.yml b/paradogs-common/paradogs-common-master-starter/src/main/resources/config/application.yml deleted file mode 100644 index e69de29..0000000 diff --git a/paradogs-common/paradogs-common-master-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-common/paradogs-common-master-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 1f69c2a..0000000 --- a/paradogs-common/paradogs-common-master-starter/target/classes/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,9 +0,0 @@ -com.paradogs.common.master.queue.MasterMsgConsumer - -com.paradogs.common.master.ControllerConfiguration - -com.paradogs.common.master.MasterStarter - - - - diff --git a/paradogs-common/paradogs-common-master-starter/target/classes/config/application.yml b/paradogs-common/paradogs-common-master-starter/target/classes/config/application.yml deleted file mode 100644 index e69de29..0000000 diff --git a/paradogs-test/paradogs-test-client/pom.xml b/paradogs-demo/paradogs-demo-client/pom.xml similarity index 92% rename from paradogs-test/paradogs-test-client/pom.xml rename to paradogs-demo/paradogs-demo-client/pom.xml index ddca020..794d8ed 100644 --- a/paradogs-test/paradogs-test-client/pom.xml +++ b/paradogs-demo/paradogs-demo-client/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - paradogs-test + paradogs-demo com.paradogs 0.0.1 4.0.0 - paradogs-test-client + paradogs-demo-client 8 diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/TestClientApplication.java similarity index 100% rename from paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/TestClientApplication.java rename to paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/TestClientApplication.java diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/BaseMsg.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/BaseMsg.java similarity index 100% rename from paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/BaseMsg.java rename to paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/BaseMsg.java diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/Client.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java similarity index 100% rename from paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/Client.java rename to paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java similarity index 89% rename from paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java rename to paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java index cc36a13..12cfd1f 100644 --- a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java @@ -99,7 +99,6 @@ public class MsgHeader { /** * 反序列化(解码) * @param in - * @throws InvalidProtocolBufferException */ public void deserialization(ByteBuf in) throws IOException { byte[] bytes = new byte[in.readShort()]; @@ -108,16 +107,4 @@ public class MsgHeader { BeanUtils.copyProperties(msgHeader, this); } - public String getServerWithRoute() { - return this.route.substring(0, this.route.indexOf("-")); - } - - public String getRouteMethod() { - return this.route.substring(this.route.indexOf("-") + 1); - } - - public String getServer() { - return this.route.substring(0, this.route.indexOf("-")); - } - } diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java similarity index 100% rename from paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java rename to paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java diff --git a/paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java similarity index 100% rename from paradogs-test/paradogs-test-client/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java rename to paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java diff --git a/paradogs-test/paradogs-test-client/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-client/src/main/resources/application.yml similarity index 100% rename from paradogs-test/paradogs-test-client/src/main/resources/application.yml rename to paradogs-demo/paradogs-demo-client/src/main/resources/application.yml diff --git a/paradogs-common/paradogs-common-master-starter/pom.xml b/paradogs-demo/paradogs-demo-gateway/pom.xml similarity index 80% rename from paradogs-common/paradogs-common-master-starter/pom.xml rename to paradogs-demo/paradogs-demo-gateway/pom.xml index ae4acaa..b22b406 100644 --- a/paradogs-common/paradogs-common-master-starter/pom.xml +++ b/paradogs-demo/paradogs-demo-gateway/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - paradogs-common + paradogs-demo com.paradogs 0.0.1 4.0.0 - paradogs-common-master-starter + paradogs-demo-gateway 8 @@ -19,7 +19,7 @@ com.paradogs - paradogs-common-core + paradogs-framework-connector-starter diff --git a/paradogs-test/paradogs-test-connector/src/main/java/com/paradogs/test/connector/TestConnectorApplication.java b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/TestConnectorApplication.java similarity index 92% rename from paradogs-test/paradogs-test-connector/src/main/java/com/paradogs/test/connector/TestConnectorApplication.java rename to paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/TestConnectorApplication.java index c107e84..541502b 100644 --- a/paradogs-test/paradogs-test-connector/src/main/java/com/paradogs/test/connector/TestConnectorApplication.java +++ b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/TestConnectorApplication.java @@ -1,4 +1,5 @@ -package com.paradogs.test.connector; +package com.paradogs.demo.gateway; + import com.paradogs.common.core.annoations.EnableParadogs; import org.springframework.boot.SpringApplication; diff --git a/paradogs-test/paradogs-test-connector/target/classes/application.yml b/paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml similarity index 85% rename from paradogs-test/paradogs-test-connector/target/classes/application.yml rename to paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml index 0ef42c3..f3f09d3 100644 --- a/paradogs-test/paradogs-test-connector/target/classes/application.yml +++ b/paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml @@ -1,9 +1,8 @@ paradogs: server: - port: 80 + port: 8001 type: connector key: connector-1 - connector: false master: host: localhost port: 8888 diff --git a/paradogs-common/paradogs-common-connector-starter/pom.xml b/paradogs-demo/paradogs-demo-login/pom.xml similarity index 80% rename from paradogs-common/paradogs-common-connector-starter/pom.xml rename to paradogs-demo/paradogs-demo-login/pom.xml index 738afe9..cd082b8 100644 --- a/paradogs-common/paradogs-common-connector-starter/pom.xml +++ b/paradogs-demo/paradogs-demo-login/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - paradogs-common + paradogs-demo com.paradogs 0.0.1 4.0.0 - paradogs-common-connector-starter + paradogs-demo-login 8 @@ -19,7 +19,7 @@ com.paradogs - paradogs-common-core + paradogs-framework-connector-starter diff --git a/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/LoginApplication.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/test/login/LoginApplication.java similarity index 100% rename from paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/LoginApplication.java rename to paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/test/login/LoginApplication.java diff --git a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-login/src/main/resources/application.yml similarity index 72% rename from paradogs-test/paradogs-test-connector/src/main/resources/application.yml rename to paradogs-demo/paradogs-demo-login/src/main/resources/application.yml index 0ef42c3..07e161f 100644 --- a/paradogs-test/paradogs-test-connector/src/main/resources/application.yml +++ b/paradogs-demo/paradogs-demo-login/src/main/resources/application.yml @@ -1,9 +1,8 @@ paradogs: server: port: 80 - type: connector - key: connector-1 - connector: false + type: login + key: login-1 master: host: localhost port: 8888 diff --git a/paradogs-test/paradogs-test-connector/pom.xml b/paradogs-demo/paradogs-demo-master/pom.xml similarity index 80% rename from paradogs-test/paradogs-test-connector/pom.xml rename to paradogs-demo/paradogs-demo-master/pom.xml index 9be34d5..72dd4be 100644 --- a/paradogs-test/paradogs-test-connector/pom.xml +++ b/paradogs-demo/paradogs-demo-master/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - paradogs-test + paradogs-demo com.paradogs 0.0.1 4.0.0 - paradogs-test-connector + paradogs-demo-master 8 @@ -19,7 +19,7 @@ com.paradogs - paradogs-common-connector-starter + paradogs-framework-master-starter diff --git a/paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java b/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/MasterApplication.java similarity index 75% rename from paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java rename to paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/MasterApplication.java index 7711cde..9cd7637 100644 --- a/paradogs-test/paradogs-test-master/src/main/java/com/paradogs/test/master/MasterApplication.java +++ b/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/MasterApplication.java @@ -1,8 +1,6 @@ -package com.paradogs.test.master; +package com.paradogs.demo.master; import com.paradogs.common.core.annoations.EnableParadogs; -import com.paradogs.common.core.netty.server.PRServer; -import com.paradogs.common.core.utils.SpringUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/paradogs-test/paradogs-test-master/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-master/src/main/resources/application.yml similarity index 100% rename from paradogs-test/paradogs-test-master/src/main/resources/application.yml rename to paradogs-demo/paradogs-demo-master/src/main/resources/application.yml diff --git a/paradogs-common/paradogs-common-client-starter/pom.xml b/paradogs-demo/paradogs-demo-server/pom.xml similarity index 80% rename from paradogs-common/paradogs-common-client-starter/pom.xml rename to paradogs-demo/paradogs-demo-server/pom.xml index d28b00b..e3d1728 100644 --- a/paradogs-common/paradogs-common-client-starter/pom.xml +++ b/paradogs-demo/paradogs-demo-server/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - paradogs-common + paradogs-demo com.paradogs 0.0.1 4.0.0 - paradogs-common-client-starter + paradogs-demo-server 8 @@ -19,7 +19,7 @@ com.paradogs - paradogs-common-core + paradogs-framework-server-starter diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java b/paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/TestServerApplication.java similarity index 100% rename from paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/TestServerApplication.java rename to paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/TestServerApplication.java diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java b/paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/controller/TestController.java similarity index 100% rename from paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/controller/TestController.java rename to paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/controller/TestController.java diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java b/paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java similarity index 100% rename from paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java rename to paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java diff --git a/paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/misc/LoopTest.java b/paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/misc/LoopTest.java similarity index 100% rename from paradogs-test/paradogs-test-server/src/main/java/com/paradogs/test/server/misc/LoopTest.java rename to paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/misc/LoopTest.java diff --git a/paradogs-test/paradogs-test-server/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-server/src/main/resources/application.yml similarity index 100% rename from paradogs-test/paradogs-test-server/src/main/resources/application.yml rename to paradogs-demo/paradogs-demo-server/src/main/resources/application.yml diff --git a/paradogs-test/pom.xml b/paradogs-demo/pom.xml similarity index 70% rename from paradogs-test/pom.xml rename to paradogs-demo/pom.xml index b7b02c4..32f6769 100644 --- a/paradogs-test/pom.xml +++ b/paradogs-demo/pom.xml @@ -9,14 +9,14 @@ 4.0.0 - paradogs-test + paradogs-demo pom - paradogs-test-server - paradogs-test-client - paradogs-test-connector - paradogs-test-login - paradogs-test-master + paradogs-demo-server + paradogs-demo-client + paradogs-demo-gateway + paradogs-demo-login + paradogs-demo-master diff --git a/paradogs-framework/paradogs-framework-connector-starter/pom.xml b/paradogs-framework/paradogs-framework-connector-starter/pom.xml new file mode 100644 index 0000000..a94a6dd --- /dev/null +++ b/paradogs-framework/paradogs-framework-connector-starter/pom.xml @@ -0,0 +1,26 @@ + + + + paradogs-framework + com.paradogs + 0.0.1 + + 4.0.0 + + paradogs-framework-connector-starter + + + 8 + 8 + + + + + com.paradogs + paradogs-framework-core + + + + \ No newline at end of file diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java similarity index 100% rename from paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java rename to paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java diff --git a/paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorServerMsgHandler.java b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorServerMsgHandler.java similarity index 100% rename from paradogs-common/paradogs-common-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorServerMsgHandler.java rename to paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorServerMsgHandler.java diff --git a/paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports similarity index 100% rename from paradogs-common/paradogs-common-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename to paradogs-framework/paradogs-framework-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/paradogs-common/paradogs-common-core/pom.xml b/paradogs-framework/paradogs-framework-core/pom.xml similarity index 92% rename from paradogs-common/paradogs-common-core/pom.xml rename to paradogs-framework/paradogs-framework-core/pom.xml index e447521..b7380e7 100644 --- a/paradogs-common/paradogs-common-core/pom.xml +++ b/paradogs-framework/paradogs-framework-core/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - paradogs-common + paradogs-framework com.paradogs 0.0.1 4.0.0 - paradogs-common-core + paradogs-framework-core 8 diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/CoreStarter.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/CoreStarter.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/CoreStarter.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/CoreStarter.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseScanner.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/base/BaseScanner.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/base/BaseScanner.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/base/BaseScanner.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgController.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgController.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgController.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgController.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsg.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsg.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestScanner.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestScanner.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestScanner.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestScanner.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCInterfaceScanner.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCInterfaceScanner.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCInterfaceScanner.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCInterfaceScanner.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java similarity index 96% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java index 059f9de..b1c419c 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java @@ -5,6 +5,7 @@ import com.paradogs.common.core.events.RPCRequestEvent; import com.paradogs.common.core.msg.BaseMsg; import com.paradogs.common.core.utils.EventUtils; import com.paradogs.common.core.utils.ReflectUtils; +import com.paradogs.common.core.utils.RouteUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.aop.support.AopUtils; import org.springframework.cglib.proxy.MethodInterceptor; @@ -77,7 +78,7 @@ public class RPCProxyInterceptor implements MethodInterceptor { // 解耦 MsgUtils EventUtils.publishEvent(new RPCRequestEvent( - pdgRPC.value() + "-" + pdgRPCMapping.value(), + pdgRPC.value() + RouteUtils.SERVER_SEPARATOR + pdgRPCMapping.value(), requestMsg != null ? requestMsg : new BaseMsg(), returnType, promise diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/QueueConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/QueueConfiguration.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/QueueConfiguration.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/QueueConfiguration.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelActiveEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ChannelActiveEvent.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ChannelActiveEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ChannelActiveEvent.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ServerStartEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ServerStartEvent.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/ServerStartEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ServerStartEvent.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/AnonEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/base/AnonEvent.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/AnonEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/base/AnonEvent.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/ServiceException.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/ServiceException.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/ServiceException.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/ServiceException.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseCheckedException.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseCheckedException.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseCheckedException.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseCheckedException.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CGMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CGMsg.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CGMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CGMsg.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CGTestMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CGTestMsg.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/CGTestMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CGTestMsg.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCTestMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/GCTestMsg.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/GCTestMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/GCTestMsg.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java similarity index 91% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java index 2513197..66cae60 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java @@ -111,16 +111,8 @@ public class MsgHeader implements IMsgSerializable { BeanUtils.copyProperties(msgHeader, this); } - public String getServerWithRoute() { - return this.route.substring(0, this.route.indexOf("-")); - } - - public String getRouteMethod() { - return this.route.substring(this.route.indexOf("-") + 1); - } - public String getServer() { - return this.route.substring(0, this.route.indexOf("-")); + return this.route.substring(0, this.route.indexOf(RouteUtils.SERVER_SEPARATOR)); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/route/MsgMapping.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/route/MsgMapping.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/msg/route/MsgMapping.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/route/MsgMapping.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientChannelInitializer.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientChannelInitializer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientChannelInitializer.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRCodec.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRCodec.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/PRCodec.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRCodec.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClient.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClient.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClient.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClient.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java similarity index 95% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java index 8ebd51f..cdac957 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java @@ -32,7 +32,7 @@ public class PRMasterClientMsgHandler extends PRAbstractClientMsgHandler { super.channelActive(ctx); ServerProperties properties = SpringUtils.getBean(ServerProperties.class); PRConnection uninitializedConn = PRConnectionHolder.getUninitializedConnMap().get(ctx.channel()); - MsgUtils.send("master-_paradogs.initInfo", properties, ctx.channel()); + MsgUtils.send("master|_paradogs.initInfo", properties, ctx.channel()); } @Override diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRConnection.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRConnection.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRConnection.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRConnection.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java similarity index 89% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java index d65c9fc..7f433a6 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java @@ -1,6 +1,7 @@ package com.paradogs.common.core.netty.server; import com.paradogs.common.core.msg.CGMsg; +import com.paradogs.common.core.utils.RouteUtils; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -54,7 +55,7 @@ public class ServerProperties extends CGMsg { if (StringUtils.isNotBlank(this.key)) { return this.key; } - return this.key = type + "-" + UUID.randomUUID().toString().replace("-", ""); + return this.key = type + RouteUtils.SERVER_SEPARATOR + UUID.randomUUID().toString().replace("-", ""); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/pojo/Connection.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/pojo/Connection.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/pojo/Connection.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/AbstractMsgConsumer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/AbstractMsgConsumer.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/AbstractMsgConsumer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/AbstractMsgConsumer.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueProperties.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/QueueProperties.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/queue/QueueProperties.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/QueueProperties.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java similarity index 96% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java index 13659d1..d2c2890 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java @@ -98,7 +98,7 @@ public class MsgUtils { // 发起请求 MsgUtils.send(route, msg); // 开启响应监听 - EventUtils.on4Once(route + RouteUtils.RESPONSE_SUFFIX, msg.getMsgHeader().getId(), returnClass, promise); + EventUtils.on4Once(route, msg.getMsgHeader().getId(), returnClass, promise); return promise; } public static CompletableFuture request(String route, T msg, Class returnClass) { @@ -138,12 +138,12 @@ public class MsgUtils { MsgHeader header = msg.getMsgHeader(); // 获取映射 - MsgMapping mapping = PRMsgMappingHolder.getMsgMapping(header.getRouteMethod()); + MsgMapping mapping = PRMsgMappingHolder.getMsgMapping(RouteUtils.getPath(header.getRoute())); if (mapping == null) { log.warn("Not found Mapping Method, route: {}", header.getRoute()); return; } - Class msgClass = PRMsgMappingHolder.getMsgMappingClass(header.getRouteMethod()); + Class msgClass = PRMsgMappingHolder.getMsgMappingClass(RouteUtils.getPath(header.getRoute())); /** * 执行对应 Handler 方法 diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java similarity index 37% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java index 5149a9a..95f2b44 100644 --- a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java @@ -8,26 +8,16 @@ package com.paradogs.common.core.utils; public class RouteUtils { /** - * 响应路由后缀 + * 服务名分隔符 */ - public static final String RESPONSE_SUFFIX = "|resp"; - - /** - * 生成请求路由的响应路由 - * @param route 请求路由 - * @param server 响应路由 key - * @return - */ - public static String genRespRoute(String route, String server) { - return server + "-" + RouteUtils.getPath(route) + RESPONSE_SUFFIX; - } + public static final String SERVER_SEPARATOR = "|"; public static String getServer(String route) { - return route.substring(0, route.indexOf("-")); + return route.substring(0, route.indexOf(RouteUtils.SERVER_SEPARATOR)); } public static String getPath(String route) { - return route.substring(route.indexOf("-") + 1); + return route.substring(route.indexOf(RouteUtils.SERVER_SEPARATOR) + 1); } } diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java diff --git a/paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/TimeUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/TimeUtils.java similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/java/com/paradogs/common/core/utils/TimeUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/TimeUtils.java diff --git a/paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports similarity index 100% rename from paradogs-common/paradogs-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename to paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/paradogs-common/paradogs-common-client-starter/src/main/resources/config/application.yml b/paradogs-framework/paradogs-framework-core/src/main/resources/config/application.yml similarity index 100% rename from paradogs-common/paradogs-common-client-starter/src/main/resources/config/application.yml rename to paradogs-framework/paradogs-framework-core/src/main/resources/config/application.yml diff --git a/paradogs-common/paradogs-common-game-starter/pom.xml b/paradogs-framework/paradogs-framework-master-starter/pom.xml similarity index 79% rename from paradogs-common/paradogs-common-game-starter/pom.xml rename to paradogs-framework/paradogs-framework-master-starter/pom.xml index cc9f3e8..4683623 100644 --- a/paradogs-common/paradogs-common-game-starter/pom.xml +++ b/paradogs-framework/paradogs-framework-master-starter/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - paradogs-common + paradogs-framework com.paradogs 0.0.1 4.0.0 - paradogs-common-server-starter + paradogs-framework-master-starter 8 @@ -19,7 +19,7 @@ com.paradogs - paradogs-common-core + paradogs-framework-core diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java similarity index 100% rename from paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java rename to paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java similarity index 100% rename from paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java rename to paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java diff --git a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java similarity index 95% rename from paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java rename to paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java index a6498e8..154d1af 100644 --- a/paradogs-common/paradogs-common-master-starter/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java @@ -20,7 +20,7 @@ import java.lang.reflect.InvocationTargetException; * @Description: TODO */ @Slf4j -@Primary // 不好控制 bean 注册顺序, @onMissingBean 会失败,使用 @Primary 覆盖默认类 +@Primary // 不好控制 bean 注册顺序, @onMissingBean 会失败(@Scope 会导致该注解失效),使用 @Primary 覆盖默认类 @Component public class MasterMsgConsumer extends AbstractMsgConsumer { diff --git a/paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports similarity index 100% rename from paradogs-common/paradogs-common-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename to paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/paradogs-framework/paradogs-framework-server-starter/pom.xml b/paradogs-framework/paradogs-framework-server-starter/pom.xml new file mode 100644 index 0000000..90a9061 --- /dev/null +++ b/paradogs-framework/paradogs-framework-server-starter/pom.xml @@ -0,0 +1,26 @@ + + + + paradogs-framework + com.paradogs + 0.0.1 + + 4.0.0 + + paradogs-framework-server-starter + + + 8 + 8 + + + + + com.paradogs + paradogs-framework-core + + + + \ No newline at end of file diff --git a/paradogs-common/paradogs-common-game-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports similarity index 100% rename from paradogs-common/paradogs-common-game-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename to paradogs-framework/paradogs-framework-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/paradogs-common/pom.xml b/paradogs-framework/pom.xml similarity index 61% rename from paradogs-common/pom.xml rename to paradogs-framework/pom.xml index 71b6953..60a7705 100644 --- a/paradogs-common/pom.xml +++ b/paradogs-framework/pom.xml @@ -8,14 +8,13 @@ 0.0.1 4.0.0 - paradogs-common + paradogs-framework pom - paradogs-common-core - paradogs-common-connector-starter - paradogs-common-client-starter - paradogs-common-game-starter - paradogs-common-master-starter + paradogs-framework-core + paradogs-framework-connector-starter + paradogs-framework-server-starter + paradogs-framework-master-starter \ No newline at end of file diff --git a/paradogs-test/paradogs-test-client/target/classes/application.yml b/paradogs-test/paradogs-test-client/target/classes/application.yml deleted file mode 100644 index 9f0c30f..0000000 --- a/paradogs-test/paradogs-test-client/target/classes/application.yml +++ /dev/null @@ -1,6 +0,0 @@ -paradogs: - clients: - - host: localhost - port: 80 - server: connector - diff --git a/paradogs-test/paradogs-test-login/pom.xml b/paradogs-test/paradogs-test-login/pom.xml deleted file mode 100644 index d704036..0000000 --- a/paradogs-test/paradogs-test-login/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - paradogs-test - com.paradogs - 0.0.1 - - 4.0.0 - - paradogs-test-login - - - 8 - 8 - - - - - com.paradogs - paradogs-common-server-starter - - - - \ No newline at end of file diff --git a/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/controller/LoginController.java b/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/controller/LoginController.java deleted file mode 100644 index 70ba3a0..0000000 --- a/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/controller/LoginController.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.paradogs.test.login.controller; - -import com.paradogs.common.core.annoations.request.PdgController; -import com.paradogs.common.core.annoations.request.PdgMsgMapping; -import com.paradogs.common.core.pojo.ConnectorMessage; -import com.paradogs.test.login.rpc.MasterClient; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.concurrent.CompletableFuture; - -/** - * @author: yumi - * @date: 2023/9/5 14:12 - * @Description: TODO - */ -@Slf4j -@PdgController -@PdgMsgMapping("login") -public class LoginController { - - @Autowired - private MasterClient masterClient; - - @PdgMsgMapping("login") - public CompletableFuture login() { - CompletableFuture a = masterClient.getConnector(); - a.thenAccept(connectorMessage -> { - log.info("success: {} >>>>>>>>>>>>>>>>>>", connectorMessage); - }); - return a; - } - -} diff --git a/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/rpc/MasterClient.java b/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/rpc/MasterClient.java deleted file mode 100644 index f266f3f..0000000 --- a/paradogs-test/paradogs-test-login/src/main/java/com/paradogs/test/login/rpc/MasterClient.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.paradogs.test.login.rpc; - -import com.paradogs.common.core.annoations.rpc.PdgRPC; -import com.paradogs.common.core.annoations.rpc.PdgRPCMapping; -import com.paradogs.common.core.pojo.ConnectorMessage; - -import java.util.concurrent.CompletableFuture; - -/** - * @author: yumi - * @date: 2023/9/5 14:24 - * @Description: TODO - */ -@PdgRPC("master") -public interface MasterClient { - - @PdgRPCMapping("_info.getConnector") - CompletableFuture getConnector(); - -} diff --git a/paradogs-test/paradogs-test-login/src/main/resources/application.yml b/paradogs-test/paradogs-test-login/src/main/resources/application.yml deleted file mode 100644 index e7c1f91..0000000 --- a/paradogs-test/paradogs-test-login/src/main/resources/application.yml +++ /dev/null @@ -1,14 +0,0 @@ -paradogs: - server: - port: 8080 - type: login - name: login-1 - connector: false - masters: - - host: localhost - port: 8888 -# 日志级别配置 -logging: - level: - # 指定的包路径 - com.paradogs: debug \ No newline at end of file diff --git a/paradogs-test/paradogs-test-login/target/classes/application.yml b/paradogs-test/paradogs-test-login/target/classes/application.yml deleted file mode 100644 index e7c1f91..0000000 --- a/paradogs-test/paradogs-test-login/target/classes/application.yml +++ /dev/null @@ -1,14 +0,0 @@ -paradogs: - server: - port: 8080 - type: login - name: login-1 - connector: false - masters: - - host: localhost - port: 8888 -# 日志级别配置 -logging: - level: - # 指定的包路径 - com.paradogs: debug \ No newline at end of file diff --git a/paradogs-test/paradogs-test-master/pom.xml b/paradogs-test/paradogs-test-master/pom.xml deleted file mode 100644 index 3f0a609..0000000 --- a/paradogs-test/paradogs-test-master/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - paradogs-test - com.paradogs - 0.0.1 - - 4.0.0 - - paradogs-test-master - - - 8 - 8 - - - - - com.paradogs - paradogs-common-master-starter - - - - \ No newline at end of file diff --git a/paradogs-test/paradogs-test-master/target/classes/application.yml b/paradogs-test/paradogs-test-master/target/classes/application.yml deleted file mode 100644 index 5447101..0000000 --- a/paradogs-test/paradogs-test-master/target/classes/application.yml +++ /dev/null @@ -1,11 +0,0 @@ -paradogs: - server: - port: 8888 - type: master - name: master-1 - master: true -# 日志级别配置 -logging: - level: - # 指定的包路径 - com.paradogs: debug \ No newline at end of file diff --git a/paradogs-test/paradogs-test-server/pom.xml b/paradogs-test/paradogs-test-server/pom.xml deleted file mode 100644 index 77128fe..0000000 --- a/paradogs-test/paradogs-test-server/pom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - paradogs-test - com.paradogs - 0.0.1 - - 4.0.0 - - paradogs-test-server - - - 8 - 8 - - - - - com.paradogs - paradogs-common-server-starter - - - - \ No newline at end of file diff --git a/paradogs-test/paradogs-test-server/target/classes/application.yml b/paradogs-test/paradogs-test-server/target/classes/application.yml deleted file mode 100644 index d129bca..0000000 --- a/paradogs-test/paradogs-test-server/target/classes/application.yml +++ /dev/null @@ -1,17 +0,0 @@ -paradogs: - server: - port: 8001 - type: test - name: test-1 - connector: false - masters: - - host: localhost - port: 8888 - queue: - main-size: 1 - -# 日志级别配置 -logging: - level: - # 指定的包路径 - com.paradogs: debug \ No newline at end of file diff --git a/pom.xml b/pom.xml index 01db28c..b41038c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,8 +4,8 @@ 4.0.0 pom - paradogs-common - paradogs-test + paradogs-framework + paradogs-demo @@ -86,7 +86,7 @@ com.paradogs - paradogs-common + paradogs-framework 0.0.1 @@ -116,37 +116,25 @@ com.paradogs - paradogs-common-core + paradogs-framework-core 0.0.1 com.paradogs - paradogs-common-server-starter + paradogs-framework-server-starter 0.0.1 com.paradogs - paradogs-common-serverClient-starter + paradogs-framework-connector-starter 0.0.1 com.paradogs - paradogs-common-connector-starter - 0.0.1 - - - - com.paradogs - paradogs-common-client-starter - 0.0.1 - - - - com.paradogs - paradogs-common-master-starter + paradogs-framework-master-starter 0.0.1 -- Gitee From db954475248e071b4c37ed7af63e09493fe85d9e Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Mon, 13 Nov 2023 10:19:44 +0800 Subject: [PATCH 19/32] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=BA=95=E5=B1=82?= =?UTF-8?q?=E7=BD=91=E7=BB=9C=E6=9E=B6=E6=9E=84+=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=9E=B6=E6=9E=84=E8=AE=BE=E8=AE=A1=EF=BC=8C?= =?UTF-8?q?=E6=9A=82=E6=97=B6=E5=85=88=E4=B8=8D=E6=94=B9=E4=BA=86=EF=BC=8C?= =?UTF-8?q?=E6=8E=A5=E4=B8=8B=E6=9D=A5=E5=81=9A=E7=B3=BB=E7=BB=9F=E6=9E=B6?= =?UTF-8?q?=E6=9E=84=E5=92=8C=E4=B8=9A=E5=8A=A1=E6=9E=B6=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/connector/PRConnectorStarter.java | 19 +++ .../src/resources/config/application.yml | 6 + .../core/annoations/EnableParadogs.java | 32 +++++ .../annoations/base/BaseImportSelector.java | 94 ++++++++++++++ .../exception/PdgExceptionHandler.java | 19 +++ .../exception/PdgExceptionHandlerClass.java | 19 +++ .../request/PRMsgMappingHolder.java | 63 ++++++++++ .../annoations/request/PdgMsgMapping.java | 24 ++++ .../common/core/annoations/rpc/PdgRPC.java | 21 ++++ .../core/annoations/rpc/PdgRPCHolder.java | 19 +++ .../core/annoations/rpc/RPCProxyBean.java | 63 ++++++++++ .../annoations/rpc/RpcResponseResolver.java | 110 ++++++++++++++++ .../common/core/annoations/tick/PRTick.java | 16 +++ .../core/config/UtilsConfiguration.java | 30 +++++ .../core/events/ChannelInactiveEvent.java | 21 ++++ .../common/core/events/ReceiveMsgEvent.java | 21 ++++ .../events/ServerConnectionInitEvent.java | 17 +++ .../exceptions/GlobalExceptionDispatch.java | 76 +++++++++++ .../exceptions/SerializationException.java | 15 +++ .../core/listeners/PdgEventListener.java | 51 ++++++++ .../common/core/msg/CommonController.java | 69 ++++++++++ .../com/paradogs/common/core/msg/DBTask.java | 41 ++++++ .../com/paradogs/common/core/msg/GCMsg.java | 17 +++ .../common/core/msg/IMsgSerializable.java | 21 ++++ .../common/core/msg/PRMsgContextHolder.java | 58 +++++++++ .../com/paradogs/common/core/msg/VoidMsg.java | 9 ++ .../netty/PRAbstractChannelInitializer.java | 67 ++++++++++ .../core/netty/PRAbstractMsgHandler.java | 118 ++++++++++++++++++ .../PRAbstractServerChannelInitializer.java | 14 +++ .../netty/PRAbstractServerMsgHandler.java | 9 ++ .../core/netty/PRDefaultMsgHandler.java | 12 ++ .../PRDefaultServerChannelInitializer.java | 18 +++ .../common/core/netty/ProtocolProperties.java | 28 +++++ .../netty/clients/MasterClientProperties.java | 43 +++++++ .../common/core/netty/clients/PRClient.java | 52 ++++++++ .../PRMasterClientChannelInitializer.java | 18 +++ .../core/netty/events/MainLoopEvent.java | 15 +++ .../core/netty/server/PRConnectionHolder.java | 117 +++++++++++++++++ .../common/core/pojo/ConnectorMessage.java | 22 ++++ .../common/core/queue/MsgDefaultConsumer.java | 32 +++++ .../common/core/queue/PRQueueHolder.java | 99 +++++++++++++++ .../com/paradogs/common/core/rpc/InitRPC.java | 21 ++++ .../paradogs/common/core/utils/BeanUtils.java | 48 +++++++ .../common/core/utils/RandomUtils.java | 16 +++ .../common/core/utils/ReflectUtils.java | 37 ++++++ .../common/core/utils/StringUtils.java | 15 +++ .../paradogs/common/master/MasterStarter.java | 20 +++ .../master/controller/MasterController.java | 50 ++++++++ .../src/main/resources/config/application.yml | 0 .../game/config/NettyConfiguration.java | 16 +++ .../game/server/GameServerMsgHandler.java | 30 +++++ .../src/main/resources/config/application.yml | 0 52 files changed, 1868 insertions(+) create mode 100644 paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java create mode 100644 paradogs-framework/paradogs-framework-connector-starter/src/resources/config/application.yml create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CommonController.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/DBTask.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultMsgHandler.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java create mode 100644 paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java create mode 100644 paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java create mode 100644 paradogs-framework/paradogs-framework-master-starter/src/main/resources/config/application.yml create mode 100644 paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java create mode 100644 paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java create mode 100644 paradogs-framework/paradogs-framework-server-starter/src/main/resources/config/application.yml diff --git a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java new file mode 100644 index 0000000..4dfa813 --- /dev/null +++ b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java @@ -0,0 +1,19 @@ +package com.paradogs.common.connector; + +import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; +import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +/** + * @author: yumi + * @date: 2023/8/28 17:53 + * @Description: TODO + */ +@Import({ + PdgRPCProxyBeanImportSelector.class, + PdgRequestInterfaceSelector.class +}) +@Configuration +public class PRConnectorStarter { +} diff --git a/paradogs-framework/paradogs-framework-connector-starter/src/resources/config/application.yml b/paradogs-framework/paradogs-framework-connector-starter/src/resources/config/application.yml new file mode 100644 index 0000000..cfc460e --- /dev/null +++ b/paradogs-framework/paradogs-framework-connector-starter/src/resources/config/application.yml @@ -0,0 +1,6 @@ +paradogs: + queue: + enable: false + main-size: 1 + db-size: 1 + diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java new file mode 100644 index 0000000..2652879 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java @@ -0,0 +1,32 @@ +package com.paradogs.common.core.annoations; + +import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; +import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; +import org.springframework.context.annotation.Import; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/8/14 9:45 + * @Description: TODO + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Import({ + // 等同于使用 META-INF.spring,看 @Import 注释,主要区别在于 @Import 可以手动注册,META-INF 为导入依赖自动注册 + PdgRPCProxyBeanImportSelector.class, + PdgRequestInterfaceSelector.class, +// ServerLauncher.class +}) +public @interface EnableParadogs { + +// /** +// * 扫描包 +// * @return +// */ +// String[] scanPackages(); +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java new file mode 100644 index 0000000..6677a48 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java @@ -0,0 +1,94 @@ +package com.paradogs.common.core.annoations.base; + +import com.paradogs.common.core.utils.TimeUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.ImportSelector; +import org.springframework.core.type.AnnotationMetadata; + +import java.util.Set; + +/** + * @author: yumi + * @date: 2023/8/25 16:56 + * @Description: TODO + */ +@Slf4j +public abstract class BaseImportSelector implements ImportSelector, BeanFactoryAware { + + private BeanFactory beanFactory; + + @Override + public void setBeanFactory(BeanFactory beanFactory) throws BeansException { + this.beanFactory = beanFactory; + } + + /** + * 使用 @Import 引入时执行的逻辑 + * @param importingClassMetadata + * @return + */ + @Override + public String[] selectImports(AnnotationMetadata importingClassMetadata) { + + long startTime = System.currentTimeMillis(); + + // 设置扫描路径,扫描出符合条件的 bean (接口、类等) + String[] scanPackages = getScanPackages(importingClassMetadata); + + // 获取扫描类 + BaseScanner scanner = getScanner(importingClassMetadata, beanFactory); + + // 扫描出符合条件的 bean + Set beanDefinitions = scanner.isNeedRegister() ? + scanner.findAndRegisterComponents(scanPackages) : + scanner.findCandidateComponents(scanPackages); + + // 循环处理每个被扫描到的bean对象 + for (BeanDefinition beanDefinition : beanDefinitions) { + handle(beanDefinition); + } + + log.debug("Scan: {}, {}", scanPackages, this.getClass().getSimpleName()); + + return new String[0]; + } + + /** + * 设置扫描的路径 + * @param importingClassMetadata + * @return + */ + public String[] getScanPackages(AnnotationMetadata importingClassMetadata) { + try { + // 获取被注解的类(启动类)的 Class,以及包路径 + String startupClassStr = importingClassMetadata.getClassName(); + Class startupClass = Class.forName(startupClassStr); + String startupPackage = startupClass.getPackage().getName(); + + String[] result = new String[]{startupPackage}; + + return result; + + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + + /** + * 设置要扫描的 Scanner + * @param importingClassMetadata + * @param beanFactory + * @return + */ + public abstract BaseScanner getScanner(AnnotationMetadata importingClassMetadata, BeanFactory beanFactory); + + /** + * 处理扫描到的 Bean + * @param beanDefinition + */ + public abstract void handle(BeanDefinition beanDefinition); +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java new file mode 100644 index 0000000..92c3fac --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java @@ -0,0 +1,19 @@ +package com.paradogs.common.core.annoations.exception; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/8/2 9:15 + * @Description: TODO + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface PdgExceptionHandler { + + Class value(); + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java new file mode 100644 index 0000000..c670599 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java @@ -0,0 +1,19 @@ +package com.paradogs.common.core.annoations.exception; + +import org.springframework.stereotype.Component; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/8/2 9:16 + * @Description: TODO + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Component +public @interface PdgExceptionHandlerClass { +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java new file mode 100644 index 0000000..c9a36a3 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java @@ -0,0 +1,63 @@ +package com.paradogs.common.core.annoations.request; + +import com.paradogs.common.core.events.RPCRespEvent; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.ByteBodyMsg; +import com.paradogs.common.core.msg.MsgHeader; +import com.paradogs.common.core.msg.route.MsgMapping; +import com.paradogs.common.core.utils.*; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +/** + * @author: yumi + * @date: 2023/8/25 17:28 + * @Description: TODO + */ +@Slf4j +public class PRMsgMappingHolder { + + private static Map mappingMap = new HashMap<>(); + + public static MsgMapping put(String route, MsgMapping mapping) { + return mappingMap.put(route, mapping); + } + + /** + * 获取映射 + * @param route + * @return + */ + public static MsgMapping getMsgMapping(String route) { + return PRMsgMappingHolder.mappingMap.get(route); + } + + /** + * 获取路由映射的传参数据对象类型 + * @param route + * @return + */ + public static Class getMsgMappingClass(String route) { + MsgMapping msgMapping = PRMsgMappingHolder.getMsgMapping(route); + if (msgMapping == null || msgMapping.getMsgClass() == null || msgMapping.getMsgClass().isAssignableFrom(void.class)) { + return null; + } + return msgMapping.getMsgClass(); + } + + /** + * 是否存在对应路由映射 + * @param route + * @return + */ + public static boolean containsRoute(String route) { + return PRMsgMappingHolder.mappingMap.containsKey(route); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java new file mode 100644 index 0000000..e63882b --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java @@ -0,0 +1,24 @@ +package com.paradogs.common.core.annoations.request; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/8/1 15:19 + * @Description: TODO + * 根据消息 class 映射找到对应的处理方法 + */ +@Target({ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +public @interface PdgMsgMapping { + + /** + * 路由路径 + * @return + */ + String value(); + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java new file mode 100644 index 0000000..01e573d --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java @@ -0,0 +1,21 @@ +package com.paradogs.common.core.annoations.rpc; + +import java.lang.annotation.*; + +/** + * @author: yumi + * @date: 2023/8/13 12:19 + * @Description: TODO + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface PdgRPC { + + /** + * 服务名 + * @return + */ + String value(); + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java new file mode 100644 index 0000000..4aac54f --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java @@ -0,0 +1,19 @@ +package com.paradogs.common.core.annoations.rpc; + +import com.paradogs.common.core.msg.route.MsgMapping; +import lombok.Getter; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author: yumi + * @date: 2023/8/25 17:33 + * @Description: TODO + */ +public class PdgRPCHolder { + + @Getter + private static Map mappingMap = new HashMap<>(); + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java new file mode 100644 index 0000000..f8fd7d3 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java @@ -0,0 +1,63 @@ +package com.paradogs.common.core.annoations.rpc; + +import org.springframework.beans.factory.FactoryBean; +import org.springframework.cglib.proxy.Enhancer; + +/** + * @author: yumi + * @date: 2023/8/13 9:37 + * @Description: TODO + */ +public class RPCProxyBean implements FactoryBean { + + /** + * 被代理的接口 + */ + private Class myInterfaceClass; + + /** + * 构造函数 + * @param myInterfaceClass 被代理的接口类型,该参数,由注解解析器自动赋值 + */ + public RPCProxyBean(Class myInterfaceClass) { + this.myInterfaceClass = myInterfaceClass; + } + + /** + * 返回该bean是否为单例类型 + * @return + */ + @Override + public boolean isSingleton() { + return FactoryBean.super.isSingleton(); + } + + /** + * 当 ioc 容器提取对象时,调用此方法获取一个代理对象 + * @return + * @throws Exception + */ + @Override + public T getObject() throws Exception { + + //用于创建代理对象的增强器,可以对目标对象进行扩展 + Enhancer enhancer = new Enhancer(); + //将目标对象设置为父类 + enhancer.setSuperclass(myInterfaceClass); + //设置目标拦截器 + enhancer.setCallback(new RPCProxyInterceptor()); + // 创建代理对象 + return (T)enhancer.create(); + + } + + /** + * 当 ioc 容器获取类型时,从此方法获取类型 + * @return + */ + @Override + public Class getObjectType() { + return myInterfaceClass; + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java new file mode 100644 index 0000000..02553b0 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java @@ -0,0 +1,110 @@ +package com.paradogs.common.core.annoations.rpc; + +import com.paradogs.common.core.events.RPCRespEvent; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.GCMsg; +import com.paradogs.common.core.msg.PRMsgContextHolder; +import com.paradogs.common.core.utils.RouteUtils; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author: yumi + * @date: 2023/8/11 13:45 + * @Description: RPC 响应处理 + */ +@Slf4j +@Component +public class RpcResponseResolver { + + /** + * 等待响应的消息 map + */ + private volatile Map waitRespMap = new ConcurrentHashMap<>(); + + + /** + * 监听 rpc 响应 + * @param event + * @param + */ + @EventListener(RPCRespEvent.class) + private void onRpcMsgResponse(RPCRespEvent event) { + + String key = getReplyMsgKey(event.getMsg()); + try { + // 执行回调方法 + RespData respInfo = waitRespMap.get(key); + if (respInfo == null) { + log.warn("Missing callback listener, maybe timeout"); + return; + } + if (respInfo.getPromise() == null) { + log.warn(""); + return; + } + + // 设置上下文 + PRMsgContextHolder.setContext(respInfo.getMsgContextHolder()); + + // 标记任务完成,执行回调 + boolean isSuccess = respInfo.getPromise().complete(respInfo.getReturnClass().cast(event.getMsg())); + if (!isSuccess) {log.error("Callback promise invoke is fail: {}", respInfo);} + + } catch (Exception e) { + log.error("{}", e.getMessage(), e); + } finally { + // 处理完毕移除响应监听 + waitRespMap.remove(key); + log.debug("release callback listener: {}", key); + } + } + + /** + * 监听一次 + * @param route + * @param cgMsgId + * @param promise + */ + public void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { + this.waitRespMap.put(getMsgKey(route, cgMsgId), new RespData(returnClass, promise, PRMsgContextHolder.getSnapshot())); + } + + public static String getMsgKey(String route, Long id) { + return RouteUtils.getPath(route) + id; + } + + public static String getReplyMsgKey(T msg) { + return getMsgKey(msg.getMsgHeader().getRoute(), msg.getMsgHeader().getReplyMsgId()); + } + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class RespData { + + /** + * 返回消息类型 + */ + private Class returnClass; + + /** + * 回调方法 + */ + private CompletableFuture promise; + + /** + * 开始监听时的上下文状态 + */ + private PRMsgContextHolder.Snapshot msgContextHolder; + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java new file mode 100644 index 0000000..379c56a --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java @@ -0,0 +1,16 @@ +package com.paradogs.common.core.annoations.tick; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: yumi + * @date: 2023/8/4 9:54 + * @Description: 添加上该注解的方法,会在每次主循环执行一次 + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface PRTick { +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java new file mode 100644 index 0000000..59c97bf --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java @@ -0,0 +1,30 @@ +package com.paradogs.common.core.config; + +import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.SpringUtils; +import org.springframework.context.annotation.Bean; + +/** + * @author: yumi + * @date: 2023/8/26 17:28 + * @Description: TODO + */ +public class UtilsConfiguration { + + @Bean + public EventUtils eventUtils() { + return new EventUtils(); + } + + @Bean + public SpringUtils springUtils() { + return new SpringUtils(); + } + + @Bean + public MsgUtils msgUtils() { + return new MsgUtils(); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java new file mode 100644 index 0000000..8c0b1b8 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java @@ -0,0 +1,21 @@ +package com.paradogs.common.core.events; + +import com.paradogs.common.core.events.base.AnonEvent; +import io.netty.channel.ChannelHandlerContext; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/8/10 14:57 + * @Description: 连接断开 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ChannelInactiveEvent extends AnonEvent { + + private ChannelHandlerContext ctx; + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java new file mode 100644 index 0000000..c9b457a --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java @@ -0,0 +1,21 @@ +package com.paradogs.common.core.events; + +import com.paradogs.common.core.events.base.AnonEvent; +import com.paradogs.common.core.msg.BaseMsg; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/8/11 9:57 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ReceiveMsgEvent extends AnonEvent { + + private T msg; + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java new file mode 100644 index 0000000..21aee01 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java @@ -0,0 +1,17 @@ +package com.paradogs.common.core.events; + +import com.paradogs.common.core.events.base.AnonEvent; +import com.paradogs.common.core.pojo.Connection; +import lombok.Data; + +/** + * @author: yumi + * @date: 2023/8/16 16:53 + * @Description: 服务器客户端连接初始化事件 + */ +@Data +public class ServerConnectionInitEvent extends AnonEvent { + + private Connection connection; + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java new file mode 100644 index 0000000..e4923ed --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java @@ -0,0 +1,76 @@ +package com.paradogs.common.core.exceptions; + +import com.paradogs.common.core.annoations.exception.PdgExceptionHandler; +import com.paradogs.common.core.annoations.exception.PdgExceptionHandlerClass; +import com.paradogs.common.core.utils.SpringUtils; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +/** + * @author: yumi + * @date: 2023/8/2 9:12 + * @Description: TODO + */ +@Slf4j +@Component +public class GlobalExceptionDispatch { + + @Getter + private Map, Method> exceptionHandlerMap = new HashMap<>(); + + /** + * 加载注册异常处理 + */ + @PostConstruct + public void registerExceptionHandler() { + for (Object bean : SpringUtils.getBeansWithAnnotation(PdgExceptionHandlerClass.class).values()) { + for (Method method : bean.getClass().getDeclaredMethods()) { + PdgExceptionHandler pdgExceptionHandler = method.getAnnotation(PdgExceptionHandler.class); + if (pdgExceptionHandler == null) { + continue; + } + exceptionHandlerMap.put(pdgExceptionHandler.value(), method); + } + } + + } + + /** + * 将异常转发到对应异常处理方法 + * ps: 会自动优先找最相近的类 + * @param throwable + */ + public void forward(Throwable throwable) { + + if (throwable == null) {return;} + + Throwable realThrowable = throwable.getCause() != null ? throwable.getCause() : throwable; + + // 这里的异常时 InvocationTargetException 反射异常,转换成真正的异常 + Method method = exceptionHandlerMap.get(realThrowable.getClass()); + if (method == null && (method = exceptionHandlerMap.get(Exception.class)) == null) { + realThrowable.printStackTrace(); + return; + } + try { + method.invoke( + SpringUtils.getBean(method.getDeclaringClass()), + Stream.of(method.getParameterTypes()) + .map(type -> Exception.class.isAssignableFrom(type) ? realThrowable : null) + .toArray() + ); + } catch (Exception e) { + // 可能会死循环 + forward(e.getCause()); + } + } + + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java new file mode 100644 index 0000000..d4407c1 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java @@ -0,0 +1,15 @@ +package com.paradogs.common.core.exceptions; + +import com.paradogs.common.core.exceptions.base.BaseUncheckedException; + +/** + * @author: yumi + * @date: 2023/8/1 16:28 + * @Description: TODO + */ +public class SerializationException extends BaseUncheckedException { + + public SerializationException() { + super(1, "序列化异常"); + } +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java new file mode 100644 index 0000000..cdd5bdf --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java @@ -0,0 +1,51 @@ +package com.paradogs.common.core.listeners; + +import com.paradogs.common.core.annoations.tick.PRTick; +import com.paradogs.common.core.netty.events.MainLoopEvent; +import com.paradogs.common.core.utils.SpringUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @author: yumi + * @date: 2023/7/26 16:30 + * @Description: TODO + */ +@Slf4j +@Component +public class PdgEventListener { + + @EventListener(MainLoopEvent.class) + public void onMainLoopEvent(MainLoopEvent event) { + for (Method method : SpringUtils.getMethodsWithAnnotation(PRTick.class)) { + /** + * 待优化:方法参数注入,其他地方也有,可以提取成一个方法 + */ + try { + if (method.getParameterCount() == 0) { + method.invoke( + SpringUtils.getBean(method.getDeclaringClass()) + ); + } else { + method.invoke( + SpringUtils.getBean(method.getDeclaringClass()), + Stream.of(method.getParameterTypes()).map(aClass -> new Object()).collect(Collectors.toList()) + ); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CommonController.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CommonController.java new file mode 100644 index 0000000..8dd658e --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CommonController.java @@ -0,0 +1,69 @@ +package com.paradogs.common.core.msg; + +import com.paradogs.common.core.annoations.request.PdgController; +import com.paradogs.common.core.annoations.request.PdgMsg; +import com.paradogs.common.core.annoations.request.PdgMsgMapping; +import com.paradogs.common.core.events.ChannelActiveEvent; +import com.paradogs.common.core.events.RPCRespEvent; +import com.paradogs.common.core.netty.server.PRConnection; +import com.paradogs.common.core.netty.server.PRConnectionHolder; +import com.paradogs.common.core.netty.server.ServerProperties; +import com.paradogs.common.core.rpc.InitRPC; +import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.common.core.utils.SpringUtils; +import lombok.extern.slf4j.Slf4j; + +import java.time.LocalDateTime; +import java.util.concurrent.CompletableFuture; + +/** + * @author: yumi + * @date: 2023/8/7 16:04 + * @Description: TODO + */ +@Slf4j +@PdgController +@PdgMsgMapping("_paradogs") +public class CommonController { + + @PdgMsgMapping("dist") + public void dist() { + log.info("dist test success ..."); + } + + /** + * 回调处理,通知回调事件 + * GC 消息统一走这里,保证也按队列顺序处理 + * @param msg + */ + @PdgMsgMapping("callback") + public void callback(ByteBodyMsg msg) { + if (msg.getMsgHeader().getReplyMsgId() == null) { + log.error("Not found Callback header.replyMsgId: {}", msg); + return; + } + BaseMsg callbackMsg = new BaseMsg(); + callbackMsg.setMsgHeader(msg.getMsgHeader()); + callbackMsg.deserialization(msg.getDataBytes()); + EventUtils.publishEvent(new RPCRespEvent(callbackMsg)); + } + + /** + * 客户端服务器发来的初始化信息 + * @param properties + */ + @PdgMsgMapping("initInfo") + public void initInfo(@PdgMsg ServerProperties properties) { + // 初始化连接的服务器信息(建立连接后,服务器主动发送自己的信息) + PRConnectionHolder.initConnection(PRMsgContextHolder.getChannel(), properties); + log.info("Server connection init success: {}|{}", properties.getType(), properties.getKey()); + + BaseMsg msg = new BaseMsg(); + MsgHeader header = new MsgHeader(); + header.setRoute("master|_info.hello"); + msg.setMsgHeader(header); + PRMsgContextHolder.getChannel().writeAndFlush(msg); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/DBTask.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/DBTask.java new file mode 100644 index 0000000..399116f --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/DBTask.java @@ -0,0 +1,41 @@ +package com.paradogs.common.core.msg; + +import lombok.Data; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.time.LocalDateTime; + +/** + * @author: yumi + * @date: 2023/7/28 22:50 + * @Description: DB 线程异步数据更新任务 + */ +@Data +public class DBTask { + + /** + * 操作类 + */ + private Object operateObj; + + /** + * 调用方法 + */ + private Method callMethod; + + /** + * 调用参数 + */ + private Object[] params; + + /** + * 任务发起时间 + */ + private LocalDateTime startTime; + + public void call() throws InvocationTargetException, IllegalAccessException { + callMethod.invoke(operateObj, params); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java new file mode 100644 index 0000000..2cb8a91 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java @@ -0,0 +1,17 @@ +package com.paradogs.common.core.msg; + +import lombok.Data; + +/** + * @author: yumi + * @date: 2023/2/16 23:27 + * @Description: TODO + */ +@Data +public abstract class GCMsg extends BaseMsg { + + /** + * 回复的 CG 消息 ID + */ + private Long targetCGMsgId; +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java new file mode 100644 index 0000000..2c1e3c3 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java @@ -0,0 +1,21 @@ +package com.paradogs.common.core.msg; + +import io.netty.buffer.ByteBuf; + +import java.io.IOException; + + +/** + * @author: yumi + * @date: 2023/2/15 21:07 + * @Description: TODO + */ +public interface IMsgSerializable { + + void serialization(ByteBuf out) throws IOException; + + void deserialization(ByteBuf in) throws IOException; + + void deserialization(byte[] bytes) throws IOException; + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java new file mode 100644 index 0000000..d98b72d --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java @@ -0,0 +1,58 @@ +package com.paradogs.common.core.msg; + +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; +import lombok.*; + +/** + * @author: yumi + * @date: 2023/8/13 13:56 + * @Description: 消息上下文 + */ +@Data +public class PRMsgContextHolder { + + @Getter + private static ChannelHandlerContext ctx; + + @Getter + private static Long playerId; + + + public static void setContext(ChannelHandlerContext ctx, Long playerId) { + PRMsgContextHolder.ctx = ctx; + PRMsgContextHolder.playerId = playerId; + } + + public static void setContext(Snapshot snapshot) { + PRMsgContextHolder.ctx = snapshot.ctx; + PRMsgContextHolder.playerId = snapshot.playId; + } + + + /** + * 返回当前上下文快照 + */ + public static PRMsgContextHolder.Snapshot getSnapshot() { + return new PRMsgContextHolder.Snapshot(PRMsgContextHolder.ctx, playerId); + } + + public static Channel getChannel() { + if (PRMsgContextHolder.getCtx() != null) { + return PRMsgContextHolder.getCtx().channel(); + } + return null; + } + + /** + * 快照,与 MsgContextHolder 属性相同 + */ + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class Snapshot { + private ChannelHandlerContext ctx; + private Long playId; + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java new file mode 100644 index 0000000..977ff35 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java @@ -0,0 +1,9 @@ +package com.paradogs.common.core.msg; + +/** + * @author: yumi + * @date: 2023/8/26 16:10 + * @Description: TODO + */ +public class VoidMsg extends BaseMsg { +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java new file mode 100644 index 0000000..08e3933 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java @@ -0,0 +1,67 @@ +package com.paradogs.common.core.netty; + +import com.paradogs.common.core.utils.SpringUtils; +import io.netty.channel.*; +import io.netty.channel.socket.nio.NioSocketChannel; +import io.netty.handler.codec.LengthFieldBasedFrameDecoder; +import io.netty.handler.codec.LengthFieldPrepender; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @author: yumi + * @date: 2023/2/18 13:14 + * @Description: TODO + */ +@Slf4j +public abstract class PRAbstractChannelInitializer extends ChannelInitializer { + + @Autowired + private ProtocolProperties protocolProperties; + + private PRAbstractMsgHandler msgHandler; + + public PRAbstractChannelInitializer(PRAbstractMsgHandler msgHandler) { + this.msgHandler = msgHandler; + } + + /** + * 建立连接,初始化通道(还不能传输消息) + * @param channel + * @throws Exception + */ + @Override + protected void initChannel(NioSocketChannel channel) throws Exception { + + channel.pipeline().addLast(new LengthFieldBasedFrameDecoder( + protocolProperties.getMaxFrameLength(), + protocolProperties.getLengthFieldOffset(), + protocolProperties.getLengthFieldLength(), + protocolProperties.getLengthAdjustment(), + protocolProperties.getInitialBytesToStrip())); + + channel.pipeline().addLast(new LengthFieldPrepender(protocolProperties.getLengthFieldLength())); + + channel.pipeline().addLast(SpringUtils.getBean(PRCodec.class)); + + channel.pipeline().addLast(msgHandler); + + } + + /** + * ChannelInitializer 的 ChannelActive 和 ChannelInboundHandlerAdapter 的不一样,一般用 ChannelInboundHandlerAdapter + * ChannelInitializer.ChannelActive 会不触发 + */ + + /** + * ChannelInitializer 的异常处理 + * @param ctx + * @throws Exception + */ + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + cause.printStackTrace(); + log.error("{}", cause.getMessage()); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java new file mode 100644 index 0000000..89d560b --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java @@ -0,0 +1,118 @@ +package com.paradogs.common.core.netty; + +import com.paradogs.common.core.events.ReceiveMsgEvent; +import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; +import com.paradogs.common.core.msg.ByteBodyMsg; +import com.paradogs.common.core.msg.PRMsgContextHolder; +import com.paradogs.common.core.msg.MsgHeader; +import com.paradogs.common.core.netty.server.PRConnection; +import com.paradogs.common.core.netty.server.PRConnectionHolder; +import com.paradogs.common.core.queue.PRQueueHolder; +import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.SpringUtils; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import lombok.extern.slf4j.Slf4j; + +import java.time.LocalDateTime; + +/** + * @author: yumi + * @date: 2023/7/27 9:32 + * @Description: 消息加入到 MAIN 处理队列 + */ +@Slf4j +public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler { + + /** + * 消息处理 + */ + protected void processMsg(ByteBodyMsg msg) throws Exception { + PRQueueHolder.putMsg(PRQueueHolder.QueueType.MAIN, msg); + } + + /** + * 设置自定义参数 + */ + protected void setProps(ChannelHandlerContext ctx, ByteBodyMsg msg) { + MsgHeader header = msg.getMsgHeader(); + header.setPId(1L); + header.setSendServer(PRConnectionHolder.getConnKey(ctx.channel())); + } + + /** + * 设置消息上下文 + * @param ctx + * @param msg + */ + protected void setContext(ChannelHandlerContext ctx, ByteBodyMsg msg) { + PRMsgContextHolder.setContext(ctx, msg.getMsgHeader().getPId()); + } + + /** + * 校验权限,是否可以处理消息 + * @param ctx + * @param msg + * @return + */ + protected boolean validPerm(ChannelHandlerContext ctx, ByteBodyMsg msg) { + if (PRConnectionHolder.isExcludeRoute(msg.getMsgHeader().getRoute())) { + return true; + } + return PRConnectionHolder.isInitializedChannel(ctx.channel()); + } + + /** + * 消息处理 + * @param ctx + * @param msg + */ + protected final void channelRead0(ChannelHandlerContext ctx, ByteBodyMsg msg) { + + setProps(ctx, msg); + + setContext(ctx, msg); + + if (!validPerm(ctx, msg)) { + log.error("Connection not initialized: {}", PRConnectionHolder.getConnKey(ctx.channel())); + return; + } + + try { + // 消息处理 + processMsg(msg); + + } catch (Exception e) { + // 全局异常处理 + SpringUtils.getBean(GlobalExceptionDispatch.class).forward(e); + + } finally { + EventUtils.publishEvent(new ReceiveMsgEvent<>(msg)); + } + } + + /** + * 连接建立事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + PRConnectionHolder.addNewConnection(ctx.channel()); + } + + /** + * 连接断开事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelInactive(ChannelHandlerContext ctx) throws Exception { + PRConnectionHolder.removeConn(ctx.channel()); + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + log.info("{}", cause.getMessage(), cause); + } +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java new file mode 100644 index 0000000..f611f4e --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java @@ -0,0 +1,14 @@ +package com.paradogs.common.core.netty; + +/** + * @author: yumi + * @date: 2023/11/3 11:10 + * @Description: TODO + */ +public abstract class PRAbstractServerChannelInitializer extends PRAbstractChannelInitializer { + + public PRAbstractServerChannelInitializer(PRAbstractMsgHandler msgHandler) { + super(msgHandler); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java new file mode 100644 index 0000000..0fe2365 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java @@ -0,0 +1,9 @@ +package com.paradogs.common.core.netty; + +/** + * @author: yumi + * @date: 2023/11/3 11:18 + * @Description: TODO + */ +public abstract class PRAbstractServerMsgHandler extends PRAbstractMsgHandler { +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultMsgHandler.java new file mode 100644 index 0000000..2db2f3a --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultMsgHandler.java @@ -0,0 +1,12 @@ +package com.paradogs.common.core.netty; + +import io.netty.channel.ChannelHandler; + +/** + * @author: yumi + * @date: 2023/11/6 17:31 + * @Description: TODO + */ +@ChannelHandler.Sharable +public class PRDefaultMsgHandler extends PRAbstractServerMsgHandler { +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java new file mode 100644 index 0000000..96eca09 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java @@ -0,0 +1,18 @@ +package com.paradogs.common.core.netty; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/11/3 11:25 + * @Description: TODO + */ +@Component +@ConditionalOnMissingBean +public class PRDefaultServerChannelInitializer extends PRAbstractServerChannelInitializer { + + public PRDefaultServerChannelInitializer(PRAbstractMsgHandler msgHandler) { + super(msgHandler); + } +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java new file mode 100644 index 0000000..afd796a --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java @@ -0,0 +1,28 @@ +package com.paradogs.common.core.netty; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/1 9:15 + * @Description: TODO + * 待优化:加上注释和用法 + */ +@Data +@Component +@ConfigurationProperties("paradogs.protocoal") +public class ProtocolProperties { + + private int maxFrameLength = 65534; + + private int lengthFieldOffset = 0; + + private int lengthFieldLength = 2; + + private int lengthAdjustment = 0; + + private int initialBytesToStrip = 2; + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java new file mode 100644 index 0000000..4870041 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java @@ -0,0 +1,43 @@ +package com.paradogs.common.core.netty.clients; + +import com.paradogs.common.core.utils.StringUtils; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author: yumi + * @date: 2023/7/31 22:39 + * @Description: TODO + */ +@Data +@Component +@ConfigurationProperties("paradogs.master") +public class MasterClientProperties { + + /** + * 主机 ip + */ + private String host; + + /** + * 端口号 + */ + private int port; + + /** + * 服务名称 + */ + private String name; + + + public String getName() { + if (StringUtils.isBlank(this.name)) { + this.name = "Master"; + } + return name; + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java new file mode 100644 index 0000000..2534189 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java @@ -0,0 +1,52 @@ +package com.paradogs.common.core.netty.clients; + +import com.paradogs.common.core.netty.server.PRConnectionHolder; +import io.netty.channel.Channel; +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; + +/** + * @author: yumi + * @date: 2023/11/4 14:31 + * @Description: TODO + */ +public abstract class PRClient implements ApplicationRunner { + + @Getter + @Setter + private PRClient.State state = PRClient.State.STOP; + + @Getter + private Channel channel; + + /** + * 连接服务器 + * @return + */ + protected abstract PRClient connect(); + + /** + * 是否需要连接服务器 + * @return + */ + protected abstract boolean isNeedConnect(); + + @Override + public void run(ApplicationArguments args) throws Exception { + if (isNeedConnect()) { + this.connect(); + PRConnectionHolder.addClient(this); + } + } + + protected void setChannel(Channel channel) { + this.channel = channel; + } + + public enum State { + RUNNING, + STOP + } +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java new file mode 100644 index 0000000..74b24cd --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java @@ -0,0 +1,18 @@ +package com.paradogs.common.core.netty.clients; + +import com.paradogs.common.core.netty.PRAbstractClientChannelInitializer; +import com.paradogs.common.core.netty.PRAbstractMsgHandler; +import io.netty.channel.ChannelHandlerContext; + +/** + * @author: yumi + * @date: 2023/11/4 14:33 + * @Description: TODO + */ +public class PRMasterClientChannelInitializer extends PRAbstractClientChannelInitializer { + + public PRMasterClientChannelInitializer(PRAbstractMsgHandler msgHandler) { + super(msgHandler); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java new file mode 100644 index 0000000..cafac37 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java @@ -0,0 +1,15 @@ +package com.paradogs.common.core.netty.events; + +import org.springframework.context.ApplicationEvent; + +/** + * @author: yumi + * @date: 2023/8/4 9:46 + * @Description: TODO + */ +public class MainLoopEvent extends ApplicationEvent { + + public MainLoopEvent() { + super(new Object()); + } +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java new file mode 100644 index 0000000..b8fe0ff --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java @@ -0,0 +1,117 @@ +package com.paradogs.common.core.netty.server; + +import com.paradogs.common.core.msg.PRMsgContextHolder; +import com.paradogs.common.core.netty.clients.PRClient; +import io.netty.channel.Channel; +import lombok.Getter; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author: yumi + * @date: 2023/8/26 17:18 + * @Description: TODO + */ +public class PRConnectionHolder { + + @Getter + private static PRServer server; + + @Getter + private static Map clientMap = new HashMap<>(); + + /** + * 未初始化的连接 Map + */ + @Getter + private static Map uninitializedConnMap = new HashMap<>(); + + /** + * 正常的连接 Map + */ + @Getter + private static Map connMap = new HashMap<>(); + + /** + * 不需要权限的路由,一般为初始化操作等 + */ + private static List excludeRoutes = new ArrayList<>(); + + static { + excludeRoutes.add("_paradogs.initInfo"); + } + + + public static void setServer(PRServer server) { + PRConnectionHolder.server = server; + } + + public static void addClient(PRClient client) { + PRConnectionHolder.clientMap.put(client.getChannel(), client); + } + + public static void addNewConnection(Channel channel) { + PRConnection conn = new PRConnection(); + conn.setCreateTime(LocalDateTime.now()); + conn.setExpiredTime(LocalDateTime.now().plusSeconds(10)); + PRConnectionHolder.uninitializedConnMap.put(channel, conn); + } + + public static void initConnection(Channel channel, ServerProperties properties) { + PRConnection conn = uninitializedConnMap.get(channel); + uninitializedConnMap.remove(channel); + conn.setConnInfo(properties); + connMap.put(conn.getConnInfo().getKey(), conn); + } + + public static String getConnKey(Channel channel) { + if (connMap.containsKey(channel)) { + PRConnection conn = connMap.get(channel); + return conn.getConnInfo().getKey(); + } + return null; + } + + public static void removeConn(Channel channel) { + PRConnectionHolder.uninitializedConnMap.remove(channel); + for (Map.Entry entry : PRConnectionHolder.connMap.entrySet()) { + String key = entry.getKey(); + PRConnection conn = PRConnectionHolder.connMap.get(key); + if (conn.getChannel() == channel) { + PRConnectionHolder.connMap.remove(key); + return; + } + + } + + } + + /** + * Channel 是否初始化 + * @param channel + * @return + */ + public static boolean isInitializedChannel(Channel channel) { + if (channel == null) { + return false; + } + if (PRConnectionHolder.clientMap.containsKey(channel) || PRConnectionHolder.connMap.containsKey(channel)) { + return true; + } + return false; + } + + public static boolean isExcludeRoute(String route) { + for (String excludeRoute : excludeRoutes) { + if (route.contains(excludeRoute)) { + return true; + } + } + return false; + + } +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java new file mode 100644 index 0000000..8f26206 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java @@ -0,0 +1,22 @@ +package com.paradogs.common.core.pojo; + +import com.paradogs.common.core.msg.BaseMsg; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/9/5 14:13 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ConnectorMessage extends BaseMsg { + + private String host; + + private int port; + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java new file mode 100644 index 0000000..f1c8fb5 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java @@ -0,0 +1,32 @@ +package com.paradogs.common.core.queue; + +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.msg.ByteBodyMsg; +import com.paradogs.common.core.netty.events.MainLoopEvent; +import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.common.core.utils.MsgUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.lang.reflect.InvocationTargetException; + +/** + * @author: yumi + * @date: 2023/7/28 9:27 + * @Description: 消息处理线程 + */ +@Slf4j +public class MsgDefaultConsumer extends AbstractMsgConsumer { + + /** + * 消息处理 + * @param msg + */ + @Override + public void handle(ByteBodyMsg msg) throws InvocationTargetException, IllegalAccessException { + MsgUtils.adapterHandle(msg); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java new file mode 100644 index 0000000..cb5a441 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java @@ -0,0 +1,99 @@ +package com.paradogs.common.core.queue; + +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.utils.SpringUtils; +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; + +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author: yumi + * @date: 2023/7/27 14:22 + * @Description: 队列管理器 + */ +@Slf4j +public class PRQueueHolder implements ApplicationRunner { + + @Getter + @Setter + @Autowired + private QueueProperties queueProperties; + + /** + * 队列集合 + * 待优化:有一些业务不需要保证顺序性,可以创建一个队列由多个消费者消费,不需要一对一,提高效率 + */ + private static Map> consumerMap = new ConcurrentHashMap<>(); + + /** + * 初始化相关队列 + * ps: 这里要用自定义方法不能用构造器,因为构造器 properties 还未注入完成(空指针) + */ + public void init() { + initQueue(QueueType.MAIN, queueProperties.getMainSize()); + } + + public void initQueue(QueueType type, int size) { + if (size == 0) {return;} + for (int i = 0; i < size; i++) { + // 原型模式 getBean + QueueConsumerThread queueConsumer = SpringUtils.getBean(type.queueConsumerThreadClass); + if (i == 0) { // 第一个线程额外负责处理循环检测 + queueConsumer.setLoop(true); + } + queueConsumer.setKey(type.key + "-" + (i + 1)); + queueConsumer.start(); + if (!consumerMap.containsKey(type)) { + consumerMap.put(type, new ArrayList<>()); + } + consumerMap.get(type).add(queueConsumer); + } + } + + @Override + public void run(ApplicationArguments args) throws Exception { + this.init(); + } + + public enum QueueType { + + /** + * 消息逻辑处理 + */ + MAIN(AbstractMsgConsumer.class, "MainMsgConsumer"); + + /** + * 消费对象类型 + */ + private Class queueConsumerThreadClass; + /** + * 线程描述标识符 + */ + private String key; + + QueueType(Class queueConsumerThreadClass, String key) { + this.queueConsumerThreadClass = queueConsumerThreadClass; + this.key = key; + } + } + + public static void putMsg(QueueType queueType, BaseMsg msg) throws InterruptedException { + balance(consumerMap.get(queueType), msg).produce(msg); + } + + /** + * 待优化,负载均衡规则,可以换成一个接口 + * @return + */ + private static QueueConsumerThread balance(List list, BaseMsg msg) { + return list.get((int) (msg.getMsgHeader().getPId() % list.size())); + } + + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java new file mode 100644 index 0000000..48031f5 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java @@ -0,0 +1,21 @@ +package com.paradogs.common.core.rpc; + +import com.paradogs.common.core.annoations.request.PdgMsg; +import com.paradogs.common.core.annoations.rpc.PdgRPC; +import com.paradogs.common.core.annoations.rpc.PdgRPCMapping; +import com.paradogs.common.core.netty.server.ServerProperties; + +import java.util.concurrent.CompletableFuture; + +/** + * @author: yumi + * @date: 2023/8/10 15:26 + * @Description: TODO + */ +@PdgRPC("master") +public interface InitRPC { + + @PdgRPCMapping(value = "_init.serverInfo") + CompletableFuture getServerInfo(); + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java new file mode 100644 index 0000000..f8fdfeb --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java @@ -0,0 +1,48 @@ +package com.paradogs.common.core.utils; + + +import lombok.extern.slf4j.Slf4j; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author: yumi + * @date: 2023/2/16 21:17 + * @Description: TODO + */ +@Slf4j +public class BeanUtils extends org.springframework.beans.BeanUtils { + + + /** + * 包装类和基本数据类型映射 + */ + private static Map, Class> primitiveAndWrap; + + private static Map, Class> wrapAndPrimitive; + + static { + primitiveAndWrap = new HashMap<>(); + wrapAndPrimitive = new HashMap<>(); + + primitiveAndWrap.put(byte.class, Byte.class); + primitiveAndWrap.put(short.class, Short.class); + primitiveAndWrap.put(int.class, Integer.class); + primitiveAndWrap.put(long.class, Long.class); + primitiveAndWrap.put(float.class, Float.class); + primitiveAndWrap.put(double.class, Double.class); + primitiveAndWrap.put(char.class, Character.class); + primitiveAndWrap.put(boolean.class, Boolean.class); + + primitiveAndWrap.entrySet().forEach(entry -> wrapAndPrimitive.put(entry.getValue(), entry.getKey())); + + + } + + public static V copy(T source, V target) { + copyProperties(source, target); + return target; + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java new file mode 100644 index 0000000..40ee54d --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java @@ -0,0 +1,16 @@ +package com.paradogs.common.core.utils; + +import java.util.Random; + +/** + * @author: yumi + * @date: 2023/11/5 19:19 + * @Description: TODO + */ +public class RandomUtils { + + public static Long spawnSnowId() { + Random random = new Random(); + return random.nextLong(); + } +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java new file mode 100644 index 0000000..c2bd2ca --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java @@ -0,0 +1,37 @@ +package com.paradogs.common.core.utils; + +import com.paradogs.common.core.msg.BaseMsg; + +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; + +/** + * @author: yumi + * @date: 2023/9/23 9:57 + * @Description: 反射工具类 + */ +public class ReflectUtils { + + /** + * 获取返回类中的泛型类型 + * @param method + * @return + */ + public static Class getGenericReturnType(Method method) { + // 获取方法的返回类型信息 + Type type = method.getGenericReturnType(); + // 判断返回类型是否为参数化类型(即带有泛型参数) + if (type instanceof ParameterizedType) { + // 获取泛型参数的实际类型 + Type typeArg = ((ParameterizedType) type).getActualTypeArguments()[0]; + // 判断实际类型是否为 Class 对象 + if (typeArg instanceof Class) { + // 将实际类型转换为 Class 对象 + return (Class) typeArg; + } + } + return null; + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java new file mode 100644 index 0000000..aff4e75 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java @@ -0,0 +1,15 @@ +package com.paradogs.common.core.utils; + + +/** + * @author: yumi + * @date: 2023/2/17 0:25 + * @Description: TODO + */ +public class StringUtils extends org.apache.commons.lang.StringUtils { + + public static String firstChar2UpperCase(String str) { + if (isBlank(str)) {return "";} + return str.substring(0, 1).toUpperCase() + str.substring(1); + } +} diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java new file mode 100644 index 0000000..b158859 --- /dev/null +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java @@ -0,0 +1,20 @@ +package com.paradogs.common.master; + +import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; +import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +/** + * @author: yumi + * @date: 2023/8/26 17:56 + * @Description: TODO + */ +@Import({ + PdgRPCProxyBeanImportSelector.class, + PdgRequestInterfaceSelector.class +}) +@Configuration +public class MasterStarter { + +} diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java new file mode 100644 index 0000000..21ad0ed --- /dev/null +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java @@ -0,0 +1,50 @@ +package com.paradogs.common.master.controller; + +import com.paradogs.common.core.annoations.request.PdgController; +import com.paradogs.common.core.annoations.request.PdgMsgMapping; +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.netty.server.PRConnection; +import com.paradogs.common.core.netty.server.PRConnectionHolder; +import com.paradogs.common.core.pojo.Connection; +import com.paradogs.common.core.pojo.ConnectorMessage; +import lombok.extern.slf4j.Slf4j; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author: yumi + * @date: 2023/8/24 17:45 + * @Description: TODO + */ +@Slf4j +@PdgController +@PdgMsgMapping("_info") +public class MasterController { + + @PdgMsgMapping("getServerInfo") + public List getServerInfo(String serverType) { + Collection conns = PRConnectionHolder.getConnMap().values(); + List collect = conns.stream().filter(conn -> conn.getConnInfo().getType().equals(serverType)).collect(Collectors.toList()); + collect.forEach(System.out::println); + return collect; + } + +// /** +// * 返回一个可连接的 Connector,目前暂时只为第一个 +// * @return +// */ +// @PdgMsgMapping("getConnector") +// public ConnectorMessage getConnector() { +// Collection conns = ConnectionUtils.getConns(); +// Connection connection = conns.stream().filter(conn -> conn.getTargetServer().equals("connector")).findFirst().get(); +// return new ConnectorMessage(connection.getHost(), connection.getPort()); +// } + + @PdgMsgMapping("hello") + public BaseMsg hello() { + log.info("receive hello..."); + return new BaseMsg(); + } +} diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/resources/config/application.yml b/paradogs-framework/paradogs-framework-master-starter/src/main/resources/config/application.yml new file mode 100644 index 0000000..e69de29 diff --git a/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java new file mode 100644 index 0000000..ad172f8 --- /dev/null +++ b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java @@ -0,0 +1,16 @@ +package com.paradogs.common.game.config; + +import com.paradogs.common.game.server.GameServerMsgHandler; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author: yumi + * @date: 2023/8/26 17:16 + * @Description: TODO + */ +@Configuration +public class NettyConfiguration { + +} diff --git a/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java new file mode 100644 index 0000000..25d4e5a --- /dev/null +++ b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java @@ -0,0 +1,30 @@ +package com.paradogs.common.game.server; + +import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.common.core.queue.PRQueueHolder; +import io.netty.channel.ChannelHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/8/26 17:05 + * @Description: TODO + */ +@Slf4j +@Component +@ConditionalOnMissingBean(ServerMsgHandler.class) +@ChannelHandler.Sharable +public class GameServerMsgHandler extends ServerMsgHandler { + + @Autowired + private PRQueueHolder queueManager; + + @Override + protected void processMsg(BaseMsg msg) throws Exception { + queueManager.putMsg(msg); + } + +} diff --git a/paradogs-framework/paradogs-framework-server-starter/src/main/resources/config/application.yml b/paradogs-framework/paradogs-framework-server-starter/src/main/resources/config/application.yml new file mode 100644 index 0000000..e69de29 -- Gitee From b661f80a28a1925e171f53a109bb5409c2a90b5b Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Mon, 13 Nov 2023 11:13:38 +0800 Subject: [PATCH 20/32] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E5=92=8C=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...cation.java => DemoClientApplication.java} | 4 +- .../pom.xml | 2 +- .../test/server/DemoGameApplication.java} | 6 +-- .../server/controller/TestController.java | 14 +++---- .../exceptions/GobalExceptionHandler.java | 8 ++-- .../paradogs/test/server/misc/LoopTest.java | 0 .../src/main/resources/application.yml | 15 +++----- ...ation.java => DemoGatewayApplication.java} | 6 +-- .../src/main/resources/application.yml | 4 +- ...ication.java => DemoLoginApplication.java} | 6 +-- ...cation.java => DemoMasterApplication.java} | 6 +-- paradogs-demo/pom.xml | 2 +- .../common/connector/EventHandler.java | 22 ----------- .../PRConnectorServerMsgHandler.java | 10 ++--- .../connector/PRConnectorStarter.java | 10 ++--- ...ot.autoconfigure.AutoConfiguration.imports | 2 +- .../core/CoreStarter.java | 12 +++--- .../core/annoations/EnableParadogs.java | 10 ++--- .../annoations/base/BaseImportSelector.java | 3 +- .../core/annoations/base/BaseScanner.java | 2 +- .../exception/PRExceptionHandler.java} | 4 +- .../exception/PRExceptionHandlerClass.java} | 4 +- .../annoations/request/PRController.java} | 4 +- .../core/annoations/request/PRMsg.java} | 4 +- .../annoations/request/PRMsgMapping.java} | 4 +- .../request/PRMsgMappingHolder.java | 13 ++----- .../request/PRRequestInterfaceSelector.java} | 24 ++++++------ .../annoations/request/PRRequestScanner.java} | 8 ++-- .../core/annoations/rpc/PRRPC.java} | 4 +- .../core/annoations/rpc/PRRPCHolder.java} | 6 +-- .../rpc/PRRPCInterfaceScanner.java} | 12 +++--- .../core/annoations/rpc/PRRPCMapping.java} | 7 ++-- .../core/annoations/rpc/PRRPCProxyBean.java} | 8 ++-- .../rpc/PRRPCProxyBeanImportSelector.java} | 34 ++++++++--------- .../rpc/PRRPCProxyInterceptor.java} | 26 ++++++------- .../rpc/PRRPCResponseResolver.java} | 14 +++---- .../core/annoations/tick/PRTick.java | 2 +- .../core/config/NettyConfiguration.java | 17 +++++---- .../core/config/QueueConfiguration.java | 11 +++--- .../core/config/RPCConfiguration.java | 10 ++--- .../core/config/UtilsConfiguration.java | 8 ++-- .../core/events/ChannelActiveEvent.java | 4 +- .../core/events/ChannelInactiveEvent.java | 4 +- .../core/events/RPCRequestEvent.java | 6 +-- .../core/events/RPCRespEvent.java | 6 +-- .../core/events/ReceiveMsgEvent.java | 6 +-- .../events/ServerConnectionInitEvent.java | 6 +-- .../core/events/ServerStartEvent.java | 4 +- .../core/events/SyncMsgEvent.java | 4 +- .../core/events/base/AnonEvent.java | 2 +- .../core/events/base/BaseEvent.java | 2 +- .../exceptions/GlobalExceptionDispatch.java | 16 ++++---- .../exceptions/SerializationException.java | 4 +- .../core/exceptions/ServiceException.java | 4 +- .../exceptions/base/BaseCheckedException.java | 2 +- .../base/BaseUncheckedException.java | 2 +- .../core/listeners/PREventListener.java} | 10 ++--- .../core/msg/BaseMsg.java | 6 +-- .../core/msg/BaseMsg_CmdVersion.java | 6 +-- .../core/msg/ByteBodyMsg.java | 2 +- .../{common => framework}/core/msg/CGMsg.java | 2 +- .../core/msg/CGTestMsg.java | 2 +- .../core/msg/CommonController.java | 38 ++++++++----------- .../core/msg/DBTask.java | 2 +- .../{common => framework}/core/msg/GCMsg.java | 2 +- .../core/msg/GCTestMsg.java | 2 +- .../core/msg/IMsgSerializable.java | 2 +- .../core/msg/MsgHeader.java | 10 ++--- .../core/msg/PRMsgContextHolder.java | 2 +- .../core/msg/VoidMsg.java | 2 +- .../core/msg/route/MsgMapping.java | 4 +- .../netty/PRAbstractChannelInitializer.java | 4 +- .../PRAbstractClientChannelInitializer.java | 2 +- .../netty/PRAbstractClientMsgHandler.java | 2 +- .../core/netty/PRAbstractMsgHandler.java | 25 ++++++------ .../PRAbstractServerChannelInitializer.java | 2 +- .../netty/PRAbstractServerMsgHandler.java | 2 +- .../core/netty/PRCodec.java | 8 ++-- .../core/netty/PRDefaultMsgHandler.java | 2 +- .../PRDefaultServerChannelInitializer.java | 2 +- .../core/netty/ProtocolProperties.java | 2 +- .../netty/clients/MasterClientProperties.java | 6 +-- .../core/netty/clients/PRClient.java | 4 +- .../core/netty/clients/PRMasterClient.java | 9 ++--- .../PRMasterClientChannelInitializer.java | 7 ++-- .../clients/PRMasterClientMsgHandler.java | 18 ++++----- .../core/netty/events/MainLoopEvent.java | 2 +- .../core/netty/events/ServerEvent.java | 4 +- .../core/netty/server/PRConnection.java | 2 +- .../core/netty/server/PRConnectionHolder.java | 5 +-- .../core/netty/server/PRServer.java | 10 ++--- .../core/netty/server/ServerProperties.java | 7 ++-- .../core/pojo/Connection.java | 4 +- .../core/pojo/ConnectorMessage.java | 4 +- .../core/queue/AbstractMsgConsumer.java | 8 ++-- .../core/queue/MsgDefaultConsumer.java | 12 ++---- .../core/queue/PRQueueHolder.java | 6 +-- .../core/queue/QueueConsumerThread.java | 9 ++--- .../core/queue/QueueProperties.java | 2 +- .../core/rpc/InitRPC.java | 13 +++---- .../core/utils/BeanUtils.java | 2 +- .../core/utils/EventUtils.java | 8 ++-- .../core/utils/MsgUtils.java | 18 +++++---- .../core/utils/ProtoUtils.java | 2 +- .../core/utils/RandomUtils.java | 2 +- .../core/utils/ReflectUtils.java | 4 +- .../core/utils/RouteUtils.java | 2 +- .../core/utils/SpringUtils.java | 2 +- .../core/utils/StringUtils.java | 2 +- .../core/utils/TimeUtils.java | 2 +- ...ot.autoconfigure.AutoConfiguration.imports | 10 ++--- .../common/master/events/EventHandler.java | 22 ----------- .../master/ControllerConfiguration.java | 3 +- .../master}/MasterController.java | 22 +++++------ .../master}/MasterMsgConsumer.java | 16 ++++---- .../master/MasterStarter.java | 10 ++--- ...ot.autoconfigure.AutoConfiguration.imports | 6 +-- .../game/config/NettyConfiguration.java | 16 -------- .../game/server/GameServerMsgHandler.java | 30 --------------- .../framework/server/ServerMsgConsumer.java | 36 ++++++++++++++++++ .../framework/server/ServerStarter.java | 19 ++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 5 +-- 122 files changed, 436 insertions(+), 518 deletions(-) rename paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/{TestClientApplication.java => DemoClientApplication.java} (97%) rename paradogs-demo/{paradogs-demo-server => paradogs-demo-game}/pom.xml (94%) rename paradogs-demo/{paradogs-demo-server/src/main/java/com/paradogs/test/server/TestServerApplication.java => paradogs-demo-game/src/main/java/com/paradogs/test/server/DemoGameApplication.java} (66%) rename paradogs-demo/{paradogs-demo-server => paradogs-demo-game}/src/main/java/com/paradogs/test/server/controller/TestController.java (57%) rename paradogs-demo/{paradogs-demo-server => paradogs-demo-game}/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java (67%) rename paradogs-demo/{paradogs-demo-server => paradogs-demo-game}/src/main/java/com/paradogs/test/server/misc/LoopTest.java (100%) rename paradogs-demo/{paradogs-demo-server => paradogs-demo-game}/src/main/resources/application.yml (42%) rename paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/{TestConnectorApplication.java => DemoGatewayApplication.java} (65%) rename paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/test/login/{LoginApplication.java => DemoLoginApplication.java} (66%) rename paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/{MasterApplication.java => DemoMasterApplication.java} (66%) delete mode 100644 paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java rename paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/{common => framework}/connector/PRConnectorServerMsgHandler.java (74%) rename paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/{common => framework}/connector/PRConnectorStarter.java (46%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/CoreStarter.java (37%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/annoations/EnableParadogs.java (69%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/annoations/base/BaseImportSelector.java (96%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/annoations/base/BaseScanner.java (97%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/exception/PdgExceptionHandler.java => framework/core/annoations/exception/PRExceptionHandler.java} (78%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/exception/PdgExceptionHandlerClass.java => framework/core/annoations/exception/PRExceptionHandlerClass.java} (78%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/request/PdgController.java => framework/core/annoations/request/PRController.java} (80%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/request/PdgMsg.java => framework/core/annoations/request/PRMsg.java} (85%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/request/PdgMsgMapping.java => framework/core/annoations/request/PRMsgMapping.java} (83%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/annoations/request/PRMsgMappingHolder.java (74%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/request/PdgRequestInterfaceSelector.java => framework/core/annoations/request/PRRequestInterfaceSelector.java} (76%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/request/PdgRequestScanner.java => framework/core/annoations/request/PRRequestScanner.java} (85%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/rpc/PdgRPC.java => framework/core/annoations/rpc/PRRPC.java} (76%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/rpc/PdgRPCHolder.java => framework/core/annoations/rpc/PRRPCHolder.java} (63%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/rpc/RPCInterfaceScanner.java => framework/core/annoations/rpc/PRRPCInterfaceScanner.java} (76%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/rpc/PdgRPCMapping.java => framework/core/annoations/rpc/PRRPCMapping.java} (77%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/rpc/RPCProxyBean.java => framework/core/annoations/rpc/PRRPCProxyBean.java} (85%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java => framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java} (73%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/rpc/RPCProxyInterceptor.java => framework/core/annoations/rpc/PRRPCProxyInterceptor.java} (75%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/annoations/rpc/RpcResponseResolver.java => framework/core/annoations/rpc/PRRPCResponseResolver.java} (89%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/annoations/tick/PRTick.java (88%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/config/NettyConfiguration.java (77%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/config/QueueConfiguration.java (74%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/config/RPCConfiguration.java (56%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/config/UtilsConfiguration.java (67%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/events/ChannelActiveEvent.java (77%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/events/ChannelInactiveEvent.java (77%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/events/RPCRequestEvent.java (76%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/events/RPCRespEvent.java (66%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/events/ReceiveMsgEvent.java (66%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/events/ServerConnectionInitEvent.java (60%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/events/ServerStartEvent.java (75%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/events/SyncMsgEvent.java (83%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/events/base/AnonEvent.java (88%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/events/base/BaseEvent.java (93%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/exceptions/GlobalExceptionDispatch.java (75%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/exceptions/SerializationException.java (64%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/exceptions/ServiceException.java (65%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/exceptions/base/BaseCheckedException.java (86%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/exceptions/base/BaseUncheckedException.java (90%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common/core/listeners/PdgEventListener.java => framework/core/listeners/PREventListener.java} (85%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/BaseMsg.java (92%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/BaseMsg_CmdVersion.java (92%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/ByteBodyMsg.java (92%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/CGMsg.java (86%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/CGTestMsg.java (84%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/CommonController.java (58%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/DBTask.java (94%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/GCMsg.java (84%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/GCTestMsg.java (84%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/IMsgSerializable.java (89%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/MsgHeader.java (92%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/PRMsgContextHolder.java (96%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/VoidMsg.java (73%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/msg/route/MsgMapping.java (79%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/PRAbstractChannelInitializer.java (95%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/PRAbstractClientChannelInitializer.java (87%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/PRAbstractClientMsgHandler.java (78%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/PRAbstractMsgHandler.java (81%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/PRAbstractServerChannelInitializer.java (87%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/PRAbstractServerMsgHandler.java (78%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/PRCodec.java (90%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/PRDefaultMsgHandler.java (83%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/PRDefaultServerChannelInitializer.java (91%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/ProtocolProperties.java (92%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/clients/MasterClientProperties.java (84%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/clients/PRClient.java (89%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/clients/PRMasterClient.java (90%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/clients/PRMasterClientChannelInitializer.java (55%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/clients/PRMasterClientMsgHandler.java (65%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/events/MainLoopEvent.java (83%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/events/ServerEvent.java (72%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/server/PRConnection.java (90%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/server/PRConnectionHolder.java (95%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/server/PRServer.java (90%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/netty/server/ServerProperties.java (83%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/pojo/Connection.java (94%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/pojo/ConnectorMessage.java (77%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/queue/AbstractMsgConsumer.java (60%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/queue/MsgDefaultConsumer.java (50%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/queue/PRQueueHolder.java (95%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/queue/QueueConsumerThread.java (90%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/queue/QueueProperties.java (92%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/rpc/InitRPC.java (38%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/utils/BeanUtils.java (96%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/utils/EventUtils.java (82%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/utils/MsgUtils.java (91%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/utils/ProtoUtils.java (97%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/utils/RandomUtils.java (85%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/utils/ReflectUtils.java (92%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/utils/RouteUtils.java (91%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/utils/SpringUtils.java (99%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/utils/StringUtils.java (88%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/{common => framework}/core/utils/TimeUtils.java (91%) delete mode 100644 paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java rename paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/{common => framework}/master/ControllerConfiguration.java (78%) rename paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/{common/master/controller => framework/master}/MasterController.java (68%) rename paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/{common/master/queue => framework/master}/MasterMsgConsumer.java (72%) rename paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/{common => framework}/master/MasterStarter.java (46%) delete mode 100644 paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java delete mode 100644 paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java create mode 100644 paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerMsgConsumer.java create mode 100644 paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerStarter.java diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/TestClientApplication.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java similarity index 97% rename from paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/TestClientApplication.java rename to paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java index fba4c44..f9d06f8 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/TestClientApplication.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java @@ -27,9 +27,9 @@ import java.util.List; */ @Slf4j @SpringBootApplication -public class TestClientApplication { +public class DemoClientApplication { public static void main(String[] args) throws InterruptedException { - SpringApplication.run(TestClientApplication.class, args); + SpringApplication.run(DemoClientApplication.class, args); Bootstrap client = new Bootstrap() .group(new NioEventLoopGroup()) diff --git a/paradogs-demo/paradogs-demo-server/pom.xml b/paradogs-demo/paradogs-demo-game/pom.xml similarity index 94% rename from paradogs-demo/paradogs-demo-server/pom.xml rename to paradogs-demo/paradogs-demo-game/pom.xml index e3d1728..1c2bdf9 100644 --- a/paradogs-demo/paradogs-demo-server/pom.xml +++ b/paradogs-demo/paradogs-demo-game/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - paradogs-demo-server + paradogs-demo-game 8 diff --git a/paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/TestServerApplication.java b/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/DemoGameApplication.java similarity index 66% rename from paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/TestServerApplication.java rename to paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/DemoGameApplication.java index fcef5b4..2fa0c92 100644 --- a/paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/TestServerApplication.java +++ b/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/DemoGameApplication.java @@ -1,6 +1,6 @@ package com.paradogs.test.server; -import com.paradogs.common.core.annoations.EnableParadogs; +import com.paradogs.framework.core.annoations.EnableParadogs; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -11,8 +11,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; */ @EnableParadogs @SpringBootApplication -public class TestServerApplication { +public class DemoGameApplication { public static void main(String[] args) { - SpringApplication.run(TestServerApplication.class, args); + SpringApplication.run(DemoGameApplication.class, args); } } diff --git a/paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/controller/TestController.java b/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/controller/TestController.java similarity index 57% rename from paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/controller/TestController.java rename to paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/controller/TestController.java index 355938a..2e8bb7f 100644 --- a/paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/controller/TestController.java +++ b/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/controller/TestController.java @@ -1,9 +1,9 @@ package com.paradogs.test.server.controller; -import com.paradogs.common.core.annoations.request.PdgMsg; -import com.paradogs.common.core.annoations.request.PdgMsgMapping; -import com.paradogs.common.core.msg.CGTestMsg; -import com.paradogs.common.core.msg.GCTestMsg; +import com.paradogs.framework.core.annoations.request.PRMsg; +import com.paradogs.framework.core.annoations.request.PRMsgMapping; +import com.paradogs.framework.core.msg.CGTestMsg; +import com.paradogs.framework.core.msg.GCTestMsg; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; @@ -14,11 +14,11 @@ import org.springframework.stereotype.Controller; */ @Slf4j @Controller -@PdgMsgMapping("test") +@PRMsgMapping("test") public class TestController { - @PdgMsgMapping("test1") - public GCTestMsg test1(@PdgMsg CGTestMsg msg) { + @PRMsgMapping("test1") + public GCTestMsg test1(@PRMsg CGTestMsg msg) { log.info("receive >> {}", msg); // throw new SerializationException(); // GC要特制,改成对 player 回复 !!! diff --git a/paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java b/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java similarity index 67% rename from paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java rename to paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java index 15d476c..647d8fc 100644 --- a/paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java +++ b/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java @@ -1,7 +1,7 @@ package com.paradogs.test.server.exceptions; -import com.paradogs.common.core.annoations.exception.PdgExceptionHandler; -import com.paradogs.common.core.annoations.exception.PdgExceptionHandlerClass; +import com.paradogs.framework.core.annoations.exception.PRExceptionHandler; +import com.paradogs.framework.core.annoations.exception.PRExceptionHandlerClass; import lombok.extern.slf4j.Slf4j; /** @@ -10,10 +10,10 @@ import lombok.extern.slf4j.Slf4j; * @Description: TODO */ @Slf4j -@PdgExceptionHandlerClass +@PRExceptionHandlerClass public class GobalExceptionHandler { - @PdgExceptionHandler(Exception.class) + @PRExceptionHandler(Exception.class) public void handleException(Exception e) { log.info("{}", e); } diff --git a/paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/misc/LoopTest.java b/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/misc/LoopTest.java similarity index 100% rename from paradogs-demo/paradogs-demo-server/src/main/java/com/paradogs/test/server/misc/LoopTest.java rename to paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/misc/LoopTest.java diff --git a/paradogs-demo/paradogs-demo-server/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-game/src/main/resources/application.yml similarity index 42% rename from paradogs-demo/paradogs-demo-server/src/main/resources/application.yml rename to paradogs-demo/paradogs-demo-game/src/main/resources/application.yml index d129bca..5e9f85d 100644 --- a/paradogs-demo/paradogs-demo-server/src/main/resources/application.yml +++ b/paradogs-demo/paradogs-demo-game/src/main/resources/application.yml @@ -1,14 +1,11 @@ paradogs: server: - port: 8001 - type: test - name: test-1 - connector: false - masters: - - host: localhost - port: 8888 - queue: - main-size: 1 + port: 8002 + type: game + key: game-1 + master: + host: localhost + port: 8888 # 日志级别配置 logging: diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/TestConnectorApplication.java b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/DemoGatewayApplication.java similarity index 65% rename from paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/TestConnectorApplication.java rename to paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/DemoGatewayApplication.java index 541502b..e32ac87 100644 --- a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/TestConnectorApplication.java +++ b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/DemoGatewayApplication.java @@ -1,7 +1,7 @@ package com.paradogs.demo.gateway; -import com.paradogs.common.core.annoations.EnableParadogs; +import com.paradogs.framework.core.annoations.EnableParadogs; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -12,8 +12,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; */ @EnableParadogs @SpringBootApplication -public class TestConnectorApplication { +public class DemoGatewayApplication { public static void main(String[] args) { - SpringApplication.run(TestConnectorApplication.class, args); + SpringApplication.run(DemoGatewayApplication.class, args); } } diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml index f3f09d3..9b37f94 100644 --- a/paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml +++ b/paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml @@ -1,8 +1,8 @@ paradogs: server: port: 8001 - type: connector - key: connector-1 + type: gateway + key: gateway-1 master: host: localhost port: 8888 diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/test/login/LoginApplication.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/test/login/DemoLoginApplication.java similarity index 66% rename from paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/test/login/LoginApplication.java rename to paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/test/login/DemoLoginApplication.java index a4216ab..5b0fce0 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/test/login/LoginApplication.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/test/login/DemoLoginApplication.java @@ -1,6 +1,6 @@ package com.paradogs.test.login; -import com.paradogs.common.core.annoations.EnableParadogs; +import com.paradogs.framework.core.annoations.EnableParadogs; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -11,8 +11,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; */ @EnableParadogs @SpringBootApplication -public class LoginApplication { +public class DemoLoginApplication { public static void main(String[] args) { - SpringApplication.run(LoginApplication.class, args); + SpringApplication.run(DemoLoginApplication.class, args); } } diff --git a/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/MasterApplication.java b/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/DemoMasterApplication.java similarity index 66% rename from paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/MasterApplication.java rename to paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/DemoMasterApplication.java index 9cd7637..dfed78b 100644 --- a/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/MasterApplication.java +++ b/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/DemoMasterApplication.java @@ -1,6 +1,6 @@ package com.paradogs.demo.master; -import com.paradogs.common.core.annoations.EnableParadogs; +import com.paradogs.framework.core.annoations.EnableParadogs; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -11,8 +11,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; */ @EnableParadogs @SpringBootApplication -public class MasterApplication { +public class DemoMasterApplication { public static void main(String[] args) { - SpringApplication.run(MasterApplication.class, args); + SpringApplication.run(DemoMasterApplication.class, args); } } diff --git a/paradogs-demo/pom.xml b/paradogs-demo/pom.xml index 32f6769..90e026c 100644 --- a/paradogs-demo/pom.xml +++ b/paradogs-demo/pom.xml @@ -12,7 +12,7 @@ paradogs-demo pom - paradogs-demo-server + paradogs-demo-game paradogs-demo-client paradogs-demo-gateway paradogs-demo-login diff --git a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java deleted file mode 100644 index 76d5a47..0000000 --- a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/EventHandler.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.paradogs.common.connector; - -import com.paradogs.common.core.events.ChannelActiveEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/20 20:50 - * @Description: TODO - */ -@Slf4j -@Component -public class EventHandler { - - @EventListener(ChannelActiveEvent.class) - public void onChannelActiveEvent(ChannelActiveEvent event) { - log.info("a new client connect: [{}]", event.getCtx().channel().remoteAddress().toString()); - } - -} diff --git a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorServerMsgHandler.java b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java similarity index 74% rename from paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorServerMsgHandler.java rename to paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java index 561eeea..3830f42 100644 --- a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorServerMsgHandler.java +++ b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java @@ -1,9 +1,9 @@ -package com.paradogs.common.connector; +package com.paradogs.framework.connector; -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.netty.PRAbstractServerMsgHandler; -import com.paradogs.common.core.netty.server.ServerProperties; -import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.netty.PRAbstractServerMsgHandler; +import com.paradogs.framework.core.netty.server.ServerProperties; +import com.paradogs.framework.core.utils.MsgUtils; import io.netty.channel.ChannelHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; diff --git a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorStarter.java similarity index 46% rename from paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java rename to paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorStarter.java index 4dfa813..667d52b 100644 --- a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/common/connector/PRConnectorStarter.java +++ b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorStarter.java @@ -1,7 +1,7 @@ -package com.paradogs.common.connector; +package com.paradogs.framework.connector; -import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; -import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; +import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector; +import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -11,8 +11,8 @@ import org.springframework.context.annotation.Import; * @Description: TODO */ @Import({ - PdgRPCProxyBeanImportSelector.class, - PdgRequestInterfaceSelector.class + PRRPCProxyBeanImportSelector.class, + PRRequestInterfaceSelector.class }) @Configuration public class PRConnectorStarter { diff --git a/paradogs-framework/paradogs-framework-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 3334cfe..8fd7c0c 100644 --- a/paradogs-framework/paradogs-framework-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-framework/paradogs-framework-connector-starter/src/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1 @@ -com.paradogs.common.connector.PRConnectorServerMsgHandler \ No newline at end of file +com.paradogs.framework.connector.PRConnectorServerMsgHandler \ No newline at end of file diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/CoreStarter.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java similarity index 37% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/CoreStarter.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java index d980c48..e947ba0 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/CoreStarter.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java @@ -1,9 +1,7 @@ -package com.paradogs.common.core; +package com.paradogs.framework.core; -import com.paradogs.common.core.annoations.EnableParadogs; -import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; -import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector; +import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -13,8 +11,8 @@ import org.springframework.context.annotation.Import; * @Description: TODO */ @Import({ - PdgRPCProxyBeanImportSelector.class, - PdgRequestInterfaceSelector.class + PRRPCProxyBeanImportSelector.class, + PRRequestInterfaceSelector.class }) @Configuration public class CoreStarter { diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java similarity index 69% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java index 2652879..e1df35c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/EnableParadogs.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java @@ -1,7 +1,7 @@ -package com.paradogs.common.core.annoations; +package com.paradogs.framework.core.annoations; -import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; -import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; +import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector; +import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; import org.springframework.context.annotation.Import; import java.lang.annotation.ElementType; @@ -18,8 +18,8 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Import({ // 等同于使用 META-INF.spring,看 @Import 注释,主要区别在于 @Import 可以手动注册,META-INF 为导入依赖自动注册 - PdgRPCProxyBeanImportSelector.class, - PdgRequestInterfaceSelector.class, + PRRPCProxyBeanImportSelector.class, + PRRequestInterfaceSelector.class, // ServerLauncher.class }) public @interface EnableParadogs { diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseImportSelector.java similarity index 96% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseImportSelector.java index 6677a48..3b269e2 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/base/BaseImportSelector.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseImportSelector.java @@ -1,6 +1,5 @@ -package com.paradogs.common.core.annoations.base; +package com.paradogs.framework.core.annoations.base; -import com.paradogs.common.core.utils.TimeUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/base/BaseScanner.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseScanner.java similarity index 97% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/base/BaseScanner.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseScanner.java index a5d7a23..0fe7d92 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/base/BaseScanner.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseScanner.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations.base; +package com.paradogs.framework.core.annoations.base; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanDefinitionHolder; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/exception/PRExceptionHandler.java similarity index 78% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/exception/PRExceptionHandler.java index 92c3fac..46fe595 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/exception/PRExceptionHandler.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations.exception; +package com.paradogs.framework.core.annoations.exception; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -12,7 +12,7 @@ import java.lang.annotation.Target; */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) -public @interface PdgExceptionHandler { +public @interface PRExceptionHandler { Class value(); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/exception/PRExceptionHandlerClass.java similarity index 78% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/exception/PRExceptionHandlerClass.java index c670599..ee95b88 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/exception/PdgExceptionHandlerClass.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/exception/PRExceptionHandlerClass.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations.exception; +package com.paradogs.framework.core.annoations.exception; import org.springframework.stereotype.Component; @@ -15,5 +15,5 @@ import java.lang.annotation.Target; @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Component -public @interface PdgExceptionHandlerClass { +public @interface PRExceptionHandlerClass { } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgController.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRController.java similarity index 80% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgController.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRController.java index 686b10a..8e351e0 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgController.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRController.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations.request; +package com.paradogs.framework.core.annoations.request; import org.springframework.stereotype.Controller; @@ -15,5 +15,5 @@ import java.lang.annotation.Target; @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Controller -public @interface PdgController { +public @interface PRController { } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsg.java similarity index 85% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsg.java index 23ff504..6a30e5c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations.request; +package com.paradogs.framework.core.annoations.request; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -14,7 +14,7 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) //@ProtobufClass 坑,@ProtobufClass 加在自定义注解上时,使用自定义注解不会生效该注解 // 可以加上父类 BaseMsg 上或者实际类上 -public @interface PdgMsg { +public @interface PRMsg { // int value(); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMapping.java similarity index 83% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMapping.java index e63882b..35ab799 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgMsgMapping.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMapping.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations.request; +package com.paradogs.framework.core.annoations.request; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -13,7 +13,7 @@ import java.lang.annotation.Target; */ @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) -public @interface PdgMsgMapping { +public @interface PRMsgMapping { /** * 路由路径 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java similarity index 74% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java index c9a36a3..5fb51c8 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PRMsgMappingHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java @@ -1,19 +1,12 @@ -package com.paradogs.common.core.annoations.request; +package com.paradogs.framework.core.annoations.request; -import com.paradogs.common.core.events.RPCRespEvent; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.msg.MsgHeader; -import com.paradogs.common.core.msg.route.MsgMapping; +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.route.MsgMapping; import com.paradogs.common.core.utils.*; -import lombok.Getter; import lombok.extern.slf4j.Slf4j; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; -import java.util.stream.Stream; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java similarity index 76% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java index 13729b7..71de5d2 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestInterfaceSelector.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java @@ -1,9 +1,9 @@ -package com.paradogs.common.core.annoations.request; +package com.paradogs.framework.core.annoations.request; -import com.paradogs.common.core.annoations.base.BaseImportSelector; -import com.paradogs.common.core.annoations.base.BaseScanner; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.route.MsgMapping; +import com.paradogs.framework.core.annoations.base.BaseImportSelector; +import com.paradogs.framework.core.annoations.base.BaseScanner; +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.route.MsgMapping; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.config.BeanDefinition; @@ -23,7 +23,7 @@ import java.util.stream.Stream; * @Description: TODO */ @Slf4j -public class PdgRequestInterfaceSelector extends BaseImportSelector { +public class PRRequestInterfaceSelector extends BaseImportSelector { @Override public BaseScanner getScanner(AnnotationMetadata importingClassMetadata, BeanFactory beanFactory) { @@ -41,7 +41,7 @@ public class PdgRequestInterfaceSelector extends BaseImportSelector { throw new RuntimeException(e); } - return new PdgRequestScanner(defaultListableBeanFactory); + return new PRRequestScanner(defaultListableBeanFactory); } @Override @@ -55,12 +55,12 @@ public class PdgRequestInterfaceSelector extends BaseImportSelector { for (Method method : methods) { // 计算路由 - PdgMsgMapping parentRouteMapping = AnnotationUtils.findAnnotation(method.getDeclaringClass(), PdgMsgMapping.class); - PdgMsgMapping pdgMsgMapping = AnnotationUtils.findAnnotation(method, PdgMsgMapping.class); - if (pdgMsgMapping == null) { + PRMsgMapping parentRouteMapping = AnnotationUtils.findAnnotation(method.getDeclaringClass(), PRMsgMapping.class); + PRMsgMapping PRMsgMapping = AnnotationUtils.findAnnotation(method, PRMsgMapping.class); + if (PRMsgMapping == null) { continue; } - String route = (parentRouteMapping != null ? parentRouteMapping.value() : "") + (pdgMsgMapping.value().startsWith("/") ? "" : ".") + pdgMsgMapping.value(); + String route = (parentRouteMapping != null ? parentRouteMapping.value() : "") + (PRMsgMapping.value().startsWith("/") ? "" : ".") + PRMsgMapping.value(); if (PRMsgMappingHolder.containsRoute(route)) { throw new RuntimeException("Duplicate route found: " + route); } @@ -68,7 +68,7 @@ public class PdgRequestInterfaceSelector extends BaseImportSelector { // 保存 Msg 类型和要执行的方法 Class targetMsgClass = null; for (Parameter parameter : method.getParameters()) { - if (parameter.getAnnotation(PdgMsg.class) != null) { + if (parameter.getAnnotation(PRMsg.class) != null) { targetMsgClass = (Class) parameter.getType(); } else { diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestScanner.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestScanner.java similarity index 85% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestScanner.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestScanner.java index c239401..786caac 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/request/PdgRequestScanner.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestScanner.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.annoations.request; +package com.paradogs.framework.core.annoations.request; -import com.paradogs.common.core.annoations.base.BaseScanner; +import com.paradogs.framework.core.annoations.base.BaseScanner; import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.core.type.classreading.MetadataReader; @@ -13,9 +13,9 @@ import java.io.IOException; * @date: 2023/8/25 15:54 * @Description: TODO */ -public class PdgRequestScanner extends BaseScanner { +public class PRRequestScanner extends BaseScanner { - public PdgRequestScanner(BeanDefinitionRegistry registry) { + public PRRequestScanner(BeanDefinitionRegistry registry) { super(registry); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPC.java similarity index 76% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPC.java index 01e573d..99814bc 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPC.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPC.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations.rpc; +package com.paradogs.framework.core.annoations.rpc; import java.lang.annotation.*; @@ -10,7 +10,7 @@ import java.lang.annotation.*; @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented -public @interface PdgRPC { +public @interface PRRPC { /** * 服务名 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCHolder.java similarity index 63% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCHolder.java index 4aac54f..743e4e7 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCHolder.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.annoations.rpc; +package com.paradogs.framework.core.annoations.rpc; -import com.paradogs.common.core.msg.route.MsgMapping; +import com.paradogs.framework.core.msg.route.MsgMapping; import lombok.Getter; import java.util.HashMap; @@ -11,7 +11,7 @@ import java.util.Map; * @date: 2023/8/25 17:33 * @Description: TODO */ -public class PdgRPCHolder { +public class PRRPCHolder { @Getter private static Map mappingMap = new HashMap<>(); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCInterfaceScanner.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCInterfaceScanner.java similarity index 76% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCInterfaceScanner.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCInterfaceScanner.java index 1c78447..21767fd 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCInterfaceScanner.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCInterfaceScanner.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.annoations.rpc; +package com.paradogs.framework.core.annoations.rpc; -import com.paradogs.common.core.annoations.base.BaseScanner; +import com.paradogs.framework.core.annoations.base.BaseScanner; import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.core.type.classreading.MetadataReader; @@ -12,9 +12,9 @@ import java.io.IOException; * @date: 2023/8/13 23:24 * @Description: TODO */ -public class RPCInterfaceScanner extends BaseScanner { +public class PRRPCInterfaceScanner extends BaseScanner { - public RPCInterfaceScanner(BeanDefinitionRegistry registry) { + public PRRPCInterfaceScanner(BeanDefinitionRegistry registry) { super(registry); } @@ -28,7 +28,7 @@ public class RPCInterfaceScanner extends BaseScanner { @Override protected boolean isCandidateComponent(MetadataReader metadataReader) throws IOException { return metadataReader.getClassMetadata().isInterface() - && metadataReader.getAnnotationMetadata().hasAnnotation(PdgRPC.class.getName()); + && metadataReader.getAnnotationMetadata().hasAnnotation(PRRPC.class.getName()); } /** @@ -38,7 +38,7 @@ public class RPCInterfaceScanner extends BaseScanner { @Override protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) { return beanDefinition.getMetadata().isInterface() - && beanDefinition.getMetadata().hasAnnotation(PdgRPC.class.getName()); + && beanDefinition.getMetadata().hasAnnotation(PRRPC.class.getName()); } @Override diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCMapping.java similarity index 77% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCMapping.java index 10d3be5..188ca04 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCMapping.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCMapping.java @@ -1,7 +1,6 @@ -package com.paradogs.common.core.annoations.rpc; +package com.paradogs.framework.core.annoations.rpc; -import com.paradogs.common.core.msg.BaseMsg; -import org.springframework.scheduling.annotation.Async; +import com.paradogs.framework.core.msg.BaseMsg; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -15,7 +14,7 @@ import java.lang.annotation.Target; */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) -public @interface PdgRPCMapping { +public @interface PRRPCMapping { /** * 路由路径 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBean.java similarity index 85% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBean.java index f8fd7d3..9d22007 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyBean.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBean.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations.rpc; +package com.paradogs.framework.core.annoations.rpc; import org.springframework.beans.factory.FactoryBean; import org.springframework.cglib.proxy.Enhancer; @@ -8,7 +8,7 @@ import org.springframework.cglib.proxy.Enhancer; * @date: 2023/8/13 9:37 * @Description: TODO */ -public class RPCProxyBean implements FactoryBean { +public class PRRPCProxyBean implements FactoryBean { /** * 被代理的接口 @@ -19,7 +19,7 @@ public class RPCProxyBean implements FactoryBean { * 构造函数 * @param myInterfaceClass 被代理的接口类型,该参数,由注解解析器自动赋值 */ - public RPCProxyBean(Class myInterfaceClass) { + public PRRPCProxyBean(Class myInterfaceClass) { this.myInterfaceClass = myInterfaceClass; } @@ -45,7 +45,7 @@ public class RPCProxyBean implements FactoryBean { //将目标对象设置为父类 enhancer.setSuperclass(myInterfaceClass); //设置目标拦截器 - enhancer.setCallback(new RPCProxyInterceptor()); + enhancer.setCallback(new PRRPCProxyInterceptor()); // 创建代理对象 return (T)enhancer.create(); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java similarity index 73% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java index 37b2342..a9fad01 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/PdgRPCProxyBeanImportSelector.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java @@ -1,10 +1,10 @@ -package com.paradogs.common.core.annoations.rpc; +package com.paradogs.framework.core.annoations.rpc; -import com.paradogs.common.core.annoations.base.BaseImportSelector; -import com.paradogs.common.core.annoations.base.BaseScanner; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.route.MsgMapping; -import com.paradogs.common.core.utils.ReflectUtils; +import com.paradogs.framework.core.annoations.base.BaseImportSelector; +import com.paradogs.framework.core.annoations.base.BaseScanner; +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.route.MsgMapping; +import com.paradogs.framework.core.utils.ReflectUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.config.BeanDefinition; @@ -21,14 +21,14 @@ import java.util.concurrent.CompletableFuture; * @Description: TODO */ @Slf4j -public class PdgRPCProxyBeanImportSelector extends BaseImportSelector { +public class PRRPCProxyBeanImportSelector extends BaseImportSelector { @Override public BaseScanner getScanner(AnnotationMetadata importingClassMetadata, BeanFactory beanFactory) { // 转换为 DefaultListableBeanFactory 便于操作 DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) beanFactory; // 自定义扫描器,获取 BeanDefinitionHolder - RPCInterfaceScanner scanner = new RPCInterfaceScanner(defaultListableBeanFactory); + PRRPCInterfaceScanner scanner = new PRRPCInterfaceScanner(defaultListableBeanFactory); return scanner; } @@ -53,10 +53,10 @@ public class PdgRPCProxyBeanImportSelector extends BaseImportSelector { for (Method method : methods) { // 计算路由 - PdgRPCMapping pdgRPCMapping = AnnotationUtils.findAnnotation(method, PdgRPCMapping.class); - String route = pdgRPCMapping.value() + "|resp"; + PRRPCMapping PRRPCMapping = AnnotationUtils.findAnnotation(method, PRRPCMapping.class); + String route = PRRPCMapping.value() + "|resp"; - if (PdgRPCHolder.getMappingMap().containsKey(route)) { + if (PRRPCHolder.getMappingMap().containsKey(route)) { throw new RuntimeException("Duplicate route found: [" + route + "]"); } @@ -66,7 +66,7 @@ public class PdgRPCProxyBeanImportSelector extends BaseImportSelector { // throw new RuntimeException("RPC[" + pdgRPCMapping.value() + "] use async but returnType is null"); // } if (!method.getReturnType().isAssignableFrom(CompletableFuture.class)) { - throw new RuntimeException("RPC[" + pdgRPCMapping.value() + "] return must use async.(CompleteFuture)"); + throw new RuntimeException("RPC[" + PRRPCMapping.value() + "] return must use async.(CompleteFuture)"); } Class genericReturnType = null; try { @@ -75,16 +75,16 @@ public class PdgRPCProxyBeanImportSelector extends BaseImportSelector { throw new RuntimeException("GetGenericReturnType error, ReturnType[" + method.getReturnType() + "] must extends BaseMsg: " + method.getName()); } // PdgRpcMapping.returnType default == BaseMsg.class - Class targetMsgClass = pdgRPCMapping.returnType() == BaseMsg.class ? genericReturnType : pdgRPCMapping.returnType(); + Class targetMsgClass = PRRPCMapping.returnType() == BaseMsg.class ? genericReturnType : PRRPCMapping.returnType(); - if (PdgRPCHolder.getMappingMap().containsKey(route)) { + if (PRRPCHolder.getMappingMap().containsKey(route)) { throw new RuntimeException("Route already exist: " + route); } - PdgRPCHolder.getMappingMap().put(route, new MsgMapping(targetMsgClass, method)); + PRRPCHolder.getMappingMap().put(route, new MsgMapping(targetMsgClass, method)); log.debug("Register RPC callback mapping: [{}]", route); } catch (Exception e) { - throw new RuntimeException("RPC[" + pdgRPCMapping.value() + "] return must extends BaseMsg(?GCMsg)"); + throw new RuntimeException("RPC[" + PRRPCMapping.value() + "] return must extends BaseMsg(?GCMsg)"); } } @@ -113,7 +113,7 @@ public class PdgRPCProxyBeanImportSelector extends BaseImportSelector { // 修改被扫描接口到具体实现类型,替换为自定义到代理实现类 String originBeanName = beanDefinition.getBeanClassName(); - beanDefinition.setBeanClassName(RPCProxyBean.class.getName()); + beanDefinition.setBeanClassName(PRRPCProxyBean.class.getName()); log.debug("Proxy RPC interface: [{}]", originBeanName); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java similarity index 75% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java index b1c419c..6d3ec45 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RPCProxyInterceptor.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java @@ -1,11 +1,11 @@ -package com.paradogs.common.core.annoations.rpc; +package com.paradogs.framework.core.annoations.rpc; -import com.paradogs.common.core.annoations.request.PdgMsg; -import com.paradogs.common.core.events.RPCRequestEvent; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.ReflectUtils; -import com.paradogs.common.core.utils.RouteUtils; +import com.paradogs.framework.core.annoations.request.PRMsg; +import com.paradogs.framework.core.events.RPCRequestEvent; +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.utils.EventUtils; +import com.paradogs.framework.core.utils.ReflectUtils; +import com.paradogs.framework.core.utils.RouteUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.aop.support.AopUtils; import org.springframework.cglib.proxy.MethodInterceptor; @@ -22,7 +22,7 @@ import java.util.concurrent.CompletableFuture; * @Description: TODO */ @Slf4j -public class RPCProxyInterceptor implements MethodInterceptor { +public class PRRPCProxyInterceptor implements MethodInterceptor { /** * 执行方法拦截器 @@ -36,8 +36,8 @@ public class RPCProxyInterceptor implements MethodInterceptor { @Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { - PdgRPCMapping pdgRPCMapping = AnnotationUtils.findAnnotation(method, PdgRPCMapping.class); - if (pdgRPCMapping == null) { + PRRPCMapping PRRPCMapping = AnnotationUtils.findAnnotation(method, PRRPCMapping.class); + if (PRRPCMapping == null) { return methodProxy.invokeSuper(obj, args); } @@ -48,13 +48,13 @@ public class RPCProxyInterceptor implements MethodInterceptor { targetClass = AopUtils.getTargetClass(obj); } - PdgRPC pdgRPC = AnnotationUtils.findAnnotation(targetClass, PdgRPC.class); + PRRPC PRRPC = AnnotationUtils.findAnnotation(targetClass, PRRPC.class); // 获得参数消息 BaseMsg requestMsg = null; Parameter[] parameters = method.getParameters(); for (int i = 0; i < parameters.length; i++) { - PdgMsg requestAnnotation = AnnotationUtils.findAnnotation(parameters[i], PdgMsg.class); + PRMsg requestAnnotation = AnnotationUtils.findAnnotation(parameters[i], PRMsg.class); if (requestAnnotation != null) { try { requestMsg = (BaseMsg) args[i]; @@ -78,7 +78,7 @@ public class RPCProxyInterceptor implements MethodInterceptor { // 解耦 MsgUtils EventUtils.publishEvent(new RPCRequestEvent( - pdgRPC.value() + RouteUtils.SERVER_SEPARATOR + pdgRPCMapping.value(), + PRRPC.value() + RouteUtils.SERVER_SEPARATOR + PRRPCMapping.value(), requestMsg != null ? requestMsg : new BaseMsg(), returnType, promise diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java similarity index 89% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java index 02553b0..2bd0d80 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/rpc/RpcResponseResolver.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java @@ -1,10 +1,10 @@ -package com.paradogs.common.core.annoations.rpc; +package com.paradogs.framework.core.annoations.rpc; -import com.paradogs.common.core.events.RPCRespEvent; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.GCMsg; -import com.paradogs.common.core.msg.PRMsgContextHolder; -import com.paradogs.common.core.utils.RouteUtils; +import com.paradogs.framework.core.events.RPCRespEvent; +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.GCMsg; +import com.paradogs.framework.core.msg.PRMsgContextHolder; +import com.paradogs.framework.core.utils.RouteUtils; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -23,7 +23,7 @@ import java.util.concurrent.ConcurrentHashMap; */ @Slf4j @Component -public class RpcResponseResolver { +public class PRRPCResponseResolver { /** * 等待响应的消息 map diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/tick/PRTick.java similarity index 88% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/tick/PRTick.java index 379c56a..396f805 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/annoations/tick/PRTick.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/tick/PRTick.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.annoations.tick; +package com.paradogs.framework.core.annoations.tick; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java similarity index 77% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java index eb76408..76dd6e7 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/NettyConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java @@ -1,13 +1,14 @@ -package com.paradogs.common.core.config; +package com.paradogs.framework.core.config; -import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; +import com.paradogs.framework.core.exceptions.GlobalExceptionDispatch; import com.paradogs.common.core.netty.*; -import com.paradogs.common.core.netty.clients.MasterClientProperties; -import com.paradogs.common.core.netty.clients.PRMasterClient; -import com.paradogs.common.core.netty.clients.PRMasterClientChannelInitializer; -import com.paradogs.common.core.netty.clients.PRMasterClientMsgHandler; -import com.paradogs.common.core.netty.server.PRServer; -import com.paradogs.common.core.netty.server.ServerProperties; +import com.paradogs.framework.core.netty.clients.MasterClientProperties; +import com.paradogs.framework.core.netty.clients.PRMasterClient; +import com.paradogs.framework.core.netty.clients.PRMasterClientChannelInitializer; +import com.paradogs.framework.core.netty.clients.PRMasterClientMsgHandler; +import com.paradogs.framework.core.netty.server.PRServer; +import com.paradogs.framework.core.netty.server.ServerProperties; +import com.paradogs.framework.core.netty.*; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/QueueConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/QueueConfiguration.java similarity index 74% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/QueueConfiguration.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/QueueConfiguration.java index b5186e4..f4aba16 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/QueueConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/QueueConfiguration.java @@ -1,14 +1,13 @@ -package com.paradogs.common.core.config; +package com.paradogs.framework.core.config; -import com.paradogs.common.core.queue.AbstractMsgConsumer; -import com.paradogs.common.core.queue.MsgDefaultConsumer; -import com.paradogs.common.core.queue.PRQueueHolder; -import com.paradogs.common.core.queue.QueueProperties; +import com.paradogs.framework.core.queue.AbstractMsgConsumer; +import com.paradogs.framework.core.queue.MsgDefaultConsumer; +import com.paradogs.framework.core.queue.PRQueueHolder; +import com.paradogs.framework.core.queue.QueueProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; -import org.springframework.core.annotation.Order; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/RPCConfiguration.java similarity index 56% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/RPCConfiguration.java index 7100f8b..dbcd33d 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/RPCConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/RPCConfiguration.java @@ -1,7 +1,7 @@ -package com.paradogs.common.core.config; +package com.paradogs.framework.core.config; -import com.paradogs.common.core.annoations.rpc.RpcResponseResolver; -import com.paradogs.common.core.msg.CommonController; +import com.paradogs.framework.core.annoations.rpc.PRRPCResponseResolver; +import com.paradogs.framework.core.msg.CommonController; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -14,8 +14,8 @@ import org.springframework.context.annotation.Configuration; public class RPCConfiguration { @Bean - public RpcResponseResolver rpcResponseResolver() { - return new RpcResponseResolver(); + public PRRPCResponseResolver rpcResponseResolver() { + return new PRRPCResponseResolver(); } @Bean diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java similarity index 67% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java index 59c97bf..fb9bf8f 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/config/UtilsConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java @@ -1,8 +1,8 @@ -package com.paradogs.common.core.config; +package com.paradogs.framework.core.config; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.MsgUtils; -import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.framework.core.utils.EventUtils; +import com.paradogs.framework.core.utils.MsgUtils; +import com.paradogs.framework.core.utils.SpringUtils; import org.springframework.context.annotation.Bean; /** diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ChannelActiveEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ChannelActiveEvent.java similarity index 77% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ChannelActiveEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ChannelActiveEvent.java index 90bbd47..25a3dce 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ChannelActiveEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ChannelActiveEvent.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.events; +package com.paradogs.framework.core.events; -import com.paradogs.common.core.events.base.AnonEvent; +import com.paradogs.framework.core.events.base.AnonEvent; import io.netty.channel.ChannelHandlerContext; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ChannelInactiveEvent.java similarity index 77% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ChannelInactiveEvent.java index 8c0b1b8..9928667 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ChannelInactiveEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ChannelInactiveEvent.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.events; +package com.paradogs.framework.core.events; -import com.paradogs.common.core.events.base.AnonEvent; +import com.paradogs.framework.core.events.base.AnonEvent; import io.netty.channel.ChannelHandlerContext; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java similarity index 76% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java index bb71e1b..5e3c28c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/RPCRequestEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java @@ -1,7 +1,7 @@ -package com.paradogs.common.core.events; +package com.paradogs.framework.core.events; -import com.paradogs.common.core.events.base.AnonEvent; -import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.framework.core.events.base.AnonEvent; +import com.paradogs.framework.core.msg.BaseMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java similarity index 66% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java index 534159d..cde306b 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/RPCRespEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java @@ -1,7 +1,7 @@ -package com.paradogs.common.core.events; +package com.paradogs.framework.core.events; -import com.paradogs.common.core.events.base.AnonEvent; -import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.framework.core.events.base.AnonEvent; +import com.paradogs.framework.core.msg.BaseMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java similarity index 66% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java index c9b457a..91f71ac 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ReceiveMsgEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java @@ -1,7 +1,7 @@ -package com.paradogs.common.core.events; +package com.paradogs.framework.core.events; -import com.paradogs.common.core.events.base.AnonEvent; -import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.framework.core.events.base.AnonEvent; +import com.paradogs.framework.core.msg.BaseMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerConnectionInitEvent.java similarity index 60% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerConnectionInitEvent.java index 21aee01..4282dc3 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ServerConnectionInitEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerConnectionInitEvent.java @@ -1,7 +1,7 @@ -package com.paradogs.common.core.events; +package com.paradogs.framework.core.events; -import com.paradogs.common.core.events.base.AnonEvent; -import com.paradogs.common.core.pojo.Connection; +import com.paradogs.framework.core.events.base.AnonEvent; +import com.paradogs.framework.core.pojo.Connection; import lombok.Data; /** diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ServerStartEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerStartEvent.java similarity index 75% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ServerStartEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerStartEvent.java index 720cb6a..32dd925 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/ServerStartEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerStartEvent.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.events; +package com.paradogs.framework.core.events; -import com.paradogs.common.core.events.base.AnonEvent; +import com.paradogs.framework.core.events.base.AnonEvent; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/SyncMsgEvent.java similarity index 83% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/SyncMsgEvent.java index 4826d5f..655caf6 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/SyncMsgEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/SyncMsgEvent.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.events; +package com.paradogs.framework.core.events; -import com.paradogs.common.core.events.base.BaseEvent; +import com.paradogs.framework.core.events.base.BaseEvent; import lombok.Getter; import lombok.Setter; import lombok.ToString; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/base/AnonEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/base/AnonEvent.java similarity index 88% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/base/AnonEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/base/AnonEvent.java index 8c4d652..6329aa3 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/base/AnonEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/base/AnonEvent.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.events.base; +package com.paradogs.framework.core.events.base; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/base/BaseEvent.java similarity index 93% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/base/BaseEvent.java index 2bb0489..6ed84c2 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/events/base/BaseEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/base/BaseEvent.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.events.base; +package com.paradogs.framework.core.events.base; import lombok.Getter; import lombok.Setter; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/GlobalExceptionDispatch.java similarity index 75% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/GlobalExceptionDispatch.java index e4923ed..09ddc0e 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/GlobalExceptionDispatch.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/GlobalExceptionDispatch.java @@ -1,8 +1,8 @@ -package com.paradogs.common.core.exceptions; +package com.paradogs.framework.core.exceptions; -import com.paradogs.common.core.annoations.exception.PdgExceptionHandler; -import com.paradogs.common.core.annoations.exception.PdgExceptionHandlerClass; -import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.framework.core.annoations.exception.PRExceptionHandler; +import com.paradogs.framework.core.annoations.exception.PRExceptionHandlerClass; +import com.paradogs.framework.core.utils.SpringUtils; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -30,13 +30,13 @@ public class GlobalExceptionDispatch { */ @PostConstruct public void registerExceptionHandler() { - for (Object bean : SpringUtils.getBeansWithAnnotation(PdgExceptionHandlerClass.class).values()) { + for (Object bean : SpringUtils.getBeansWithAnnotation(PRExceptionHandlerClass.class).values()) { for (Method method : bean.getClass().getDeclaredMethods()) { - PdgExceptionHandler pdgExceptionHandler = method.getAnnotation(PdgExceptionHandler.class); - if (pdgExceptionHandler == null) { + PRExceptionHandler PRExceptionHandler = method.getAnnotation(PRExceptionHandler.class); + if (PRExceptionHandler == null) { continue; } - exceptionHandlerMap.put(pdgExceptionHandler.value(), method); + exceptionHandlerMap.put(PRExceptionHandler.value(), method); } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/SerializationException.java similarity index 64% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/SerializationException.java index d4407c1..b787cdd 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/SerializationException.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/SerializationException.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.exceptions; +package com.paradogs.framework.core.exceptions; -import com.paradogs.common.core.exceptions.base.BaseUncheckedException; +import com.paradogs.framework.core.exceptions.base.BaseUncheckedException; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/ServiceException.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/ServiceException.java similarity index 65% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/ServiceException.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/ServiceException.java index 3abb3ac..0a400b8 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/ServiceException.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/ServiceException.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.exceptions; +package com.paradogs.framework.core.exceptions; -import com.paradogs.common.core.exceptions.base.BaseUncheckedException; +import com.paradogs.framework.core.exceptions.base.BaseUncheckedException; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseCheckedException.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/base/BaseCheckedException.java similarity index 86% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseCheckedException.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/base/BaseCheckedException.java index f98d667..2b0251b 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseCheckedException.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/base/BaseCheckedException.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.exceptions.base; +package com.paradogs.framework.core.exceptions.base; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/base/BaseUncheckedException.java similarity index 90% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/base/BaseUncheckedException.java index 7182acc..31f9c21 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/exceptions/base/BaseUncheckedException.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/base/BaseUncheckedException.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.exceptions.base; +package com.paradogs.framework.core.exceptions.base; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/listeners/PREventListener.java similarity index 85% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/listeners/PREventListener.java index cdd5bdf..2b31e3b 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/listeners/PdgEventListener.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/listeners/PREventListener.java @@ -1,8 +1,8 @@ -package com.paradogs.common.core.listeners; +package com.paradogs.framework.core.listeners; -import com.paradogs.common.core.annoations.tick.PRTick; -import com.paradogs.common.core.netty.events.MainLoopEvent; -import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.framework.core.annoations.tick.PRTick; +import com.paradogs.framework.core.netty.events.MainLoopEvent; +import com.paradogs.framework.core.utils.SpringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; @@ -19,7 +19,7 @@ import java.util.stream.Stream; */ @Slf4j @Component -public class PdgEventListener { +public class PREventListener { @EventListener(MainLoopEvent.class) public void onMainLoopEvent(MainLoopEvent event) { diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg.java similarity index 92% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg.java index da5379a..281acc6 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/BaseMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg.java @@ -1,10 +1,10 @@ -package com.paradogs.common.core.msg; +package com.paradogs.framework.core.msg; import com.baidu.bjf.remoting.protobuf.FieldType; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; -import com.paradogs.common.core.utils.BeanUtils; -import com.paradogs.common.core.utils.ProtoUtils; +import com.paradogs.framework.core.utils.BeanUtils; +import com.paradogs.framework.core.utils.ProtoUtils; import io.netty.buffer.ByteBuf; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg_CmdVersion.java similarity index 92% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg_CmdVersion.java index 7bf3ac8..f203c82 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/BaseMsg_CmdVersion.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg_CmdVersion.java @@ -1,10 +1,10 @@ -package com.paradogs.common.core.msg; +package com.paradogs.framework.core.msg; import com.baidu.bjf.remoting.protobuf.FieldType; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; -import com.paradogs.common.core.utils.BeanUtils; -import com.paradogs.common.core.utils.ProtoUtils; +import com.paradogs.framework.core.utils.BeanUtils; +import com.paradogs.framework.core.utils.ProtoUtils; import io.netty.buffer.ByteBuf; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteBodyMsg.java similarity index 92% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteBodyMsg.java index 3dd7292..195640e 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/ByteBodyMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteBodyMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.msg; +package com.paradogs.framework.core.msg; import io.netty.buffer.ByteBuf; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CGMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java similarity index 86% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CGMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java index 511eccf..ea0d878 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CGMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.msg; +package com.paradogs.framework.core.msg; import lombok.Data; import lombok.ToString; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CGTestMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGTestMsg.java similarity index 84% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CGTestMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGTestMsg.java index cfdd817..31dd484 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CGTestMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGTestMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.msg; +package com.paradogs.framework.core.msg; import lombok.*; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CommonController.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java similarity index 58% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CommonController.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java index 8dd658e..22fc0a8 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/CommonController.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java @@ -1,33 +1,25 @@ -package com.paradogs.common.core.msg; - -import com.paradogs.common.core.annoations.request.PdgController; -import com.paradogs.common.core.annoations.request.PdgMsg; -import com.paradogs.common.core.annoations.request.PdgMsgMapping; -import com.paradogs.common.core.events.ChannelActiveEvent; -import com.paradogs.common.core.events.RPCRespEvent; -import com.paradogs.common.core.netty.server.PRConnection; -import com.paradogs.common.core.netty.server.PRConnectionHolder; -import com.paradogs.common.core.netty.server.ServerProperties; -import com.paradogs.common.core.rpc.InitRPC; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.MsgUtils; -import com.paradogs.common.core.utils.SpringUtils; +package com.paradogs.framework.core.msg; + +import com.paradogs.framework.core.annoations.request.PRController; +import com.paradogs.framework.core.annoations.request.PRMsg; +import com.paradogs.framework.core.annoations.request.PRMsgMapping; +import com.paradogs.framework.core.events.RPCRespEvent; +import com.paradogs.framework.core.netty.server.PRConnectionHolder; +import com.paradogs.framework.core.netty.server.ServerProperties; +import com.paradogs.framework.core.utils.EventUtils; import lombok.extern.slf4j.Slf4j; -import java.time.LocalDateTime; -import java.util.concurrent.CompletableFuture; - /** * @author: yumi * @date: 2023/8/7 16:04 * @Description: TODO */ @Slf4j -@PdgController -@PdgMsgMapping("_paradogs") +@PRController +@PRMsgMapping("_paradogs") public class CommonController { - @PdgMsgMapping("dist") + @PRMsgMapping("dist") public void dist() { log.info("dist test success ..."); } @@ -37,7 +29,7 @@ public class CommonController { * GC 消息统一走这里,保证也按队列顺序处理 * @param msg */ - @PdgMsgMapping("callback") + @PRMsgMapping("callback") public void callback(ByteBodyMsg msg) { if (msg.getMsgHeader().getReplyMsgId() == null) { log.error("Not found Callback header.replyMsgId: {}", msg); @@ -53,8 +45,8 @@ public class CommonController { * 客户端服务器发来的初始化信息 * @param properties */ - @PdgMsgMapping("initInfo") - public void initInfo(@PdgMsg ServerProperties properties) { + @PRMsgMapping("initInfo") + public void initInfo(@PRMsg ServerProperties properties) { // 初始化连接的服务器信息(建立连接后,服务器主动发送自己的信息) PRConnectionHolder.initConnection(PRMsgContextHolder.getChannel(), properties); log.info("Server connection init success: {}|{}", properties.getType(), properties.getKey()); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/DBTask.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/DBTask.java similarity index 94% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/DBTask.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/DBTask.java index 399116f..f0a699a 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/DBTask.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/DBTask.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.msg; +package com.paradogs.framework.core.msg; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCMsg.java similarity index 84% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCMsg.java index 2cb8a91..e08151d 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/GCMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.msg; +package com.paradogs.framework.core.msg; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/GCTestMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCTestMsg.java similarity index 84% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/GCTestMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCTestMsg.java index a23169c..be0e42b 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/GCTestMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCTestMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.msg; +package com.paradogs.framework.core.msg; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/IMsgSerializable.java similarity index 89% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/IMsgSerializable.java index 2c1e3c3..9d72af2 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/IMsgSerializable.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/IMsgSerializable.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.msg; +package com.paradogs.framework.core.msg; import io.netty.buffer.ByteBuf; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/MsgHeader.java similarity index 92% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/MsgHeader.java index 66cae60..0c90c93 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/MsgHeader.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/MsgHeader.java @@ -1,20 +1,18 @@ -package com.paradogs.common.core.msg; +package com.paradogs.framework.core.msg; import com.baidu.bjf.remoting.protobuf.Codec; import com.baidu.bjf.remoting.protobuf.FieldType; import com.baidu.bjf.remoting.protobuf.ProtobufProxy; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; import com.google.protobuf.InvalidProtocolBufferException; -import com.paradogs.common.core.utils.BeanUtils; -import com.paradogs.common.core.utils.RandomUtils; -import com.paradogs.common.core.utils.RouteUtils; +import com.paradogs.framework.core.utils.BeanUtils; +import com.paradogs.framework.core.utils.RandomUtils; +import com.paradogs.framework.core.utils.RouteUtils; import io.netty.buffer.ByteBuf; import lombok.Data; import java.io.IOException; import java.time.LocalDateTime; -import java.util.Date; -import java.util.UUID; /** diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsgContextHolder.java similarity index 96% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsgContextHolder.java index d98b72d..a57cc2c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/PRMsgContextHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsgContextHolder.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.msg; +package com.paradogs.framework.core.msg; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/VoidMsg.java similarity index 73% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/VoidMsg.java index 977ff35..5483f30 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/VoidMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/VoidMsg.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.msg; +package com.paradogs.framework.core.msg; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/route/MsgMapping.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java similarity index 79% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/route/MsgMapping.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java index cdf0186..ac64424 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/msg/route/MsgMapping.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.msg.route; +package com.paradogs.framework.core.msg.route; -import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.BaseMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractChannelInitializer.java similarity index 95% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractChannelInitializer.java index 08e3933..a9f4906 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractChannelInitializer.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractChannelInitializer.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.netty; +package com.paradogs.framework.core.netty; -import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.framework.core.utils.SpringUtils; import io.netty.channel.*; import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.handler.codec.LengthFieldBasedFrameDecoder; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientChannelInitializer.java similarity index 87% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientChannelInitializer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientChannelInitializer.java index 88b490f..fb3f4c3 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientChannelInitializer.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientChannelInitializer.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty; +package com.paradogs.framework.core.netty; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientMsgHandler.java similarity index 78% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientMsgHandler.java index b2485b0..2f867a2 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractClientMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientMsgHandler.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty; +package com.paradogs.framework.core.netty; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java similarity index 81% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java index 89d560b..c01a7c2 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java @@ -1,21 +1,18 @@ -package com.paradogs.common.core.netty; - -import com.paradogs.common.core.events.ReceiveMsgEvent; -import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.msg.PRMsgContextHolder; -import com.paradogs.common.core.msg.MsgHeader; -import com.paradogs.common.core.netty.server.PRConnection; -import com.paradogs.common.core.netty.server.PRConnectionHolder; -import com.paradogs.common.core.queue.PRQueueHolder; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.SpringUtils; +package com.paradogs.framework.core.netty; + +import com.paradogs.framework.core.events.ReceiveMsgEvent; +import com.paradogs.framework.core.exceptions.GlobalExceptionDispatch; +import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.PRMsgContextHolder; +import com.paradogs.framework.core.msg.MsgHeader; +import com.paradogs.framework.core.netty.server.PRConnectionHolder; +import com.paradogs.framework.core.queue.PRQueueHolder; +import com.paradogs.framework.core.utils.EventUtils; +import com.paradogs.framework.core.utils.SpringUtils; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import lombok.extern.slf4j.Slf4j; -import java.time.LocalDateTime; - /** * @author: yumi * @date: 2023/7/27 9:32 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerChannelInitializer.java similarity index 87% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerChannelInitializer.java index f611f4e..76811be 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerChannelInitializer.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerChannelInitializer.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty; +package com.paradogs.framework.core.netty; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerMsgHandler.java similarity index 78% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerMsgHandler.java index 0fe2365..2a552dc 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRAbstractServerMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerMsgHandler.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty; +package com.paradogs.framework.core.netty; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRCodec.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java similarity index 90% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRCodec.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java index 772f99e..86f032c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRCodec.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java @@ -1,8 +1,8 @@ -package com.paradogs.common.core.netty; +package com.paradogs.framework.core.netty; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.msg.MsgHeader; +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.MsgHeader; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultMsgHandler.java similarity index 83% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultMsgHandler.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultMsgHandler.java index 2db2f3a..40a619e 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultMsgHandler.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty; +package com.paradogs.framework.core.netty; import io.netty.channel.ChannelHandler; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultServerChannelInitializer.java similarity index 91% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultServerChannelInitializer.java index 96eca09..99c62a2 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/PRDefaultServerChannelInitializer.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultServerChannelInitializer.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty; +package com.paradogs.framework.core.netty; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.stereotype.Component; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/ProtocolProperties.java similarity index 92% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/ProtocolProperties.java index afd796a..23e02e4 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/ProtocolProperties.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/ProtocolProperties.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty; +package com.paradogs.framework.core.netty; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/MasterClientProperties.java similarity index 84% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/MasterClientProperties.java index 4870041..4b70960 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/MasterClientProperties.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/MasterClientProperties.java @@ -1,12 +1,10 @@ -package com.paradogs.common.core.netty.clients; +package com.paradogs.framework.core.netty.clients; -import com.paradogs.common.core.utils.StringUtils; +import com.paradogs.framework.core.utils.StringUtils; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; -import java.util.List; - /** * @author: yumi * @date: 2023/7/31 22:39 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRClient.java similarity index 89% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRClient.java index 2534189..2d7b284 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRClient.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRClient.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.netty.clients; +package com.paradogs.framework.core.netty.clients; -import com.paradogs.common.core.netty.server.PRConnectionHolder; +import com.paradogs.framework.core.netty.server.PRConnectionHolder; import io.netty.channel.Channel; import lombok.Getter; import lombok.Setter; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClient.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClient.java similarity index 90% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClient.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClient.java index c44205c..a441b83 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClient.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClient.java @@ -1,13 +1,12 @@ -package com.paradogs.common.core.netty.clients; +package com.paradogs.framework.core.netty.clients; -import com.paradogs.common.core.netty.PRAbstractClientChannelInitializer; -import com.paradogs.common.core.netty.server.ServerProperties; -import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.framework.core.netty.PRAbstractClientChannelInitializer; +import com.paradogs.framework.core.netty.server.ServerProperties; +import com.paradogs.framework.core.utils.SpringUtils; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; -import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientChannelInitializer.java similarity index 55% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientChannelInitializer.java index 74b24cd..f97c360 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientChannelInitializer.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientChannelInitializer.java @@ -1,8 +1,7 @@ -package com.paradogs.common.core.netty.clients; +package com.paradogs.framework.core.netty.clients; -import com.paradogs.common.core.netty.PRAbstractClientChannelInitializer; -import com.paradogs.common.core.netty.PRAbstractMsgHandler; -import io.netty.channel.ChannelHandlerContext; +import com.paradogs.framework.core.netty.PRAbstractClientChannelInitializer; +import com.paradogs.framework.core.netty.PRAbstractMsgHandler; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientMsgHandler.java similarity index 65% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientMsgHandler.java index cdac957..abaf13b 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/clients/PRMasterClientMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientMsgHandler.java @@ -1,14 +1,12 @@ -package com.paradogs.common.core.netty.clients; +package com.paradogs.framework.core.netty.clients; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.msg.MsgHeader; -import com.paradogs.common.core.netty.PRAbstractClientMsgHandler; -import com.paradogs.common.core.netty.server.PRConnection; -import com.paradogs.common.core.netty.server.PRConnectionHolder; -import com.paradogs.common.core.netty.server.ServerProperties; -import com.paradogs.common.core.utils.MsgUtils; -import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.netty.PRAbstractClientMsgHandler; +import com.paradogs.framework.core.netty.server.PRConnection; +import com.paradogs.framework.core.netty.server.PRConnectionHolder; +import com.paradogs.framework.core.netty.server.ServerProperties; +import com.paradogs.framework.core.utils.MsgUtils; +import com.paradogs.framework.core.utils.SpringUtils; import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/events/MainLoopEvent.java similarity index 83% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/events/MainLoopEvent.java index cafac37..3114e16 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/events/MainLoopEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/events/MainLoopEvent.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty.events; +package com.paradogs.framework.core.netty.events; import org.springframework.context.ApplicationEvent; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/events/ServerEvent.java similarity index 72% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/events/ServerEvent.java index 42d4974..30e31d7 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/events/ServerEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/events/ServerEvent.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.netty.events; +package com.paradogs.framework.core.netty.events; -import com.paradogs.common.core.events.base.BaseEvent; +import com.paradogs.framework.core.events.base.BaseEvent; import lombok.extern.slf4j.Slf4j; /** diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRConnection.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnection.java similarity index 90% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRConnection.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnection.java index 85ebcf2..ea41bbb 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRConnection.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnection.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.netty.server; +package com.paradogs.framework.core.netty.server; import io.netty.channel.Channel; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnectionHolder.java similarity index 95% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnectionHolder.java index b8fe0ff..5751ebc 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRConnectionHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnectionHolder.java @@ -1,7 +1,6 @@ -package com.paradogs.common.core.netty.server; +package com.paradogs.framework.core.netty.server; -import com.paradogs.common.core.msg.PRMsgContextHolder; -import com.paradogs.common.core.netty.clients.PRClient; +import com.paradogs.framework.core.netty.clients.PRClient; import io.netty.channel.Channel; import lombok.Getter; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServer.java similarity index 90% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServer.java index 19e3025..fa1e703 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/PRServer.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServer.java @@ -1,9 +1,9 @@ -package com.paradogs.common.core.netty.server; +package com.paradogs.framework.core.netty.server; -import com.paradogs.common.core.events.ServerStartEvent; -import com.paradogs.common.core.netty.PRAbstractServerChannelInitializer; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.framework.core.events.ServerStartEvent; +import com.paradogs.framework.core.netty.PRAbstractServerChannelInitializer; +import com.paradogs.framework.core.utils.EventUtils; +import com.paradogs.framework.core.utils.SpringUtils; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; import io.netty.channel.nio.NioEventLoopGroup; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/ServerProperties.java similarity index 83% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/ServerProperties.java index 7f433a6..bc00f4b 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/netty/server/ServerProperties.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/ServerProperties.java @@ -1,7 +1,6 @@ -package com.paradogs.common.core.netty.server; +package com.paradogs.framework.core.netty.server; -import com.paradogs.common.core.msg.CGMsg; -import com.paradogs.common.core.utils.RouteUtils; +import com.paradogs.framework.core.msg.CGMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -55,7 +54,7 @@ public class ServerProperties extends CGMsg { if (StringUtils.isNotBlank(this.key)) { return this.key; } - return this.key = type + RouteUtils.SERVER_SEPARATOR + UUID.randomUUID().toString().replace("-", ""); + return this.key = UUID.randomUUID().toString().replace("-", ""); } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/pojo/Connection.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java similarity index 94% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/pojo/Connection.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java index 85f493b..d3e45f5 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/pojo/Connection.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.pojo; +package com.paradogs.framework.core.pojo; -import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.BaseMsg; import io.netty.channel.Channel; import lombok.Data; import lombok.extern.slf4j.Slf4j; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/ConnectorMessage.java similarity index 77% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/ConnectorMessage.java index 8f26206..8e503ae 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/pojo/ConnectorMessage.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/ConnectorMessage.java @@ -1,6 +1,6 @@ -package com.paradogs.common.core.pojo; +package com.paradogs.framework.core.pojo; -import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.BaseMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/AbstractMsgConsumer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/AbstractMsgConsumer.java similarity index 60% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/AbstractMsgConsumer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/AbstractMsgConsumer.java index 3583d48..0b427c8 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/AbstractMsgConsumer.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/AbstractMsgConsumer.java @@ -1,8 +1,8 @@ -package com.paradogs.common.core.queue; +package com.paradogs.framework.core.queue; -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.netty.events.MainLoopEvent; -import com.paradogs.common.core.utils.EventUtils; +import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.netty.events.MainLoopEvent; +import com.paradogs.framework.core.utils.EventUtils; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/MsgDefaultConsumer.java similarity index 50% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/MsgDefaultConsumer.java index f1c8fb5..8498a59 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/MsgDefaultConsumer.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/MsgDefaultConsumer.java @@ -1,14 +1,8 @@ -package com.paradogs.common.core.queue; +package com.paradogs.framework.core.queue; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.netty.events.MainLoopEvent; -import com.paradogs.common.core.utils.EventUtils; -import com.paradogs.common.core.utils.MsgUtils; +import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.utils.MsgUtils; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; import java.lang.reflect.InvocationTargetException; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java similarity index 95% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java index cb5a441..60d0842 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/PRQueueHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java @@ -1,7 +1,7 @@ -package com.paradogs.common.core.queue; +package com.paradogs.framework.core.queue; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.utils.SpringUtils; +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.utils.SpringUtils; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/QueueConsumerThread.java similarity index 90% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/QueueConsumerThread.java index 0b48c27..09ca20f 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/QueueConsumerThread.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/QueueConsumerThread.java @@ -1,12 +1,11 @@ -package com.paradogs.common.core.queue; +package com.paradogs.framework.core.queue; -import com.paradogs.common.core.exceptions.GlobalExceptionDispatch; -import com.paradogs.common.core.utils.SpringUtils; -import com.paradogs.common.core.utils.StringUtils; +import com.paradogs.framework.core.exceptions.GlobalExceptionDispatch; +import com.paradogs.framework.core.utils.SpringUtils; +import com.paradogs.framework.core.utils.StringUtils; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import java.lang.reflect.InvocationTargetException; import java.time.LocalDateTime; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/QueueProperties.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/QueueProperties.java similarity index 92% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/QueueProperties.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/QueueProperties.java index 6d8aa4a..09bc7aa 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/queue/QueueProperties.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/QueueProperties.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.queue; +package com.paradogs.framework.core.queue; import lombok.Data; import lombok.extern.slf4j.Slf4j; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/rpc/InitRPC.java similarity index 38% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/rpc/InitRPC.java index 48031f5..74c44c0 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/rpc/InitRPC.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/rpc/InitRPC.java @@ -1,9 +1,8 @@ -package com.paradogs.common.core.rpc; +package com.paradogs.framework.core.rpc; -import com.paradogs.common.core.annoations.request.PdgMsg; -import com.paradogs.common.core.annoations.rpc.PdgRPC; -import com.paradogs.common.core.annoations.rpc.PdgRPCMapping; -import com.paradogs.common.core.netty.server.ServerProperties; +import com.paradogs.framework.core.annoations.rpc.PRRPC; +import com.paradogs.framework.core.annoations.rpc.PRRPCMapping; +import com.paradogs.framework.core.netty.server.ServerProperties; import java.util.concurrent.CompletableFuture; @@ -12,10 +11,10 @@ import java.util.concurrent.CompletableFuture; * @date: 2023/8/10 15:26 * @Description: TODO */ -@PdgRPC("master") +@PRRPC("master") public interface InitRPC { - @PdgRPCMapping(value = "_init.serverInfo") + @PRRPCMapping(value = "_init.serverInfo") CompletableFuture getServerInfo(); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/BeanUtils.java similarity index 96% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/BeanUtils.java index f8fdfeb..17af28b 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/BeanUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/BeanUtils.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.utils; +package com.paradogs.framework.core.utils; import lombok.extern.slf4j.Slf4j; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/EventUtils.java similarity index 82% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/EventUtils.java index c295f6d..be8ab0b 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/EventUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/EventUtils.java @@ -1,7 +1,7 @@ -package com.paradogs.common.core.utils; +package com.paradogs.framework.core.utils; -import com.paradogs.common.core.annoations.rpc.RpcResponseResolver; -import com.paradogs.common.core.msg.BaseMsg; +import com.paradogs.framework.core.annoations.rpc.PRRPCResponseResolver; +import com.paradogs.framework.core.msg.BaseMsg; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; @@ -42,7 +42,7 @@ public class EventUtils implements ApplicationEventPublisherAware { * @param */ public static void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { - SpringUtils.getBean(RpcResponseResolver.class).on4Once(route, cgMsgId, returnClass, promise); + SpringUtils.getBean(PRRPCResponseResolver.class).on4Once(route, cgMsgId, returnClass, promise); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java similarity index 91% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java index d2c2890..e025dd8 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/MsgUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java @@ -1,12 +1,16 @@ -package com.paradogs.common.core.utils; +package com.paradogs.framework.core.utils; -import com.paradogs.common.core.annoations.request.PRMsgMappingHolder; -import com.paradogs.common.core.events.RPCRequestEvent; +import com.paradogs.framework.core.annoations.request.PRMsgMappingHolder; +import com.paradogs.framework.core.events.RPCRequestEvent; import com.paradogs.common.core.msg.*; -import com.paradogs.common.core.msg.route.MsgMapping; -import com.paradogs.common.core.netty.server.PRConnection; -import com.paradogs.common.core.netty.server.PRConnectionHolder; -import com.paradogs.common.core.netty.server.ServerProperties; +import com.paradogs.framework.core.msg.route.MsgMapping; +import com.paradogs.framework.core.netty.server.PRConnection; +import com.paradogs.framework.core.netty.server.PRConnectionHolder; +import com.paradogs.framework.core.netty.server.ServerProperties; +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.MsgHeader; +import com.paradogs.framework.core.msg.PRMsgContextHolder; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java similarity index 97% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java index a28f7aa..ddc5a08 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/ProtoUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.utils; +package com.paradogs.framework.core.utils; import com.baidu.bjf.remoting.protobuf.Codec; import com.baidu.bjf.remoting.protobuf.ProtobufProxy; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/RandomUtils.java similarity index 85% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/RandomUtils.java index 40ee54d..780e440 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RandomUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/RandomUtils.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.utils; +package com.paradogs.framework.core.utils; import java.util.Random; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ReflectUtils.java similarity index 92% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ReflectUtils.java index c2bd2ca..c2190e7 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/ReflectUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ReflectUtils.java @@ -1,6 +1,4 @@ -package com.paradogs.common.core.utils; - -import com.paradogs.common.core.msg.BaseMsg; +package com.paradogs.framework.core.utils; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/RouteUtils.java similarity index 91% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/RouteUtils.java index 95f2b44..ec6f159 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/RouteUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/RouteUtils.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.utils; +package com.paradogs.framework.core.utils; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/SpringUtils.java similarity index 99% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/SpringUtils.java index 08f1955..39f5321 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/SpringUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/SpringUtils.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.utils; +package com.paradogs.framework.core.utils; import lombok.Getter; import org.springframework.aop.framework.AopContext; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/StringUtils.java similarity index 88% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/StringUtils.java index aff4e75..76cac2e 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/StringUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/StringUtils.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.utils; +package com.paradogs.framework.core.utils; /** diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/TimeUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/TimeUtils.java similarity index 91% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/TimeUtils.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/TimeUtils.java index 7e7cb06..1f0358c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/common/core/utils/TimeUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/TimeUtils.java @@ -1,4 +1,4 @@ -package com.paradogs.common.core.utils; +package com.paradogs.framework.core.utils; import lombok.extern.slf4j.Slf4j; diff --git a/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index b332e87..69a4fd0 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,12 +1,12 @@ -com.paradogs.common.core.config.NettyConfiguration +NettyConfiguration -com.paradogs.common.core.config.UtilsConfiguration +UtilsConfiguration -com.paradogs.common.core.config.RPCConfiguration +RPCConfiguration -com.paradogs.common.core.CoreStarter +CoreStarter -com.paradogs.common.core.config.QueueConfiguration +QueueConfiguration diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java deleted file mode 100644 index 602c3a9..0000000 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/events/EventHandler.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.paradogs.common.master.events; - -import com.paradogs.common.core.events.ChannelActiveEvent; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/10 16:02 - * @Description: TODO - */ -@Slf4j -@Component -public class EventHandler { - - @EventListener(ChannelActiveEvent.class) - public void onChannelActiveEvent(ChannelActiveEvent event) { - log.info("a new client connect: [{}]", event.getCtx().channel().remoteAddress().toString()); - } - -} diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/ControllerConfiguration.java similarity index 78% rename from paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java rename to paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/ControllerConfiguration.java index 1f4515f..138af59 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/ControllerConfiguration.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/ControllerConfiguration.java @@ -1,6 +1,5 @@ -package com.paradogs.common.master; +package com.paradogs.framework.master; -import com.paradogs.common.master.controller.MasterController; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java similarity index 68% rename from paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java rename to paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java index 21ad0ed..9f1d41e 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/controller/MasterController.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java @@ -1,12 +1,10 @@ -package com.paradogs.common.master.controller; +package com.paradogs.framework.master; -import com.paradogs.common.core.annoations.request.PdgController; -import com.paradogs.common.core.annoations.request.PdgMsgMapping; -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.netty.server.PRConnection; -import com.paradogs.common.core.netty.server.PRConnectionHolder; -import com.paradogs.common.core.pojo.Connection; -import com.paradogs.common.core.pojo.ConnectorMessage; +import com.paradogs.framework.core.annoations.request.PRController; +import com.paradogs.framework.core.annoations.request.PRMsgMapping; +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.netty.server.PRConnection; +import com.paradogs.framework.core.netty.server.PRConnectionHolder; import lombok.extern.slf4j.Slf4j; import java.util.Collection; @@ -19,11 +17,11 @@ import java.util.stream.Collectors; * @Description: TODO */ @Slf4j -@PdgController -@PdgMsgMapping("_info") +@PRController +@PRMsgMapping("_info") public class MasterController { - @PdgMsgMapping("getServerInfo") + @PRMsgMapping("getServerInfo") public List getServerInfo(String serverType) { Collection conns = PRConnectionHolder.getConnMap().values(); List collect = conns.stream().filter(conn -> conn.getConnInfo().getType().equals(serverType)).collect(Collectors.toList()); @@ -42,7 +40,7 @@ public class MasterController { // return new ConnectorMessage(connection.getHost(), connection.getPort()); // } - @PdgMsgMapping("hello") + @PRMsgMapping("hello") public BaseMsg hello() { log.info("receive hello..."); return new BaseMsg(); diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgConsumer.java similarity index 72% rename from paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java rename to paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgConsumer.java index 154d1af..7298a9f 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/queue/MasterMsgConsumer.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgConsumer.java @@ -1,12 +1,10 @@ -package com.paradogs.common.master.queue; - -import com.paradogs.common.core.msg.ByteBodyMsg; -import com.paradogs.common.core.msg.MsgHeader; -import com.paradogs.common.core.msg.PRMsgContextHolder; -import com.paradogs.common.core.netty.server.PRConnectionHolder; -import com.paradogs.common.core.netty.server.ServerProperties; -import com.paradogs.common.core.queue.AbstractMsgConsumer; -import com.paradogs.common.core.utils.MsgUtils; +package com.paradogs.framework.master; + +import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.MsgHeader; +import com.paradogs.framework.core.netty.server.ServerProperties; +import com.paradogs.framework.core.queue.AbstractMsgConsumer; +import com.paradogs.framework.core.utils.MsgUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Primary; diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterStarter.java similarity index 46% rename from paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java rename to paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterStarter.java index b158859..d567e9a 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/common/master/MasterStarter.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterStarter.java @@ -1,7 +1,7 @@ -package com.paradogs.common.master; +package com.paradogs.framework.master; -import com.paradogs.common.core.annoations.request.PdgRequestInterfaceSelector; -import com.paradogs.common.core.annoations.rpc.PdgRPCProxyBeanImportSelector; +import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector; +import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -11,8 +11,8 @@ import org.springframework.context.annotation.Import; * @Description: TODO */ @Import({ - PdgRPCProxyBeanImportSelector.class, - PdgRequestInterfaceSelector.class + PRRPCProxyBeanImportSelector.class, + PRRequestInterfaceSelector.class }) @Configuration public class MasterStarter { diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 1f69c2a..26f2409 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,8 +1,8 @@ -com.paradogs.common.master.queue.MasterMsgConsumer +com.paradogs.framework.master.MasterMsgConsumer -com.paradogs.common.master.ControllerConfiguration +com.paradogs.framework.master.ControllerConfiguration -com.paradogs.common.master.MasterStarter +com.paradogs.framework.master.MasterStarter diff --git a/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java deleted file mode 100644 index ad172f8..0000000 --- a/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/config/NettyConfiguration.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.paradogs.common.game.config; - -import com.paradogs.common.game.server.GameServerMsgHandler; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @author: yumi - * @date: 2023/8/26 17:16 - * @Description: TODO - */ -@Configuration -public class NettyConfiguration { - -} diff --git a/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java deleted file mode 100644 index 25d4e5a..0000000 --- a/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/common/game/server/GameServerMsgHandler.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.paradogs.common.game.server; - -import com.paradogs.common.core.msg.BaseMsg; -import com.paradogs.common.core.queue.PRQueueHolder; -import io.netty.channel.ChannelHandler; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/8/26 17:05 - * @Description: TODO - */ -@Slf4j -@Component -@ConditionalOnMissingBean(ServerMsgHandler.class) -@ChannelHandler.Sharable -public class GameServerMsgHandler extends ServerMsgHandler { - - @Autowired - private PRQueueHolder queueManager; - - @Override - protected void processMsg(BaseMsg msg) throws Exception { - queueManager.putMsg(msg); - } - -} diff --git a/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerMsgConsumer.java b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerMsgConsumer.java new file mode 100644 index 0000000..d34bea4 --- /dev/null +++ b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerMsgConsumer.java @@ -0,0 +1,36 @@ +package com.paradogs.framework.server; + +import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.netty.server.ServerProperties; +import com.paradogs.framework.core.queue.AbstractMsgConsumer; +import com.paradogs.framework.core.utils.MsgUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; + +import java.lang.reflect.InvocationTargetException; + +/** + * @author: yumi + * @date: 2023/11/13 10:30 + * @Description: TODO + */ +@Slf4j +@Primary +@Component +public class ServerMsgConsumer extends AbstractMsgConsumer { + + + @Autowired + private ServerProperties serverProperties; + + @Override + public void handle(ByteBodyMsg byteBodyMsg) throws InvocationTargetException, IllegalAccessException { + + /** + * 找到对应的 Controller 处理 + */ + MsgUtils.adapterHandle(byteBodyMsg); + } +} diff --git a/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerStarter.java b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerStarter.java new file mode 100644 index 0000000..5956719 --- /dev/null +++ b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerStarter.java @@ -0,0 +1,19 @@ +package com.paradogs.framework.server; + +import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector; +import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +/** + * @author: yumi + * @date: 2023/11/13 10:27 + * @Description: TODO + */ +@Import({ + PRRPCProxyBeanImportSelector.class, + PRRequestInterfaceSelector.class +}) +@Configuration +public class ServerStarter { +} diff --git a/paradogs-framework/paradogs-framework-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index cbe21a7..eb556d1 100644 --- a/paradogs-framework/paradogs-framework-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-framework/paradogs-framework-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,7 +1,6 @@ -com.paradogs.common.game.config.NettyConfiguration - -com.paradogs.common.core.config.QueueConfiguration +com.paradogs.framework.server.ServerStarter +com.paradogs.framework.server.ServerMsgConsumer -- Gitee From b61fb41b583eb5a993d639f3c2bef97cebcef29d Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Mon, 13 Nov 2023 11:15:51 +0800 Subject: [PATCH 21/32] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E5=92=8C=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/annoations/request/PRMsgMappingHolder.java | 1 - .../framework/core/config/NettyConfiguration.java | 1 - .../com/paradogs/framework/core/utils/MsgUtils.java | 1 - ...mework.boot.autoconfigure.AutoConfiguration.imports | 10 +++++----- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java index 5fb51c8..de792cc 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java @@ -2,7 +2,6 @@ package com.paradogs.framework.core.annoations.request; import com.paradogs.framework.core.msg.BaseMsg; import com.paradogs.framework.core.msg.route.MsgMapping; -import com.paradogs.common.core.utils.*; import lombok.extern.slf4j.Slf4j; import java.util.HashMap; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java index 76dd6e7..31a14db 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java @@ -1,7 +1,6 @@ package com.paradogs.framework.core.config; import com.paradogs.framework.core.exceptions.GlobalExceptionDispatch; -import com.paradogs.common.core.netty.*; import com.paradogs.framework.core.netty.clients.MasterClientProperties; import com.paradogs.framework.core.netty.clients.PRMasterClient; import com.paradogs.framework.core.netty.clients.PRMasterClientChannelInitializer; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java index e025dd8..ca29967 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java @@ -2,7 +2,6 @@ package com.paradogs.framework.core.utils; import com.paradogs.framework.core.annoations.request.PRMsgMappingHolder; import com.paradogs.framework.core.events.RPCRequestEvent; -import com.paradogs.common.core.msg.*; import com.paradogs.framework.core.msg.route.MsgMapping; import com.paradogs.framework.core.netty.server.PRConnection; import com.paradogs.framework.core.netty.server.PRConnectionHolder; diff --git a/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 69a4fd0..c9b85e1 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,12 +1,12 @@ -NettyConfiguration +com.paradogs.framework.core.config.NettyConfiguration -UtilsConfiguration +com.paradogs.framework.core.config.UtilsConfiguration -RPCConfiguration +com.paradogs.framework.core.config.RPCConfiguration -CoreStarter +com.paradogs.framework.core.config.QueueConfiguration -QueueConfiguration +com.paradogs.framework.core.CoreStarter -- Gitee From 2cd7877e285f468f19ba02c5e6bfde40f9329196 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Tue, 14 Nov 2023 09:22:10 +0800 Subject: [PATCH 22/32] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=9C=8D=E7=99=BB=E5=BD=95=E5=B9=B6=E5=91=8A=E8=AF=89=E7=8E=A9?= =?UTF-8?q?=E5=AE=B6=E9=87=8D=E6=96=B0=E8=BF=9E=E6=8E=A5=E5=88=B0=E7=BD=91?= =?UTF-8?q?=E5=85=B3=E3=80=81=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86bug?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/client/DemoClientApplication.java | 4 +- .../gateway/controller/GatewayController.java | 26 ++++++++++ .../demo/gateway/pojo/CGPrepareLogin.java | 12 ++--- .../login/DemoLoginApplication.java | 2 +- .../login/controller/LoginController.java | 47 +++++++++++++++++++ .../paradogs/demo/login/pojo/cg/CGLogin.java | 24 ++++++++++ .../demo/login/pojo/cg/CGPrepareLogin.java | 20 ++++++++ .../demo/login/pojo/gc/GCAllocGateway.java | 38 +++++++++++++++ .../demo/login/rpc/GatewayClient.java | 18 +++++++ .../paradogs/demo/login/rpc/MasterClient.java | 20 ++++++++ .../request/PRRequestInterfaceSelector.java | 6 ++- .../rpc/PRRPCProxyBeanImportSelector.java | 2 +- .../annoations/rpc/PRRPCProxyInterceptor.java | 5 ++ .../annoations/rpc/PRRPCResponseResolver.java | 29 ++++++------ .../paradogs/framework/core/msg/CGMsg.java | 4 +- .../framework/core/msg/CommonController.java | 11 +---- .../core/netty/PRAbstractMsgHandler.java | 10 ++-- .../clients/PRMasterClientMsgHandler.java | 9 +++- .../core/netty/server/PRConnectionHolder.java | 38 ++++++++++++--- .../strategy/GatewayLoadBalancerStrategy.java | 16 +++++++ .../GatewayRandomLoadBalancerStrategy.java | 22 +++++++++ .../framework/core/utils/MsgUtils.java | 41 +++++++++++++--- ...ot.autoconfigure.AutoConfiguration.imports | 2 + .../framework/master/MasterController.java | 38 ++++++++++----- .../framework/master/pojo/AllocGatewayVO.java | 37 +++++++++++++++ 25 files changed, 412 insertions(+), 69 deletions(-) create mode 100644 paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/ConnectorMessage.java => paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/pojo/CGPrepareLogin.java (46%) rename paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/{test => demo}/login/DemoLoginApplication.java (93%) create mode 100644 paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java create mode 100644 paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGLogin.java create mode 100644 paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGPrepareLogin.java create mode 100644 paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java create mode 100644 paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java create mode 100644 paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayLoadBalancerStrategy.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayRandomLoadBalancerStrategy.java create mode 100644 paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java index f9d06f8..8a764d5 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java @@ -78,8 +78,8 @@ public class DemoClientApplication { } }); - Channel channel = client.connect("localhost", 8080).sync().channel(); + Channel channel = client.connect("localhost", 80).sync().channel(); - Client.send(channel, "login-login.login", null); + Client.send(channel, "login|login", null); } } diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java new file mode 100644 index 0000000..f60d7e0 --- /dev/null +++ b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java @@ -0,0 +1,26 @@ +package com.paradogs.demo.gateway.controller; + +import com.paradogs.demo.gateway.pojo.CGPrepareLogin; +import com.paradogs.framework.core.annoations.request.PRController; +import com.paradogs.framework.core.annoations.request.PRMsgMapping; +import lombok.extern.slf4j.Slf4j; + +/** + * @author: yumi + * @date: 2023/11/13 14:51 + * @Description: TODO + */ +@Slf4j +@PRController +public class GatewayController { + + /** + * 玩家准备从登录服转移连接到网关服 + * @param cg + */ + @PRMsgMapping("prepareLogin") + public void prepareLogin(CGPrepareLogin cg) { + log.info("PrepareLogin ----------------------------- {}", cg.getToken()); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/ConnectorMessage.java b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/pojo/CGPrepareLogin.java similarity index 46% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/ConnectorMessage.java rename to paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/pojo/CGPrepareLogin.java index 8e503ae..2428d22 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/ConnectorMessage.java +++ b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/pojo/CGPrepareLogin.java @@ -1,22 +1,20 @@ -package com.paradogs.framework.core.pojo; +package com.paradogs.demo.gateway.pojo; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.CGMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * @author: yumi - * @date: 2023/9/5 14:13 + * @date: 2023/11/13 17:18 * @Description: TODO */ @Data @AllArgsConstructor @NoArgsConstructor -public class ConnectorMessage extends BaseMsg { +public class CGPrepareLogin extends CGMsg { - private String host; - - private int port; + private String token; } diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/test/login/DemoLoginApplication.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/DemoLoginApplication.java similarity index 93% rename from paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/test/login/DemoLoginApplication.java rename to paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/DemoLoginApplication.java index 5b0fce0..ce3ba19 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/test/login/DemoLoginApplication.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/DemoLoginApplication.java @@ -1,4 +1,4 @@ -package com.paradogs.test.login; +package com.paradogs.demo.login; import com.paradogs.framework.core.annoations.EnableParadogs; import org.springframework.boot.SpringApplication; diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java new file mode 100644 index 0000000..936a684 --- /dev/null +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java @@ -0,0 +1,47 @@ +package com.paradogs.demo.login.controller; + +import com.paradogs.demo.login.pojo.cg.CGLogin; +import com.paradogs.demo.login.pojo.cg.CGPrepareLogin; +import com.paradogs.demo.login.rpc.GatewayClient; +import com.paradogs.demo.login.rpc.MasterClient; +import com.paradogs.framework.core.annoations.request.PRController; +import com.paradogs.framework.core.annoations.request.PRMsgMapping; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.UUID; + +/** + * @author: yumi + * @date: 2023/11/13 14:33 + * @Description: TODO + */ +@Slf4j +@PRController +public class LoginController { + + @Autowired + private MasterClient masterClient; + + @Autowired + private GatewayClient gatewayClient; + + @PRMsgMapping("login") + public void login(CGLogin dto) { + boolean loginResult = true; // 暂时直接登录成功,登录服之后可能不用长连接 + + if (!loginResult) {return;} + + // 申请一个可以连接的网关 + masterClient.allocGateway().thenAccept(vo -> { + if (!vo.isSuccess()) { + log.info("没有可连接的网关"); + return; + } + + gatewayClient.prepareLogin(new CGPrepareLogin(UUID.randomUUID().toString())); + + }); + } + +} diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGLogin.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGLogin.java new file mode 100644 index 0000000..f4ce314 --- /dev/null +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGLogin.java @@ -0,0 +1,24 @@ +package com.paradogs.demo.login.pojo.cg; + +import com.paradogs.framework.core.msg.CGMsg; +import lombok.Data; + +/** + * @author: yumi + * @date: 2023/11/13 14:37 + * @Description: TODO + */ +@Data +public class CGLogin extends CGMsg { + + /** + * 账号 + */ + private String account; + + /** + * 密码 + */ + private String password; + +} diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGPrepareLogin.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGPrepareLogin.java new file mode 100644 index 0000000..aa809be --- /dev/null +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGPrepareLogin.java @@ -0,0 +1,20 @@ +package com.paradogs.demo.login.pojo.cg; + +import com.paradogs.framework.core.msg.CGMsg; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/11/13 14:55 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CGPrepareLogin extends CGMsg { + + private String token; + +} diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java new file mode 100644 index 0000000..cecb6f0 --- /dev/null +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java @@ -0,0 +1,38 @@ +package com.paradogs.demo.login.pojo.gc; + +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.GCMsg; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/11/13 14:12 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class GCAllocGateway extends GCMsg { + + /** + * 是否 + */ + private boolean success; + + /** + * 主机地址 + */ + private String host; + + /** + * 端口号 + */ + private int port; + + public GCAllocGateway(boolean success) { + this.success = success; + } + +} diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java new file mode 100644 index 0000000..12e7c28 --- /dev/null +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java @@ -0,0 +1,18 @@ +package com.paradogs.demo.login.rpc; + +import com.paradogs.demo.login.pojo.cg.CGPrepareLogin; +import com.paradogs.framework.core.annoations.rpc.PRRPC; +import com.paradogs.framework.core.annoations.rpc.PRRPCMapping; + +/** + * @author: yumi + * @date: 2023/11/13 14:50 + * @Description: TODO + */ +@PRRPC("gateway") +public interface GatewayClient { + + @PRRPCMapping("prepareLogin") + void prepareLogin(CGPrepareLogin prepareLogin); + +} diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java new file mode 100644 index 0000000..73b6bb2 --- /dev/null +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java @@ -0,0 +1,20 @@ +package com.paradogs.demo.login.rpc; + +import com.paradogs.demo.login.pojo.gc.GCAllocGateway; +import com.paradogs.framework.core.annoations.rpc.PRRPC; +import com.paradogs.framework.core.annoations.rpc.PRRPCMapping; + +import java.util.concurrent.CompletableFuture; + +/** + * @author: yumi + * @date: 2023/11/13 11:19 + * @Description: TODO + */ +@PRRPC("master") +public interface MasterClient { + + @PRRPCMapping("_master.allocGateway") + CompletableFuture allocGateway(); + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java index 71de5d2..0813f81 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java @@ -60,7 +60,7 @@ public class PRRequestInterfaceSelector extends BaseImportSelector { if (PRMsgMapping == null) { continue; } - String route = (parentRouteMapping != null ? parentRouteMapping.value() : "") + (PRMsgMapping.value().startsWith("/") ? "" : ".") + PRMsgMapping.value(); + String route = (parentRouteMapping != null ? (parentRouteMapping.value() + ".") : "") + PRMsgMapping.value(); if (PRMsgMappingHolder.containsRoute(route)) { throw new RuntimeException("Duplicate route found: " + route); } @@ -73,7 +73,9 @@ public class PRRequestInterfaceSelector extends BaseImportSelector { } else { // 如果只有一个 BaseMsg 参数,自动优化添加,等于加了 PdgMsg - List baseMsgList = Stream.of(method.getParameters()).filter(param -> param.getType().isAssignableFrom(BaseMsg.class)).collect(Collectors.toList()); + List baseMsgList = Stream.of(method.getParameters()). + filter(param -> BaseMsg.class.isAssignableFrom(param.getType())) + .collect(Collectors.toList()); if (baseMsgList.size() == 1) { targetMsgClass = (Class) parameter.getType(); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java index a9fad01..bac9fb0 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java @@ -65,7 +65,7 @@ public class PRRPCProxyBeanImportSelector extends BaseImportSelector { // if (pdgRPCMapping.returnType() == BaseMsg.class && !method.getReturnType().isAssignableFrom(CompletableFuture.class)) { // throw new RuntimeException("RPC[" + pdgRPCMapping.value() + "] use async but returnType is null"); // } - if (!method.getReturnType().isAssignableFrom(CompletableFuture.class)) { + if (!method.getReturnType().equals(Void.TYPE) && !method.getReturnType().isAssignableFrom(CompletableFuture.class)) { throw new RuntimeException("RPC[" + PRRPCMapping.value() + "] return must use async.(CompleteFuture)"); } Class genericReturnType = null; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java index 6d3ec45..737ad7c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java @@ -31,6 +31,7 @@ public class PRRPCProxyInterceptor implements MethodInterceptor { * @param args 被代理接口正在执行方法的参数 * @param methodProxy methodProxy.invokeSuper() ?执行原本方法 * @return 方法执行结果,如果方法无返回值,可以返回 null + * 待优化:目前每次执行都会反射找到 Class,完全没必要,可以项目启动时初始化成 Map,和 Controller 的一样 * @throws Throwable */ @Override @@ -65,6 +66,10 @@ public class PRRPCProxyInterceptor implements MethodInterceptor { } } } + // 如果只有一个参数,则默认视为被 @PRMsg 修饰 + if (requestMsg == null && parameters.length == 1 && BaseMsg.class.isAssignableFrom(parameters[0].getType())) { + requestMsg = (BaseMsg) args[0]; + } // 获得返回值类型 Class returnType = null; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java index 2bd0d80..8d9c01c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java @@ -2,8 +2,10 @@ package com.paradogs.framework.core.annoations.rpc; import com.paradogs.framework.core.events.RPCRespEvent; import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.ByteBodyMsg; import com.paradogs.framework.core.msg.GCMsg; import com.paradogs.framework.core.msg.PRMsgContextHolder; +import com.paradogs.framework.core.utils.ProtoUtils; import com.paradogs.framework.core.utils.RouteUtils; import lombok.AllArgsConstructor; import lombok.Data; @@ -28,7 +30,7 @@ public class PRRPCResponseResolver { /** * 等待响应的消息 map */ - private volatile Map waitRespMap = new ConcurrentHashMap<>(); + private volatile Map waitRespMap = new ConcurrentHashMap<>(); /** @@ -37,9 +39,12 @@ public class PRRPCResponseResolver { * @param */ @EventListener(RPCRespEvent.class) - private void onRpcMsgResponse(RPCRespEvent event) { + private void onRpcMsgResponse(RPCRespEvent event) { - String key = getReplyMsgKey(event.getMsg()); + Long key = event.getMsg().getMsgHeader().getReplyMsgId(); + ByteBodyMsg byteBodyMsg = event.getMsg(); + + PRRPCHolder.getMappingMap(); try { // 执行回调方法 RespData respInfo = waitRespMap.get(key); @@ -52,11 +57,15 @@ public class PRRPCResponseResolver { return; } + // 解码消息体数据 + BaseMsg msg = ProtoUtils.decode(byteBodyMsg.getDataBytes(), (Class)respInfo.getReturnClass()); + msg.setMsgHeader(byteBodyMsg.getMsgHeader()); + // 设置上下文 PRMsgContextHolder.setContext(respInfo.getMsgContextHolder()); // 标记任务完成,执行回调 - boolean isSuccess = respInfo.getPromise().complete(respInfo.getReturnClass().cast(event.getMsg())); + boolean isSuccess = respInfo.getPromise().complete(msg); if (!isSuccess) {log.error("Callback promise invoke is fail: {}", respInfo);} } catch (Exception e) { @@ -64,7 +73,7 @@ public class PRRPCResponseResolver { } finally { // 处理完毕移除响应监听 waitRespMap.remove(key); - log.debug("release callback listener: {}", key); + log.debug("Release callback listener: {}", key); } } @@ -75,15 +84,7 @@ public class PRRPCResponseResolver { * @param promise */ public void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { - this.waitRespMap.put(getMsgKey(route, cgMsgId), new RespData(returnClass, promise, PRMsgContextHolder.getSnapshot())); - } - - public static String getMsgKey(String route, Long id) { - return RouteUtils.getPath(route) + id; - } - - public static String getReplyMsgKey(T msg) { - return getMsgKey(msg.getMsgHeader().getRoute(), msg.getMsgHeader().getReplyMsgId()); + this.waitRespMap.put(cgMsgId, new RespData(returnClass, promise, PRMsgContextHolder.getSnapshot())); } @Data diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java index ea0d878..ac2e7b1 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java @@ -11,8 +11,6 @@ import lombok.ToString; */ @Data @ToString(callSuper = true) -public abstract class CGMsg extends BaseMsg { - - private String cgMsgClassTest = "cgMsgClassTest"; +public class CGMsg extends BaseMsg { } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java index 22fc0a8..d0bd681 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java @@ -35,10 +35,7 @@ public class CommonController { log.error("Not found Callback header.replyMsgId: {}", msg); return; } - BaseMsg callbackMsg = new BaseMsg(); - callbackMsg.setMsgHeader(msg.getMsgHeader()); - callbackMsg.deserialization(msg.getDataBytes()); - EventUtils.publishEvent(new RPCRespEvent(callbackMsg)); + EventUtils.publishEvent(new RPCRespEvent(msg)); } /** @@ -50,12 +47,6 @@ public class CommonController { // 初始化连接的服务器信息(建立连接后,服务器主动发送自己的信息) PRConnectionHolder.initConnection(PRMsgContextHolder.getChannel(), properties); log.info("Server connection init success: {}|{}", properties.getType(), properties.getKey()); - - BaseMsg msg = new BaseMsg(); - MsgHeader header = new MsgHeader(); - header.setRoute("master|_info.hello"); - msg.setMsgHeader(header); - PRMsgContextHolder.getChannel().writeAndFlush(msg); } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java index c01a7c2..51f0814 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java @@ -66,15 +66,17 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler uninitializedConnMap = new HashMap<>(); - /** - * 正常的连接 Map - */ + /** 正常的连接 Map */ @Getter private static Map connMap = new HashMap<>(); + /** 服务器类型映射 Map */ + @Getter + private static Map> connTypeMap = new HashMap<>(); + /** Channel 映射 Map */ + @Getter + private static Map channelMap = new HashMap<>(); /** * 不需要权限的路由,一般为初始化操作等 @@ -42,6 +46,7 @@ public class PRConnectionHolder { static { excludeRoutes.add("_paradogs.initInfo"); + excludeRoutes.add("login"); } @@ -64,17 +69,31 @@ public class PRConnectionHolder { PRConnection conn = uninitializedConnMap.get(channel); uninitializedConnMap.remove(channel); conn.setConnInfo(properties); + conn.setChannel(channel); + connMap.put(conn.getConnInfo().getKey(), conn); + if (!connTypeMap.containsKey(conn.getConnInfo().getType())) { + connTypeMap.put(conn.getConnInfo().getType(), new ArrayList<>()); + } + connTypeMap.get(conn.getConnInfo().getType()).add(conn); + channelMap.put(channel,conn); } public static String getConnKey(Channel channel) { - if (connMap.containsKey(channel)) { - PRConnection conn = connMap.get(channel); + if (channelMap.containsKey(channel)) { + PRConnection conn = channelMap.get(channel); return conn.getConnInfo().getKey(); } return null; } + public static List getTypeConns(String type) { + if (!connTypeMap.containsKey(type)) { + return new ArrayList<>(); + } + return connTypeMap.get(type); + } + public static void removeConn(Channel channel) { PRConnectionHolder.uninitializedConnMap.remove(channel); for (Map.Entry entry : PRConnectionHolder.connMap.entrySet()) { @@ -82,6 +101,13 @@ public class PRConnectionHolder { PRConnection conn = PRConnectionHolder.connMap.get(key); if (conn.getChannel() == channel) { PRConnectionHolder.connMap.remove(key); + for (PRConnection typeConn : connTypeMap.get(conn.getConnInfo().getType())) { + if (conn.getChannel() == typeConn.getChannel()) { + connTypeMap.remove(conn.getConnInfo().getType()); + break; + } + } + channelMap.remove(channel); return; } @@ -98,7 +124,7 @@ public class PRConnectionHolder { if (channel == null) { return false; } - if (PRConnectionHolder.clientMap.containsKey(channel) || PRConnectionHolder.connMap.containsKey(channel)) { + if (PRConnectionHolder.clientMap.containsKey(channel) || PRConnectionHolder.channelMap.containsKey(channel)) { return true; } return false; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayLoadBalancerStrategy.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayLoadBalancerStrategy.java new file mode 100644 index 0000000..06ad648 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayLoadBalancerStrategy.java @@ -0,0 +1,16 @@ +package com.paradogs.framework.core.strategy; + +import com.paradogs.framework.core.netty.server.PRConnection; + +import java.util.List; + +/** + * @author: yumi + * @date: 2023/11/13 13:47 + * @Description: 负载均衡策略 + */ +public interface GatewayLoadBalancerStrategy { + + PRConnection choose(List nodes); + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayRandomLoadBalancerStrategy.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayRandomLoadBalancerStrategy.java new file mode 100644 index 0000000..8c74260 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayRandomLoadBalancerStrategy.java @@ -0,0 +1,22 @@ +package com.paradogs.framework.core.strategy; + +import com.paradogs.framework.core.netty.server.PRConnection; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Random; + +/** + * @author: yumi + * @date: 2023/11/13 13:50 + * @Description: TODO + */ +@Component("GatewayRandomLoadBalancerStrategy") +public class GatewayRandomLoadBalancerStrategy implements GatewayLoadBalancerStrategy { + @Override + public PRConnection choose(List nodes) { + if (nodes.size() == 0) {return null;} + Random random = new Random(); + return nodes.get(random.nextInt(nodes.size())); + } +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java index ca29967..2f9c767 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java @@ -19,6 +19,7 @@ import org.springframework.stereotype.Component; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.stream.Stream; @@ -47,14 +48,42 @@ public class MsgUtils { msg.getMsgHeader().setRoute(route); } } - Map connMap = PRConnectionHolder.getConnMap(); - PRConnection conn = connMap.get(RouteUtils.getServer(route)); + + /** + * 其他服往 Master 服发送消息, Master 服往其他服转发消息 + */ + String server = RouteUtils.getServer(route); + PRConnection conn = null; + if (serverProperties.isMaster()) { + conn = PRConnectionHolder.getConnMap().get(server); + if (conn == null) { + List typeConns = PRConnectionHolder.getTypeConns(server); + if (typeConns != null && typeConns.size() > 0) { + conn = typeConns.get(0); // 待优化:默认取第一个 + } + } + + } else { + if (conn == null) { + List typeConns = PRConnectionHolder.getTypeConns("master"); + if (typeConns != null && typeConns.size() > 0) { + conn = typeConns.get(0); // 待优化:默认取第一个 + } + } + } + + if (conn == null) { + log.error("Not Found Connection: {}", route); + return; + } + + msg.getMsgHeader().setRoute(route); if (conn.getChannel() != null) { conn.getChannel().writeAndFlush(msg); - log.info("Send msg to >> {}", msg.getMsgHeader().getRoute()); + log.info("Send msg to >> {}, {}", msg.getMsgHeader().getRoute(), msg); } else { log.warn("Channel is null, route: {}", route); } @@ -68,7 +97,7 @@ public class MsgUtils { } if (channel != null) { channel.writeAndFlush(msg); - log.info("Send msg to >> {}", msg.getMsgHeader().getRoute()); + log.info("Send msg to >> {}, {}", msg.getMsgHeader().getRoute(), msg); } else { log.warn("Channel is null, route: {}", route); } @@ -143,7 +172,7 @@ public class MsgUtils { // 获取映射 MsgMapping mapping = PRMsgMappingHolder.getMsgMapping(RouteUtils.getPath(header.getRoute())); if (mapping == null) { - log.warn("Not found Mapping Method, route: {}", header.getRoute()); + log.warn("Not found Mapping Method, route: {}", RouteUtils.getPath(header.getRoute())); return; } Class msgClass = PRMsgMappingHolder.getMsgMappingClass(RouteUtils.getPath(header.getRoute())); @@ -200,7 +229,7 @@ public class MsgUtils { */ MsgUtils.send( // msg.getMsgHeader().getCtx().channel(), - header.getSendServer() + "-_paradogs.callback", + header.getSendServer() + RouteUtils.SERVER_SEPARATOR + "_paradogs.callback", gcMsg ); log.info("reply >> {}", msg.getMsgHeader()); diff --git a/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index c9b85e1..f0b76f3 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -8,6 +8,8 @@ com.paradogs.framework.core.config.QueueConfiguration com.paradogs.framework.core.CoreStarter +com.paradogs.framework.core.strategy.GatewayRandomLoadBalancerStrategy + diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java index 9f1d41e..86c0c97 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java @@ -5,8 +5,13 @@ import com.paradogs.framework.core.annoations.request.PRMsgMapping; import com.paradogs.framework.core.msg.BaseMsg; import com.paradogs.framework.core.netty.server.PRConnection; import com.paradogs.framework.core.netty.server.PRConnectionHolder; +import com.paradogs.framework.core.strategy.GatewayLoadBalancerStrategy; +import com.paradogs.framework.master.pojo.AllocGatewayVO; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import java.net.InetSocketAddress; +import java.net.SocketAddress; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; @@ -18,9 +23,12 @@ import java.util.stream.Collectors; */ @Slf4j @PRController -@PRMsgMapping("_info") +@PRMsgMapping("_master") public class MasterController { + @Autowired + private GatewayLoadBalancerStrategy strategy; + @PRMsgMapping("getServerInfo") public List getServerInfo(String serverType) { Collection conns = PRConnectionHolder.getConnMap().values(); @@ -29,16 +37,24 @@ public class MasterController { return collect; } -// /** -// * 返回一个可连接的 Connector,目前暂时只为第一个 -// * @return -// */ -// @PdgMsgMapping("getConnector") -// public ConnectorMessage getConnector() { -// Collection conns = ConnectionUtils.getConns(); -// Connection connection = conns.stream().filter(conn -> conn.getTargetServer().equals("connector")).findFirst().get(); -// return new ConnectorMessage(connection.getHost(), connection.getPort()); -// } + /** + * 玩家登录成功后,登录服申请一个网关供玩家连接 + * @return + */ + @PRMsgMapping("allocGateway") + public AllocGatewayVO allocGateway() { + List gateways = PRConnectionHolder.getTypeConns("gateway");// 待优化:暂时写死 + PRConnection conn = strategy.choose(gateways); + if (conn == null) { + return new AllocGatewayVO(false); + } + + return new AllocGatewayVO( + true, + ((InetSocketAddress)conn.getChannel().remoteAddress()).getHostString(), + conn.getConnInfo().getPort() + ); + } @PRMsgMapping("hello") public BaseMsg hello() { diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java new file mode 100644 index 0000000..01c382c --- /dev/null +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java @@ -0,0 +1,37 @@ +package com.paradogs.framework.master.pojo; + +import com.paradogs.framework.core.msg.BaseMsg; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/11/13 14:12 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AllocGatewayVO extends BaseMsg { + + /** + * 是否 + */ + private boolean success; + + /** + * 主机地址 + */ + private String host; + + /** + * 端口号 + */ + private int port; + + public AllocGatewayVO(boolean success) { + this.success = success; + } + +} -- Gitee From 87ade167f1c9abcf912e035c3117499650f9b48f Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Thu, 16 Nov 2023 16:48:44 +0800 Subject: [PATCH 23/32] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=9C=8D=E7=99=BB=E5=BD=95=E5=B9=B6=E5=91=8A=E8=AF=89=E7=8E=A9?= =?UTF-8?q?=E5=AE=B6=E6=88=90=E5=8A=9F=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- paradogs-common/pom.xml | 26 +++++ paradogs-demo/paradogs-demo-client/pom.xml | 16 +-- .../test/client/DemoClientApplication.java | 8 +- .../paradogs/test/client/demo/BaseMsg.java | 59 ---------- .../com/paradogs/test/client/demo/Client.java | 16 +-- .../paradogs/test/client/demo/MsgHeader.java | 110 ------------------ .../paradogs/test/client/demo/ProtoUtils.java | 63 ---------- .../test/client/demo/ProtocolProperties.java | 27 ----- .../paradogs/test/client/pojo/CGLogin.java | 28 +++++ .../src/main/resources/application.yml | 28 ++++- .../gateway/controller/GatewayController.java | 4 +- .../src/main/resources/application.yml | 17 +++ .../login/controller/LoginController.java | 54 +++++++-- .../paradogs/demo/login/pojo/db/Player.java | 26 +++++ .../demo/login/rpc/GatewayClient.java | 3 +- .../paradogs/demo/login/rpc/MasterClient.java | 2 +- .../src/main/resources/application.yml | 17 +++ .../src/main/resources/application.yml | 18 +++ .../paradogs-framework-core/pom.xml | 9 ++ .../core/annoations/EnableParadogs.java | 2 + .../rpc/PRRPCProxyBeanImportSelector.java | 25 ++-- .../annoations/rpc/PRRPCProxyInterceptor.java | 8 +- .../core/config/UtilsConfiguration.java | 4 + .../core/events/RPCSyncRequestEvent.java | 24 ++++ .../paradogs/framework/core/msg/BaseMsg.java | 2 + .../framework/core/msg/MsgHeader.java | 1 + .../com/paradogs/framework/core/msg/R.java | 56 +++++++++ .../core/netty/PRAbstractMsgHandler.java | 9 +- .../paradogs/framework/core/rpc/InitRPC.java | 2 +- .../GatewayRandomLoadBalancerStrategy.java | 2 +- .../framework/core/utils/MsgUtils.java | 61 ++++++---- .../framework/core/utils/PRAsync.java | 32 +++++ .../paradogs/framework/core/utils/Wrap.java | 15 +++ .../framework/master/MasterController.java | 3 + paradogs-generator/pom.xml | 38 ++++++ .../com/paradogs/generator/CodeGenerator.java | 52 +++++++++ pom.xml | 28 ++++- 37 files changed, 553 insertions(+), 342 deletions(-) create mode 100644 paradogs-common/pom.xml delete mode 100644 paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/BaseMsg.java delete mode 100644 paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java delete mode 100644 paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java delete mode 100644 paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java create mode 100644 paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/pojo/CGLogin.java create mode 100644 paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/db/Player.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCSyncRequestEvent.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/PRAsync.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/Wrap.java create mode 100644 paradogs-generator/pom.xml create mode 100644 paradogs-generator/src/main/java/com/paradogs/generator/CodeGenerator.java diff --git a/paradogs-common/pom.xml b/paradogs-common/pom.xml new file mode 100644 index 0000000..3fcd362 --- /dev/null +++ b/paradogs-common/pom.xml @@ -0,0 +1,26 @@ + + + + paradogs + com.paradogs + 0.0.1 + + 4.0.0 + + paradogs-common + + + 8 + 8 + + + + + com.baomidou + mybatis-plus-boot-starter + + + + \ No newline at end of file diff --git a/paradogs-demo/paradogs-demo-client/pom.xml b/paradogs-demo/paradogs-demo-client/pom.xml index 794d8ed..34df6be 100644 --- a/paradogs-demo/paradogs-demo-client/pom.xml +++ b/paradogs-demo/paradogs-demo-client/pom.xml @@ -18,20 +18,8 @@ - io.netty - netty-all - - - org.projectlombok - lombok - - - org.springframework.boot - spring-boot-starter - - - com.baidu - jprotobuf + com.paradogs + paradogs-framework-core diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java index 8a764d5..1c1a122 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java @@ -1,8 +1,10 @@ package com.paradogs.test.client; -import com.paradogs.test.client.demo.BaseMsg; +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.MsgHeader; +import com.paradogs.framework.core.utils.MsgUtils; import com.paradogs.test.client.demo.Client; -import com.paradogs.test.client.demo.MsgHeader; +import com.paradogs.test.client.pojo.CGLogin; import io.netty.bootstrap.Bootstrap; import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; @@ -80,6 +82,6 @@ public class DemoClientApplication { Channel channel = client.connect("localhost", 80).sync().channel(); - Client.send(channel, "login|login", null); + Client.send(channel, "login|login", new CGLogin("yumi", "123")); } } diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/BaseMsg.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/BaseMsg.java deleted file mode 100644 index 80530a3..0000000 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/BaseMsg.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.paradogs.test.client.demo; - -import com.baidu.bjf.remoting.protobuf.FieldType; -import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; -import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; -import io.netty.buffer.ByteBuf; -import lombok.Data; -import org.springframework.beans.BeanUtils; - -import java.io.IOException; - -/** - * @author: yumi - * @date: 2023/9/23 14:17 - * @Description: TODO - */ -@Data -@ProtobufClass -public class BaseMsg { - - @Protobuf(fieldType = FieldType.OBJECT, order = 1) - private MsgHeader msgHeader; - - - /** - * 序列化(编码 - * ps: BaseMsg 的 JProtobuf 序列化时,this 指向 BaseMsg(实际运行会指向子类),无法通过编译,需要额外处理 (ProtoUtils), - * 不指定 Codec<> 的泛型虽然可以通过编译但是无法正确的编解码 - * @param out - */ - public void serialization(ByteBuf out) { - - byte[] bytes = ProtoUtils.encode(this); - // 写入消息体 - out.writeBytes(bytes); - - } - - /** - * 反序列化(解码) - * @param in - */ - public void deserialization(ByteBuf in) throws IOException { - - // 读取消息体 byte 数组 - byte[] bytes = new byte[in.readableBytes()]; - in.readBytes(bytes); - BaseMsg msg = ProtoUtils.decode(bytes, this.getClass()); - - // 将属性设置到类上 - BeanUtils.copyProperties(msg, this); - - } - - public void setMsgHeader(MsgHeader msgHeader) { - this.msgHeader = msgHeader; - } - -} diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java index e57461a..41057e4 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java @@ -1,20 +1,10 @@ package com.paradogs.test.client.demo; -import io.netty.bootstrap.Bootstrap; -import io.netty.buffer.ByteBuf; +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.MsgHeader; import io.netty.channel.Channel; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInitializer; -import io.netty.channel.SimpleChannelInboundHandler; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.ByteToMessageCodec; -import io.netty.handler.codec.LengthFieldBasedFrameDecoder; -import io.netty.handler.codec.LengthFieldPrepender; import lombok.extern.slf4j.Slf4j; -import java.util.List; - /** * @author: yumi * @date: 2023/9/23 13:44 @@ -34,7 +24,7 @@ public class Client { if (channel != null) { channel.writeAndFlush(msg); - log.info("Send msg to >> {}", msg.getMsgHeader().getRoute()); + log.info(">>>>> [{}] ", msg.getMsgHeader().getRoute()); } else { log.warn("channel is null, route: {}", route); } diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java deleted file mode 100644 index 12cfd1f..0000000 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/MsgHeader.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.paradogs.test.client.demo; - -import com.baidu.bjf.remoting.protobuf.Codec; -import com.baidu.bjf.remoting.protobuf.FieldType; -import com.baidu.bjf.remoting.protobuf.ProtobufProxy; -import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; -import io.netty.buffer.ByteBuf; -import lombok.Data; -import org.springframework.beans.BeanUtils; - -import java.io.IOException; -import java.util.Date; -import java.util.UUID; - -/** - * @author: yumi - * @date: 2023/9/23 14:21 - * @Description: TODO - */ -@Data -public class MsgHeader { - - /** - * 解析器(也可以用 ProtoUtils) - */ - private static Codec codec = ProtobufProxy.create(MsgHeader.class); - - /** - * 消息唯一 ID,用于请求 - 响应 - */ - @Protobuf(fieldType = FieldType.STRING, order = 1, required = false) - private String id = UUID.randomUUID().toString(); - - /** - * 消息类型,替代路由地址(java 使用类型对应,nodejs 可以使用字符串对应方法) - * 待优化,路由转 cmd api - */ -// @Protobuf(fieldType = FieldType.INT32, order = 2, required = false) -// private int cmd; - - /** - * 消息路由,可通过字典转换为 cmd - */ - @Protobuf(fieldType = FieldType.STRING, order = 2, required = false) - private String route; - - /** - * 玩家 ID - // * 本框架设计用户必须登录后才能调用相关接口,如果用户未登录,则无法请求任何接口(原因是服务返回网关时,找不到对应的玩家返回) - // * 可以自己在玩家匿名时,设定一个 playerId,玩家登录后再设置玩家真实的 playerId - */ - @Protobuf(fieldType = FieldType.INT64, order = 3, required = false) - private Long playerId; - - /** - * 消息生成的时间戳 - */ - @Protobuf(fieldType = FieldType.INT64, order = 4, required = false) - private Long timestamp; - - /** - * 回复的 CG 消息 ID - */ - @Protobuf(fieldType = FieldType.STRING, order = 5, required = false) - private String replyMsgId; - - /** - * 回调时发送的路由地址 - */ - @Protobuf(fieldType = FieldType.STRING, order = 6, required = false) - private String callbackRoute; - - /** - * >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 额外 Props - */ - -// /** -// * Channel 上下文 -// */ -// private ChannelHandlerContext ctx; - - public MsgHeader() { - // - this.playerId = 1L; - this.timestamp = new Date().getTime(); - } - - /** - * 序列化(编码) - * ps: netty 的 codec 最终会捕获异常转换成 EncoderException - * @param out - */ - public void serialization(ByteBuf out) throws IOException { - byte[] bytes = codec.encode(this); - out.writeShort(bytes.length); - out.writeBytes(bytes); - } - - /** - * 反序列化(解码) - * @param in - */ - public void deserialization(ByteBuf in) throws IOException { - byte[] bytes = new byte[in.readShort()]; - in.readBytes(bytes); - MsgHeader msgHeader = codec.decode(bytes); - BeanUtils.copyProperties(msgHeader, this); - } - -} diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java deleted file mode 100644 index 6655071..0000000 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/ProtoUtils.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.paradogs.test.client.demo; - -import com.baidu.bjf.remoting.protobuf.Codec; -import com.baidu.bjf.remoting.protobuf.ProtobufProxy; - -import java.io.IOException; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * @author: yumi - * @date: 2023/8/1 13:48 - * @Description: TODO - */ -public class ProtoUtils { - - /** - * 优化效率,避免每次都创建一个编解码器 - */ - public static Map, Codec> codecMap = new ConcurrentHashMap<>(); - - /** - * jprotobuf 编码 - * @param obj - * @param - * @return - */ - public static byte[] encode(T obj) { - - if (!codecMap.containsKey(obj.getClass())) { - codecMap.put(obj.getClass(), ProtobufProxy.create(obj.getClass())); - } - - try { - Codec codec = codecMap.get(obj.getClass()); - return codec.encode(obj); - } catch (IOException e) { - e.printStackTrace(); - } - return new byte[0]; - } - - /** - * jprotobuf 解码 - * @param bytes - * @param clz - * @param - * @return - */ - public static T decode(byte[] bytes, Class clz) { - - if (!codecMap.containsKey(clz)) { - codecMap.put(clz, ProtobufProxy.create(clz)); - } - try { - return (T) codecMap.get(clz).decode(bytes); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - -} diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java deleted file mode 100644 index 6aba2ee..0000000 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/ProtocolProperties.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.paradogs.test.client.demo; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/9/23 14:08 - * @Description: TODO - */ -@Data -@Component -@ConfigurationProperties("paradogs.protocoal") -public class ProtocolProperties { - - private int maxFrameLength = 65534; - - private int lengthFieldOffset = 0; - - private int lengthFieldLength = 2; - - private int lengthAdjustment = 0; - - private int initialBytesToStrip = 2; - -} diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/pojo/CGLogin.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/pojo/CGLogin.java new file mode 100644 index 0000000..dc65c94 --- /dev/null +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/pojo/CGLogin.java @@ -0,0 +1,28 @@ +package com.paradogs.test.client.pojo; + +import com.paradogs.framework.core.msg.CGMsg; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/11/13 14:37 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CGLogin extends CGMsg { + + /** + * 账号 + */ + private String account; + + /** + * 密码 + */ + private String password; + +} diff --git a/paradogs-demo/paradogs-demo-client/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-client/src/main/resources/application.yml index 9f0c30f..4674ff9 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/resources/application.yml +++ b/paradogs-demo/paradogs-demo-client/src/main/resources/application.yml @@ -1,6 +1,26 @@ paradogs: - clients: - - host: localhost - port: 80 - server: connector + server: + port: 8003 + type: client + key: client-1 + master: + host: localhost + port: 8888 + +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://120.26.15.12:3306/paradogs_game?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8 + username: root + password: ningensama122 + +mybatis-plus: + mapper-locations: classpath:/mappers/**/*.xml + global-config: + db-config: + id-type: auto + field-strategy: not_empty + table-underline: true + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java index f60d7e0..4173339 100644 --- a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java +++ b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java @@ -3,6 +3,7 @@ package com.paradogs.demo.gateway.controller; import com.paradogs.demo.gateway.pojo.CGPrepareLogin; import com.paradogs.framework.core.annoations.request.PRController; import com.paradogs.framework.core.annoations.request.PRMsgMapping; +import com.paradogs.framework.core.msg.R; import lombok.extern.slf4j.Slf4j; /** @@ -19,8 +20,9 @@ public class GatewayController { * @param cg */ @PRMsgMapping("prepareLogin") - public void prepareLogin(CGPrepareLogin cg) { + public R prepareLogin(CGPrepareLogin cg) { log.info("PrepareLogin ----------------------------- {}", cg.getToken()); + return R.success(); } } diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml index 9b37f94..de27b6a 100644 --- a/paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml +++ b/paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml @@ -7,6 +7,23 @@ paradogs: host: localhost port: 8888 +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://120.26.15.12:3306/paradogs_game?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8 + username: root + password: ningensama122 + +mybatis-plus: + mapper-locations: classpath:/mappers/**/*.xml + global-config: + db-config: + id-type: auto + field-strategy: not_empty + table-underline: true + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + # 日志级别配置 logging: level: diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java index 936a684..16264d2 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java @@ -2,14 +2,25 @@ package com.paradogs.demo.login.controller; import com.paradogs.demo.login.pojo.cg.CGLogin; import com.paradogs.demo.login.pojo.cg.CGPrepareLogin; +import com.paradogs.demo.login.pojo.gc.GCAllocGateway; import com.paradogs.demo.login.rpc.GatewayClient; import com.paradogs.demo.login.rpc.MasterClient; import com.paradogs.framework.core.annoations.request.PRController; import com.paradogs.framework.core.annoations.request.PRMsgMapping; +import com.paradogs.framework.core.mapper.PlayerMapper; +import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.MsgHeader; +import com.paradogs.framework.core.msg.PRMsgContextHolder; +import com.paradogs.framework.core.msg.R; +import com.paradogs.framework.core.pojo.entity.Player; +import com.paradogs.framework.core.utils.PRAsync; +import com.paradogs.framework.core.utils.Wrap; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import javax.xml.transform.Result; import java.util.UUID; +import java.util.concurrent.CompletableFuture; /** * @author: yumi @@ -26,21 +37,50 @@ public class LoginController { @Autowired private GatewayClient gatewayClient; + @Autowired + private PlayerMapper playerMapper; + @PRMsgMapping("login") public void login(CGLogin dto) { - boolean loginResult = true; // 暂时直接登录成功,登录服之后可能不用长连接 + PRAsync.supply(() -> { + Player player = playerMapper.selectOne(Wrap.lbq() + .eq(Player::getAccount, dto.getAccount()) + .eq(Player::getPwd, dto.getPassword())); + return player; + }).thenApply(player -> { + + if (player == null) { + return R.fail(); + } + log.info("!!! 玩家登录成功: {}, {}", player.getAccount(), player); + + // 申请一个可以连接的网关 + GCAllocGateway gcAllocGateway = masterClient.allocGateway(); + return gcAllocGateway; - if (!loginResult) {return;} + }).thenApply(gcAllocGateway -> { - // 申请一个可以连接的网关 - masterClient.allocGateway().thenAccept(vo -> { + GCAllocGateway vo = (GCAllocGateway)gcAllocGateway; + // 申请一个可以连接的网关 if (!vo.isSuccess()) { log.info("没有可连接的网关"); - return; + return R.fail(); // 待优化:这里要改成抛出异常 } + // 准备登录 + return gatewayClient.prepareLogin(new CGPrepareLogin(UUID.randomUUID().toString())); - gatewayClient.prepareLogin(new CGPrepareLogin(UUID.randomUUID().toString())); - + }).thenAccept(result -> { + if (!result.isSuccess()) { + log.error("登录准备失败: {}", result.getMsg()); + return; + } + /** + * 发送给客户端玩家 !!! + */ + BaseMsg baseMsg = new BaseMsg(); + MsgHeader header = new MsgHeader(); + baseMsg.setMsgHeader(header); + PRMsgContextHolder.getChannel().writeAndFlush(baseMsg); }); } diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/db/Player.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/db/Player.java new file mode 100644 index 0000000..c28c31a --- /dev/null +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/db/Player.java @@ -0,0 +1,26 @@ +package com.paradogs.demo.login.pojo.db; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @author: yumi + * @date: 2023/11/14 10:19 + * @Description: TODO + */ +@Data +@TableName("g_player") +public class Player { + + @TableId + private Long id; + + @TableField("account") + private String account; + + @TableField("pwd") + private String pwd; + +} diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java index 12e7c28..3671e64 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java @@ -3,6 +3,7 @@ package com.paradogs.demo.login.rpc; import com.paradogs.demo.login.pojo.cg.CGPrepareLogin; import com.paradogs.framework.core.annoations.rpc.PRRPC; import com.paradogs.framework.core.annoations.rpc.PRRPCMapping; +import com.paradogs.framework.core.msg.R; /** * @author: yumi @@ -13,6 +14,6 @@ import com.paradogs.framework.core.annoations.rpc.PRRPCMapping; public interface GatewayClient { @PRRPCMapping("prepareLogin") - void prepareLogin(CGPrepareLogin prepareLogin); + R prepareLogin(CGPrepareLogin prepareLogin); } diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java index 73b6bb2..1ac4ad1 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java @@ -15,6 +15,6 @@ import java.util.concurrent.CompletableFuture; public interface MasterClient { @PRRPCMapping("_master.allocGateway") - CompletableFuture allocGateway(); + GCAllocGateway allocGateway(); } diff --git a/paradogs-demo/paradogs-demo-login/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-login/src/main/resources/application.yml index 07e161f..df2b71a 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/resources/application.yml +++ b/paradogs-demo/paradogs-demo-login/src/main/resources/application.yml @@ -7,6 +7,23 @@ paradogs: host: localhost port: 8888 +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://120.26.15.12:3306/paradogs_game?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8 + username: root + password: ningensama122 + +mybatis-plus: + mapper-locations: classpath:/mappers/**/*.xml + global-config: + db-config: + id-type: auto + field-strategy: not_empty + table-underline: true + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + # 日志级别配置 logging: level: diff --git a/paradogs-demo/paradogs-demo-master/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-master/src/main/resources/application.yml index 5447101..bc5aeb5 100644 --- a/paradogs-demo/paradogs-demo-master/src/main/resources/application.yml +++ b/paradogs-demo/paradogs-demo-master/src/main/resources/application.yml @@ -4,6 +4,24 @@ paradogs: type: master name: master-1 master: true + +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://120.26.15.12:3306/paradogs_game?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8 + username: root + password: ningensama122 + +mybatis-plus: + mapper-locations: classpath:/mappers/**/*.xml + global-config: + db-config: + id-type: assign_id + field-strategy: not_empty + table-underline: true + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + # 日志级别配置 logging: level: diff --git a/paradogs-framework/paradogs-framework-core/pom.xml b/paradogs-framework/paradogs-framework-core/pom.xml index b7380e7..479b347 100644 --- a/paradogs-framework/paradogs-framework-core/pom.xml +++ b/paradogs-framework/paradogs-framework-core/pom.xml @@ -43,6 +43,15 @@ jprotobuf + + com.baomidou + mybatis-plus-boot-starter + + + mysql + mysql-connector-java + + \ No newline at end of file diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java index e1df35c..a768a14 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java @@ -2,6 +2,7 @@ package com.paradogs.framework.core.annoations; import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector; import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Import; import java.lang.annotation.ElementType; @@ -22,6 +23,7 @@ import java.lang.annotation.Target; PRRequestInterfaceSelector.class, // ServerLauncher.class }) +@MapperScan("com.paradogs.framework.*") public @interface EnableParadogs { // /** diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java index bac9fb0..728073a 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java @@ -62,24 +62,27 @@ public class PRRPCProxyBeanImportSelector extends BaseImportSelector { // 保存 Msg 类型和要执行的方法 try { + // 异步 Async // if (pdgRPCMapping.returnType() == BaseMsg.class && !method.getReturnType().isAssignableFrom(CompletableFuture.class)) { // throw new RuntimeException("RPC[" + pdgRPCMapping.value() + "] use async but returnType is null"); // } - if (!method.getReturnType().equals(Void.TYPE) && !method.getReturnType().isAssignableFrom(CompletableFuture.class)) { - throw new RuntimeException("RPC[" + PRRPCMapping.value() + "] return must use async.(CompleteFuture)"); - } - Class genericReturnType = null; - try { - genericReturnType = (Class) ReflectUtils.getGenericReturnType(method); - } catch (Exception e) { - throw new RuntimeException("GetGenericReturnType error, ReturnType[" + method.getReturnType() + "] must extends BaseMsg: " + method.getName()); - } - // PdgRpcMapping.returnType default == BaseMsg.class - Class targetMsgClass = PRRPCMapping.returnType() == BaseMsg.class ? genericReturnType : PRRPCMapping.returnType(); +// if (!method.getReturnType().equals(Void.TYPE) && !method.getReturnType().isAssignableFrom(CompletableFuture.class)) { +// throw new RuntimeException("RPC[" + PRRPCMapping.value() + "] return must use async.(CompleteFuture)"); +// } +// Class genericReturnType = null; +// try { +// genericReturnType = (Class) ReflectUtils.getGenericReturnType(method); +// } catch (Exception e) { +// throw new RuntimeException("GetGenericReturnType error, ReturnType[" + method.getReturnType() + "] must extends BaseMsg: " + method.getName()); +// } +// // PdgRpcMapping.returnType default == BaseMsg.class +// Class targetMsgClass = PRRPCMapping.returnType() == BaseMsg.class ? genericReturnType : PRRPCMapping.returnType(); + if (PRRPCHolder.getMappingMap().containsKey(route)) { throw new RuntimeException("Route already exist: " + route); } + Class targetMsgClass = (Class) method.getReturnType(); PRRPCHolder.getMappingMap().put(route, new MsgMapping(targetMsgClass, method)); log.debug("Register RPC callback mapping: [{}]", route); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java index 737ad7c..90c6648 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java @@ -75,6 +75,9 @@ public class PRRPCProxyInterceptor implements MethodInterceptor { Class returnType = null; try { returnType = (Class) ReflectUtils.getGenericReturnType(method); + if (returnType == null) { + returnType = (Class) method.getReturnType(); + } } catch (Exception e) { throw new RuntimeException("ReturnType[" + method.getReturnType() + "] must extends BaseMsg: " + method.getName()); } @@ -88,6 +91,9 @@ public class PRRPCProxyInterceptor implements MethodInterceptor { returnType, promise )); - return promise; + + BaseMsg result = promise.get();// 阻塞等待 + + return result; } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java index fb9bf8f..524318d 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java @@ -2,6 +2,7 @@ package com.paradogs.framework.core.config; import com.paradogs.framework.core.utils.EventUtils; import com.paradogs.framework.core.utils.MsgUtils; +import com.paradogs.framework.core.utils.PRAsync; import com.paradogs.framework.core.utils.SpringUtils; import org.springframework.context.annotation.Bean; @@ -27,4 +28,7 @@ public class UtilsConfiguration { return new MsgUtils(); } + @Bean + public PRAsync pRAsync() {return new PRAsync();} + } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCSyncRequestEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCSyncRequestEvent.java new file mode 100644 index 0000000..3b74a4f --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCSyncRequestEvent.java @@ -0,0 +1,24 @@ +package com.paradogs.framework.core.events; + +import com.paradogs.framework.core.events.base.AnonEvent; +import com.paradogs.framework.core.msg.BaseMsg; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.concurrent.CompletableFuture; + +/** + * @author: yumi + * @date: 2023/8/17 10:45 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RPCSyncRequestEvent extends AnonEvent { + private String route; + private T msg; + private Class returnClass; + private CompletableFuture promise; +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg.java index 281acc6..89029f8 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg.java @@ -3,6 +3,7 @@ package com.paradogs.framework.core.msg; import com.baidu.bjf.remoting.protobuf.FieldType; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +import com.baomidou.mybatisplus.annotation.TableField; import com.paradogs.framework.core.utils.BeanUtils; import com.paradogs.framework.core.utils.ProtoUtils; import io.netty.buffer.ByteBuf; @@ -21,6 +22,7 @@ import java.io.IOException; @ProtobufClass public class BaseMsg implements IMsgSerializable { + @TableField(exist = false) @Protobuf(fieldType = FieldType.OBJECT, order = 1) private MsgHeader msgHeader; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/MsgHeader.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/MsgHeader.java index 0c90c93..af9d079 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/MsgHeader.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/MsgHeader.java @@ -10,6 +10,7 @@ import com.paradogs.framework.core.utils.RandomUtils; import com.paradogs.framework.core.utils.RouteUtils; import io.netty.buffer.ByteBuf; import lombok.Data; +import lombok.ToString; import java.io.IOException; import java.time.LocalDateTime; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java new file mode 100644 index 0000000..53a0485 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java @@ -0,0 +1,56 @@ +package com.paradogs.framework.core.msg; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * @author: yumi + * @date: 2023/11/16 13:47 + * @Description: TODO + */ +@Data +@NoArgsConstructor // 必须要有无参构造,JProtobuf 才能编码 +public class R extends BaseMsg { + + /** + * 消息码 + */ + private int code; + + /** + * 描述信息 + */ + private String msg; + + /** + * 数据 + */ + private T data; + + public R(int code, String msg, T data) { + this.code = code; + this.msg = msg; + this.data = data; + } + + public static R success() { + return new R(R_CONST.SUCCESS_CODE, null, null); + } + + public static R fail() { + return new R(R_CONST.FAIL_CODE, null, null); + } + + public boolean isSuccess() { + return this.code == R_CONST.SUCCESS_CODE; + } + +} + +class R_CONST { // 不能放 R 里,因为 JProtobuf 我设置了自动编解码,静态变量也会自动加上编解码的注解,@slf4j 日志也不能加 + public static final int SUCCESS_CODE = 200; + + public static final int FAIL_CODE = -1; +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java index 51f0814..7f49c7f 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java @@ -9,9 +9,11 @@ import com.paradogs.framework.core.netty.server.PRConnectionHolder; import com.paradogs.framework.core.queue.PRQueueHolder; import com.paradogs.framework.core.utils.EventUtils; import com.paradogs.framework.core.utils.SpringUtils; +import com.paradogs.framework.core.utils.StringUtils; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import lombok.extern.slf4j.Slf4j; +import org.springframework.jdbc.datasource.ConnectionHolder; /** * @author: yumi @@ -34,7 +36,9 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler getServerInfo(); + ServerProperties getServerInfo(); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayRandomLoadBalancerStrategy.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayRandomLoadBalancerStrategy.java index 8c74260..99cfa73 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayRandomLoadBalancerStrategy.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayRandomLoadBalancerStrategy.java @@ -11,7 +11,7 @@ import java.util.Random; * @date: 2023/11/13 13:50 * @Description: TODO */ -@Component("GatewayRandomLoadBalancerStrategy") +@Component("gatewayRandomLoadBalancerStrategy") public class GatewayRandomLoadBalancerStrategy implements GatewayLoadBalancerStrategy { @Override public PRConnection choose(List nodes) { diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java index 2f9c767..836d516 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java @@ -83,7 +83,7 @@ public class MsgUtils { if (conn.getChannel() != null) { conn.getChannel().writeAndFlush(msg); - log.info("Send msg to >> {}, {}", msg.getMsgHeader().getRoute(), msg); + log.info(">>>>> [{}], {}", msg.getMsgHeader().getRoute(), msg); } else { log.warn("Channel is null, route: {}", route); } @@ -97,7 +97,7 @@ public class MsgUtils { } if (channel != null) { channel.writeAndFlush(msg); - log.info("Send msg to >> {}, {}", msg.getMsgHeader().getRoute(), msg); + log.info(">>>>> [{}], {}", msg.getMsgHeader().getRoute(), msg); } else { log.warn("Channel is null, route: {}", route); } @@ -112,6 +112,7 @@ public class MsgUtils { */ public static void forward(BaseMsg msg) { msg.getMsgHeader().setSendServer(PRConnectionHolder.getConnKey(PRMsgContextHolder.getChannel())); + log.error("setSendServer: {}", msg.getMsgHeader().getSendServer()); MsgUtils.send(msg); } @@ -209,30 +210,48 @@ public class MsgUtils { .toArray() ); + /** + * 有返回结果时,自动将返回结果作为 GC 消息发送 + */ if (result == null) { return; } - if (!(result instanceof BaseMsg)) { - log.warn("Return no extends BaseMsg: {}", method.getName()); - return; - } + if (result instanceof CompletableFuture) { + /** + * 异步回调型 GC + */ + CompletableFuture future = (CompletableFuture) result; + future.thenAccept(gc -> { + if (!(gc instanceof BaseMsg)) { + log.error("CompletableFuture! result GC not extends BaseMsg: {}", method.getName()); + return; + } + // !! 如果把请求参数返回,返回值的类会和请求参数地址一样,英文就是 msg == gcMsg + // 准备返回消息 + BaseMsg gcMsg = (BaseMsg) gc; + MsgHeader gcHeader = new MsgHeader(); + gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); + gcMsg.setMsgHeader(gcHeader); - // !! 如果把请求参数返回,返回值的类会和请求参数地址一样,英文就是 msg == gcMsg - // 准备返回消息 - BaseMsg gcMsg = (BaseMsg) result; - MsgHeader gcHeader = new MsgHeader(); - gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); - gcMsg.setMsgHeader(gcHeader); + // 发送 GC + MsgUtils.send(header.getSendServer() + RouteUtils.SERVER_SEPARATOR + "_paradogs.callback", gcMsg); + }); + } else if (result instanceof BaseMsg) { + /** + * 正常 GC + */ + // 返回消息 + BaseMsg gcMsg = (BaseMsg) result; + MsgHeader gcHeader = new MsgHeader(); + gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); + gcMsg.setMsgHeader(gcHeader); + + // 发送 GC + MsgUtils.send(header.getSendServer() + RouteUtils.SERVER_SEPARATOR + "_paradogs.callback", gcMsg); + } else { + log.error("GC not extends BaseMsg: {}", method.getName()); + } - /** - * 返回值作为消息返回给请求者 - */ - MsgUtils.send( -// msg.getMsgHeader().getCtx().channel(), - header.getSendServer() + RouteUtils.SERVER_SEPARATOR + "_paradogs.callback", - gcMsg - ); - log.info("reply >> {}", msg.getMsgHeader()); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/PRAsync.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/PRAsync.java new file mode 100644 index 0000000..79522b8 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/PRAsync.java @@ -0,0 +1,32 @@ +package com.paradogs.framework.core.utils; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.task.AsyncTaskExecutor; + +import java.util.concurrent.CompletableFuture; +import java.util.function.Supplier; + +/** + * @author: yumi + * @date: 2023/11/16 13:32 + * @Description: TODO + */ +public class PRAsync { + + private static AsyncTaskExecutor taskExecutor; + + @Autowired + public void setServerProperties(AsyncTaskExecutor taskExecutor) { + PRAsync.taskExecutor = taskExecutor; + } + + + public static CompletableFuture supply(Supplier supplier) { + return CompletableFuture.supplyAsync(supplier, taskExecutor); + } + + public static CompletableFuture run(Runnable runnable) { + return CompletableFuture.runAsync(runnable, taskExecutor); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/Wrap.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/Wrap.java new file mode 100644 index 0000000..26e38a7 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/Wrap.java @@ -0,0 +1,15 @@ +package com.paradogs.framework.core.utils; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; + +/** + * @author: yumi + * @date: 2023/11/16 11:06 + * @Description: TODO + */ +public class Wrap { + + public static LambdaQueryWrapper lbq() { + return new LambdaQueryWrapper<>(); + } +} diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java index 86c0c97..2a9b317 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java @@ -6,9 +6,11 @@ import com.paradogs.framework.core.msg.BaseMsg; import com.paradogs.framework.core.netty.server.PRConnection; import com.paradogs.framework.core.netty.server.PRConnectionHolder; import com.paradogs.framework.core.strategy.GatewayLoadBalancerStrategy; +import com.paradogs.framework.core.strategy.GatewayRandomLoadBalancerStrategy; import com.paradogs.framework.master.pojo.AllocGatewayVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import java.net.InetSocketAddress; import java.net.SocketAddress; @@ -26,6 +28,7 @@ import java.util.stream.Collectors; @PRMsgMapping("_master") public class MasterController { + @Qualifier("gatewayRandomLoadBalancerStrategy") @Autowired private GatewayLoadBalancerStrategy strategy; diff --git a/paradogs-generator/pom.xml b/paradogs-generator/pom.xml new file mode 100644 index 0000000..d29a9b8 --- /dev/null +++ b/paradogs-generator/pom.xml @@ -0,0 +1,38 @@ + + + + paradogs + com.paradogs + 0.0.1 + + 4.0.0 + + paradogs-generator + + + 8 + 8 + + + + + com.baomidou + mybatis-plus-generator + + + com.baomidou + mybatis-plus-boot-starter + + + mysql + mysql-connector-java + + + org.freemarker + freemarker + + + + \ No newline at end of file diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/CodeGenerator.java b/paradogs-generator/src/main/java/com/paradogs/generator/CodeGenerator.java new file mode 100644 index 0000000..a095b34 --- /dev/null +++ b/paradogs-generator/src/main/java/com/paradogs/generator/CodeGenerator.java @@ -0,0 +1,52 @@ +package com.paradogs.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.generator.FastAutoGenerator; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; + +import java.util.Collections; + +/** + * @author: yumi + * @date: 2023/11/14 10:00 + * @Description: TODO + */ +public class CodeGenerator { + public static void main(String[] args) { + String test = System.getProperty("user.dir") + "/src/main/java"; + FastAutoGenerator.create("jdbc:mysql://120.26.15.12:3306/paradogs_game?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8", + "root", + "ningensama122") + .globalConfig(builder -> { + builder.author("yumi") // 设置作者 + .commentDate("yyyy-MM-dd") + .outputDir(System.getProperty("user.dir") + "/paradogs-framework/paradogs-framework-core/src/main/java") // 设置输出目录为项目的src/main/java目录 + .fileOverride(); // 覆盖已生成文件 + }) + .packageConfig(builder -> { + builder.parent("com.paradogs.framework.core") // 设置父包名 + .entity("pojo.entity") + .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/paradogs-framework/paradogs-framework-core/src/main/resources/mapper")); // 设置mapper.xml生成路径 + }) + .strategyConfig(builder -> { + builder +// .addInclude("table_name") // 设置需要生成的表名,如果要生成所有表,可以省略此行 + .addTablePrefix("g_") + .entityBuilder() + .enableLombok() + .superClass("com.paradogs.framework.core.msg.BaseMsg") + .enableTableFieldAnnotation() // 增加 @TableField + .idType(IdType.AUTO) + .build(); + }) + .templateConfig(builder -> { + builder.disable(TemplateType.SERVICE) // 禁用 Service 生成 + .disable(TemplateType.SERVICE_IMPL) // 禁用 ServiceImpl 生成 + .disable(TemplateType.CONTROLLER); // 禁用 Controller 生成 + + }) + .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板 + .execute(); + } +} diff --git a/pom.xml b/pom.xml index b41038c..ddcca26 100644 --- a/pom.xml +++ b/pom.xml @@ -6,6 +6,8 @@ paradogs-framework paradogs-demo + paradogs-generator + paradogs-common @@ -72,10 +74,28 @@ 3.5.3.1 + + com.baomidou + mybatis-plus-generator + 3.5.3.1 + + + + com.baomidou + mybatis-plus-annotation + 3.5.3.1 + + + + com.baomidou + mybatis-plus-core + 3.5.3.1 + + mysql mysql-connector-java - 5.1.38 + 8.0.23 @@ -84,6 +104,12 @@ 2.1.7 + + org.freemarker + freemarker + 2.3.31 + + com.paradogs paradogs-framework -- Gitee From b5d6b5ca5cc93c8d7e5b150cddb14eba27dab257 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Fri, 17 Nov 2023 17:08:20 +0800 Subject: [PATCH 24/32] save --- .../com/paradogs/test/client/demo/Client.java | 2 +- .../login/controller/LoginController.java | 2 - .../framework/core/mapper/PlayerMapper.java | 17 +++++++++ .../core/netty/PRAbstractMsgHandler.java | 2 +- .../framework/core/pojo/entity/Player.java | 37 +++++++++++++++++++ .../framework/core/utils/MsgUtils.java | 5 +-- .../main/resources/mapper/PlayerMapper.xml | 5 +++ 7 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/mapper/PlayerMapper.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/resources/mapper/PlayerMapper.xml diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java index 41057e4..c8f18cd 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java @@ -24,7 +24,7 @@ public class Client { if (channel != null) { channel.writeAndFlush(msg); - log.info(">>>>> [{}] ", msg.getMsgHeader().getRoute()); + log.debug(">>>>> [{}] ", msg.getMsgHeader().getRoute()); } else { log.warn("channel is null, route: {}", route); } diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java index 16264d2..a0ef9c5 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java @@ -18,9 +18,7 @@ import com.paradogs.framework.core.utils.Wrap; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import javax.xml.transform.Result; import java.util.UUID; -import java.util.concurrent.CompletableFuture; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/mapper/PlayerMapper.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/mapper/PlayerMapper.java new file mode 100644 index 0000000..8ba842c --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/mapper/PlayerMapper.java @@ -0,0 +1,17 @@ +package com.paradogs.framework.core.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.paradogs.framework.core.pojo.entity.Player; + +/** + *

+ * Mapper 接口 + *

+ * + * @author author + * @since 2023-11-16 + */ +public interface PlayerMapper extends BaseMapper { + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java index 7f49c7f..e4feeda 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java @@ -78,7 +78,7 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler + * + *

+ * + * @author yumi + * @since 2023-11-16 + */ +@Getter +@Setter +@ToString(callSuper = true) +@TableName("g_player") +public class Player extends BaseMsg { + + private static final long serialVersionUID = 1L; + + @TableId(value = "uid", type = IdType.AUTO) + private Long uid; + + @TableField("account") + private String account; + + @TableField("pwd") + private String pwd; +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java index 836d516..3a0a60c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java @@ -83,7 +83,7 @@ public class MsgUtils { if (conn.getChannel() != null) { conn.getChannel().writeAndFlush(msg); - log.info(">>>>> [{}], {}", msg.getMsgHeader().getRoute(), msg); + log.debug(">>>>> [{}], {}", msg.getMsgHeader().getRoute(), msg); } else { log.warn("Channel is null, route: {}", route); } @@ -97,7 +97,7 @@ public class MsgUtils { } if (channel != null) { channel.writeAndFlush(msg); - log.info(">>>>> [{}], {}", msg.getMsgHeader().getRoute(), msg); + log.debug(">>>>> [{}], {}", msg.getMsgHeader().getRoute(), msg); } else { log.warn("Channel is null, route: {}", route); } @@ -112,7 +112,6 @@ public class MsgUtils { */ public static void forward(BaseMsg msg) { msg.getMsgHeader().setSendServer(PRConnectionHolder.getConnKey(PRMsgContextHolder.getChannel())); - log.error("setSendServer: {}", msg.getMsgHeader().getSendServer()); MsgUtils.send(msg); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/resources/mapper/PlayerMapper.xml b/paradogs-framework/paradogs-framework-core/src/main/resources/mapper/PlayerMapper.xml new file mode 100644 index 0000000..2b716d7 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/resources/mapper/PlayerMapper.xml @@ -0,0 +1,5 @@ + + + + + -- Gitee From fc41198291f93d73d3a7ed6f54cb3cb7fea88c5b Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Sun, 19 Nov 2023 20:18:24 +0800 Subject: [PATCH 25/32] =?UTF-8?q?=E5=87=86=E5=A4=87=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BC=A0=E8=BE=93=E6=B6=88=E6=81=AF=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/client/DemoClientApplication.java | 19 +++-- .../com/paradogs/test/client/demo/Client.java | 6 +- .../login/controller/LoginController.java | 8 +- .../demo/login/pojo/gc/GCAllocGateway.java | 1 - .../paradogs/framework/core/CoreStarter.java | 4 +- .../core/annoations/EnableParadogs.java | 15 +++- .../annoations/base/BaseImportSelector.java | 41 ++-------- .../core/annoations/base/BaseSelector.java | 72 ++++++++++++++++++ .../request/PRMsgMappingHolder.java | 4 +- .../request/PRRequestInterfaceSelector.java | 31 ++------ .../core/annoations/rpc/PRRPCMapping.java | 4 +- .../rpc/PRRPCProxyBeanImportSelector.java | 9 +-- .../annoations/rpc/PRRPCProxyInterceptor.java | 25 +++---- .../annoations/rpc/PRRPCResponseResolver.java | 12 ++- .../core/config/NettyConfiguration.java | 24 ++---- .../core/config/UtilsConfiguration.java | 8 -- .../core/events/RPCRequestEvent.java | 8 +- .../framework/core/events/RPCRespEvent.java | 4 +- .../core/events/RPCSyncRequestEvent.java | 8 +- .../core/events/ReceiveMsgEvent.java | 4 +- .../framework/core/msg/ByteBodyMsg.java | 2 +- .../paradogs/framework/core/msg/CGMsg.java | 2 +- .../paradogs/framework/core/msg/GCMsg.java | 2 +- .../core/msg/{BaseMsg.java => PRMsg.java} | 6 +- .../com/paradogs/framework/core/msg/R.java | 4 +- .../paradogs/framework/core/msg/VoidMsg.java | 2 +- .../framework/core/msg/route/MsgMapping.java | 4 +- .../framework/core/netty/PRCodec.java | 14 ++-- .../framework/core/pojo/Connection.java | 4 +- .../framework/core/pojo/entity/Player.java | 5 +- .../framework/core/queue/PRQueueHolder.java | 6 +- .../framework/core/utils/EventUtils.java | 4 +- .../framework/core/utils/MsgUtils.java | 27 ++++--- ...ot.autoconfigure.AutoConfiguration.imports | 10 +-- .../framework/master/MasterController.java | 8 +- .../framework/master/pojo/AllocGatewayVO.java | 4 +- paradogs-generator/pom.xml | 4 + ...eGenerator.java => DBEntityGenerator.java} | 2 +- .../generator/ProtobufIDLGenerator.java | 22 ++++++ .../generator/idl/ProtoEntityScanner.java | 66 ++++++++++++++++ .../generator/idl/ProtoEntitySelector.java | 75 +++++++++++++++++++ .../generator/utils/GeneratorUtils.java | 28 +++++++ .../src/main/resources/application.yml | 11 +++ 43 files changed, 415 insertions(+), 204 deletions(-) create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseSelector.java rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/{BaseMsg.java => PRMsg.java} (93%) rename paradogs-generator/src/main/java/com/paradogs/generator/{CodeGenerator.java => DBEntityGenerator.java} (98%) create mode 100644 paradogs-generator/src/main/java/com/paradogs/generator/ProtobufIDLGenerator.java create mode 100644 paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntityScanner.java create mode 100644 paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntitySelector.java create mode 100644 paradogs-generator/src/main/java/com/paradogs/generator/utils/GeneratorUtils.java create mode 100644 paradogs-generator/src/main/resources/application.yml diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java index 1c1a122..4b2cd54 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java @@ -1,8 +1,7 @@ package com.paradogs.test.client; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.MsgHeader; -import com.paradogs.framework.core.utils.MsgUtils; import com.paradogs.test.client.demo.Client; import com.paradogs.test.client.pojo.CGLogin; import io.netty.bootstrap.Bootstrap; @@ -48,9 +47,9 @@ public class DemoClientApplication { channel.pipeline().addLast(new LengthFieldPrepender(2)); - channel.pipeline().addLast(new ByteToMessageCodec() { + channel.pipeline().addLast(new ByteToMessageCodec() { @Override - protected void encode(ChannelHandlerContext ctx, BaseMsg msg, ByteBuf out) throws Exception { + protected void encode(ChannelHandlerContext ctx, PRMsg msg, ByteBuf out) throws Exception { msg.getMsgHeader().serialization(out); msg.serialization(out); @@ -61,19 +60,19 @@ public class DemoClientApplication { MsgHeader msgHeader = new MsgHeader(); msgHeader.deserialization(in); - BaseMsg baseMsg = new BaseMsg(); + PRMsg PRMsg = new PRMsg(); - baseMsg.deserialization(in); - baseMsg.setMsgHeader(msgHeader); + PRMsg.deserialization(in); + PRMsg.setMsgHeader(msgHeader); - out.add(baseMsg); + out.add(PRMsg); } }); // addLast() 加入越晚的出栈时越先执行 - channel.pipeline().addLast(new SimpleChannelInboundHandler() { + channel.pipeline().addLast(new SimpleChannelInboundHandler() { @Override - protected void channelRead0(ChannelHandlerContext ctx, BaseMsg msg) throws Exception { + protected void channelRead0(ChannelHandlerContext ctx, PRMsg msg) throws Exception { log.info("receive {}", msg.toString()); } }); diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java index c8f18cd..97512a0 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java @@ -1,6 +1,6 @@ package com.paradogs.test.client.demo; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.MsgHeader; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; @@ -13,9 +13,9 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public class Client { - public static void send(Channel channel, String route, BaseMsg msg) { + public static void send(Channel channel, String route, PRMsg msg) { if (msg == null) { - msg = new BaseMsg(); + msg = new PRMsg(); } if (msg.getMsgHeader() == null) { msg.setMsgHeader(new MsgHeader()); diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java index a0ef9c5..05487f5 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java @@ -8,7 +8,7 @@ import com.paradogs.demo.login.rpc.MasterClient; import com.paradogs.framework.core.annoations.request.PRController; import com.paradogs.framework.core.annoations.request.PRMsgMapping; import com.paradogs.framework.core.mapper.PlayerMapper; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.MsgHeader; import com.paradogs.framework.core.msg.PRMsgContextHolder; import com.paradogs.framework.core.msg.R; @@ -75,10 +75,10 @@ public class LoginController { /** * 发送给客户端玩家 !!! */ - BaseMsg baseMsg = new BaseMsg(); + PRMsg PRMsg = new PRMsg(); MsgHeader header = new MsgHeader(); - baseMsg.setMsgHeader(header); - PRMsgContextHolder.getChannel().writeAndFlush(baseMsg); + PRMsg.setMsgHeader(header); + PRMsgContextHolder.getChannel().writeAndFlush(PRMsg); }); } diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java index cecb6f0..2cb53de 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java @@ -1,6 +1,5 @@ package com.paradogs.demo.login.pojo.gc; -import com.paradogs.framework.core.msg.BaseMsg; import com.paradogs.framework.core.msg.GCMsg; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java index e947ba0..1f83526 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java @@ -2,6 +2,8 @@ package com.paradogs.framework.core; import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector; import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; +import com.paradogs.framework.core.netty.clients.PRMasterClient; +import com.paradogs.framework.core.netty.server.PRServer; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -12,7 +14,7 @@ import org.springframework.context.annotation.Import; */ @Import({ PRRPCProxyBeanImportSelector.class, - PRRequestInterfaceSelector.class + PRRequestInterfaceSelector.class, }) @Configuration public class CoreStarter { diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java index a768a14..03d31f5 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java @@ -2,8 +2,16 @@ package com.paradogs.framework.core.annoations; import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector; import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; +import com.paradogs.framework.core.config.NettyConfiguration; +import com.paradogs.framework.core.config.QueueConfiguration; +import com.paradogs.framework.core.config.RPCConfiguration; +import com.paradogs.framework.core.config.UtilsConfiguration; +import com.paradogs.framework.core.netty.clients.PRMasterClient; +import com.paradogs.framework.core.netty.server.PRServer; +import com.paradogs.framework.core.netty.server.ServerProperties; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Import; +import org.springframework.scheduling.annotation.EnableAsync; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -21,7 +29,12 @@ import java.lang.annotation.Target; // 等同于使用 META-INF.spring,看 @Import 注释,主要区别在于 @Import 可以手动注册,META-INF 为导入依赖自动注册 PRRPCProxyBeanImportSelector.class, PRRequestInterfaceSelector.class, -// ServerLauncher.class + PRServer.class, // 启动服务器 + PRMasterClient.class, // 连接 master 服务器 + ServerProperties.class, + NettyConfiguration.class, + QueueConfiguration.class, + RPCConfiguration.class, }) @MapperScan("com.paradogs.framework.*") public @interface EnableParadogs { diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseImportSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseImportSelector.java index 3b269e2..39f4c12 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseImportSelector.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseImportSelector.java @@ -16,13 +16,13 @@ import java.util.Set; * @Description: TODO */ @Slf4j -public abstract class BaseImportSelector implements ImportSelector, BeanFactoryAware { +public abstract class BaseImportSelector extends BaseSelector implements ImportSelector { - private BeanFactory beanFactory; + private AnnotationMetadata importingClassMetadata; @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { - this.beanFactory = beanFactory; + super.beanFactory = beanFactory; } /** @@ -32,36 +32,15 @@ public abstract class BaseImportSelector implements ImportSelector, BeanFactoryA */ @Override public String[] selectImports(AnnotationMetadata importingClassMetadata) { - - long startTime = System.currentTimeMillis(); - - // 设置扫描路径,扫描出符合条件的 bean (接口、类等) - String[] scanPackages = getScanPackages(importingClassMetadata); - - // 获取扫描类 - BaseScanner scanner = getScanner(importingClassMetadata, beanFactory); - - // 扫描出符合条件的 bean - Set beanDefinitions = scanner.isNeedRegister() ? - scanner.findAndRegisterComponents(scanPackages) : - scanner.findCandidateComponents(scanPackages); - - // 循环处理每个被扫描到的bean对象 - for (BeanDefinition beanDefinition : beanDefinitions) { - handle(beanDefinition); - } - - log.debug("Scan: {}, {}", scanPackages, this.getClass().getSimpleName()); - - return new String[0]; + this.importingClassMetadata = importingClassMetadata; + return scanAndHandle(); } /** * 设置扫描的路径 - * @param importingClassMetadata * @return */ - public String[] getScanPackages(AnnotationMetadata importingClassMetadata) { + public String[] getScanPackages() { try { // 获取被注解的类(启动类)的 Class,以及包路径 String startupClassStr = importingClassMetadata.getClassName(); @@ -77,14 +56,6 @@ public abstract class BaseImportSelector implements ImportSelector, BeanFactoryA } } - /** - * 设置要扫描的 Scanner - * @param importingClassMetadata - * @param beanFactory - * @return - */ - public abstract BaseScanner getScanner(AnnotationMetadata importingClassMetadata, BeanFactory beanFactory); - /** * 处理扫描到的 Bean * @param beanDefinition diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseSelector.java new file mode 100644 index 0000000..673afd4 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/base/BaseSelector.java @@ -0,0 +1,72 @@ +package com.paradogs.framework.core.annoations.base; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.beans.factory.config.BeanDefinition; + +import java.util.Set; + +/** + * @author: yumi + * @date: 2023/11/18 11:00 + * @Description: TODO + */ +@Slf4j +public abstract class BaseSelector implements BeanFactoryAware { + + public BeanFactory beanFactory; + + @Override + public void setBeanFactory(BeanFactory beanFactory) throws BeansException { + this.beanFactory = beanFactory; + } + + /** + * @return + */ + public final String[] scanAndHandle() { + + long startTime = System.currentTimeMillis(); + + // 设置扫描路径,扫描出符合条件的 bean (接口、类等) + String[] scanPackages = getScanPackages(); + + // 获取扫描类 + BaseScanner scanner = getScanner(beanFactory); + + // 扫描出符合条件的 bean + Set beanDefinitions = scanner.isNeedRegister() ? + scanner.findAndRegisterComponents(scanPackages) : + scanner.findCandidateComponents(scanPackages); + + // 循环处理每个被扫描到的bean对象 + for (BeanDefinition beanDefinition : beanDefinitions) { + handle(beanDefinition); + } + + log.debug("Scan: {}, {}", scanPackages, this.getClass().getSimpleName()); + + return new String[0]; + } + + /** + * 设置扫描的路径 + * @return + */ + public abstract String[] getScanPackages(); + + /** + * 设置要扫描的 Scanner + * @param beanFactory + * @return + */ + public abstract BaseScanner getScanner(BeanFactory beanFactory); + + /** + * 处理扫描到的 Bean + * @param beanDefinition + */ + public abstract void handle(BeanDefinition beanDefinition); +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java index de792cc..153896d 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.annoations.request; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.route.MsgMapping; import lombok.extern.slf4j.Slf4j; @@ -35,7 +35,7 @@ public class PRMsgMappingHolder { * @param route * @return */ - public static Class getMsgMappingClass(String route) { + public static Class getMsgMappingClass(String route) { MsgMapping msgMapping = PRMsgMappingHolder.getMsgMapping(route); if (msgMapping == null || msgMapping.getMsgClass() == null || msgMapping.getMsgClass().isAssignableFrom(void.class)) { return null; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java index 0813f81..1625030 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java @@ -2,14 +2,13 @@ package com.paradogs.framework.core.annoations.request; import com.paradogs.framework.core.annoations.base.BaseImportSelector; import com.paradogs.framework.core.annoations.base.BaseScanner; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.route.MsgMapping; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.core.annotation.AnnotationUtils; -import org.springframework.core.type.AnnotationMetadata; import java.lang.reflect.Method; import java.lang.reflect.Parameter; @@ -26,22 +25,8 @@ import java.util.stream.Stream; public class PRRequestInterfaceSelector extends BaseImportSelector { @Override - public BaseScanner getScanner(AnnotationMetadata importingClassMetadata, BeanFactory beanFactory) { - - DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) beanFactory; - - // 获取被注解的类(启动类)的 Class,以及包路径 - String startupPackage; - try { - String startupClassStr = importingClassMetadata.getClassName(); - Class startupClass = Class.forName(startupClassStr); - startupPackage = startupClass.getPackage().getName(); - - } catch (ClassNotFoundException e) { - throw new RuntimeException(e); - } - - return new PRRequestScanner(defaultListableBeanFactory); + public BaseScanner getScanner(BeanFactory beanFactory) { + return new PRRequestScanner((DefaultListableBeanFactory) beanFactory); } @Override @@ -66,18 +51,18 @@ public class PRRequestInterfaceSelector extends BaseImportSelector { } // 保存 Msg 类型和要执行的方法 - Class targetMsgClass = null; + Class targetMsgClass = null; for (Parameter parameter : method.getParameters()) { - if (parameter.getAnnotation(PRMsg.class) != null) { - targetMsgClass = (Class) parameter.getType(); + if (parameter.getAnnotation(com.paradogs.framework.core.annoations.request.PRMsg.class) != null) { + targetMsgClass = (Class) parameter.getType(); } else { // 如果只有一个 BaseMsg 参数,自动优化添加,等于加了 PdgMsg List baseMsgList = Stream.of(method.getParameters()). - filter(param -> BaseMsg.class.isAssignableFrom(param.getType())) + filter(param -> PRMsg.class.isAssignableFrom(param.getType())) .collect(Collectors.toList()); if (baseMsgList.size() == 1) { - targetMsgClass = (Class) parameter.getType(); + targetMsgClass = (Class) parameter.getType(); } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCMapping.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCMapping.java index 188ca04..b141722 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCMapping.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCMapping.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.annoations.rpc; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -25,7 +25,7 @@ public @interface PRRPCMapping { /** * 返回值类型 */ - Class returnType() default BaseMsg.class; + Class returnType() default PRMsg.class; /** * 同步暂时未完成 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java index 728073a..883247c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java @@ -2,18 +2,15 @@ package com.paradogs.framework.core.annoations.rpc; import com.paradogs.framework.core.annoations.base.BaseImportSelector; import com.paradogs.framework.core.annoations.base.BaseScanner; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.route.MsgMapping; -import com.paradogs.framework.core.utils.ReflectUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.core.annotation.AnnotationUtils; -import org.springframework.core.type.AnnotationMetadata; import java.lang.reflect.Method; -import java.util.concurrent.CompletableFuture; /** * @author: yumi @@ -24,7 +21,7 @@ import java.util.concurrent.CompletableFuture; public class PRRPCProxyBeanImportSelector extends BaseImportSelector { @Override - public BaseScanner getScanner(AnnotationMetadata importingClassMetadata, BeanFactory beanFactory) { + public BaseScanner getScanner(BeanFactory beanFactory) { // 转换为 DefaultListableBeanFactory 便于操作 DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) beanFactory; // 自定义扫描器,获取 BeanDefinitionHolder @@ -82,7 +79,7 @@ public class PRRPCProxyBeanImportSelector extends BaseImportSelector { if (PRRPCHolder.getMappingMap().containsKey(route)) { throw new RuntimeException("Route already exist: " + route); } - Class targetMsgClass = (Class) method.getReturnType(); + Class targetMsgClass = (Class) method.getReturnType(); PRRPCHolder.getMappingMap().put(route, new MsgMapping(targetMsgClass, method)); log.debug("Register RPC callback mapping: [{}]", route); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java index 90c6648..ab8b189 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java @@ -1,8 +1,7 @@ package com.paradogs.framework.core.annoations.rpc; -import com.paradogs.framework.core.annoations.request.PRMsg; import com.paradogs.framework.core.events.RPCRequestEvent; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.utils.EventUtils; import com.paradogs.framework.core.utils.ReflectUtils; import com.paradogs.framework.core.utils.RouteUtils; @@ -52,13 +51,13 @@ public class PRRPCProxyInterceptor implements MethodInterceptor { PRRPC PRRPC = AnnotationUtils.findAnnotation(targetClass, PRRPC.class); // 获得参数消息 - BaseMsg requestMsg = null; + PRMsg requestMsg = null; Parameter[] parameters = method.getParameters(); for (int i = 0; i < parameters.length; i++) { - PRMsg requestAnnotation = AnnotationUtils.findAnnotation(parameters[i], PRMsg.class); + com.paradogs.framework.core.annoations.request.PRMsg requestAnnotation = AnnotationUtils.findAnnotation(parameters[i], com.paradogs.framework.core.annoations.request.PRMsg.class); if (requestAnnotation != null) { try { - requestMsg = (BaseMsg) args[i]; + requestMsg = (PRMsg) args[i]; } catch (Exception e) { throw new RuntimeException("@PdgMsg arg must extends BaseMsg: " + method.getName()); } finally { @@ -67,32 +66,32 @@ public class PRRPCProxyInterceptor implements MethodInterceptor { } } // 如果只有一个参数,则默认视为被 @PRMsg 修饰 - if (requestMsg == null && parameters.length == 1 && BaseMsg.class.isAssignableFrom(parameters[0].getType())) { - requestMsg = (BaseMsg) args[0]; + if (requestMsg == null && parameters.length == 1 && PRMsg.class.isAssignableFrom(parameters[0].getType())) { + requestMsg = (PRMsg) args[0]; } // 获得返回值类型 - Class returnType = null; + Class returnType = null; try { - returnType = (Class) ReflectUtils.getGenericReturnType(method); + returnType = (Class) ReflectUtils.getGenericReturnType(method); if (returnType == null) { - returnType = (Class) method.getReturnType(); + returnType = (Class) method.getReturnType(); } } catch (Exception e) { throw new RuntimeException("ReturnType[" + method.getReturnType() + "] must extends BaseMsg: " + method.getName()); } - CompletableFuture promise = new CompletableFuture<>(); + CompletableFuture promise = new CompletableFuture<>(); // 解耦 MsgUtils EventUtils.publishEvent(new RPCRequestEvent( PRRPC.value() + RouteUtils.SERVER_SEPARATOR + PRRPCMapping.value(), - requestMsg != null ? requestMsg : new BaseMsg(), + requestMsg != null ? requestMsg : new PRMsg(), returnType, promise )); - BaseMsg result = promise.get();// 阻塞等待 + PRMsg result = promise.get();// 阻塞等待 return result; } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java index 8d9c01c..2c4ac5a 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java @@ -1,12 +1,10 @@ package com.paradogs.framework.core.annoations.rpc; import com.paradogs.framework.core.events.RPCRespEvent; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.ByteBodyMsg; -import com.paradogs.framework.core.msg.GCMsg; import com.paradogs.framework.core.msg.PRMsgContextHolder; import com.paradogs.framework.core.utils.ProtoUtils; -import com.paradogs.framework.core.utils.RouteUtils; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -39,7 +37,7 @@ public class PRRPCResponseResolver { * @param */ @EventListener(RPCRespEvent.class) - private void onRpcMsgResponse(RPCRespEvent event) { + private void onRpcMsgResponse(RPCRespEvent event) { Long key = event.getMsg().getMsgHeader().getReplyMsgId(); ByteBodyMsg byteBodyMsg = event.getMsg(); @@ -58,7 +56,7 @@ public class PRRPCResponseResolver { } // 解码消息体数据 - BaseMsg msg = ProtoUtils.decode(byteBodyMsg.getDataBytes(), (Class)respInfo.getReturnClass()); + PRMsg msg = ProtoUtils.decode(byteBodyMsg.getDataBytes(), (Class)respInfo.getReturnClass()); msg.setMsgHeader(byteBodyMsg.getMsgHeader()); // 设置上下文 @@ -83,7 +81,7 @@ public class PRRPCResponseResolver { * @param cgMsgId * @param promise */ - public void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { + public void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { this.waitRespMap.put(cgMsgId, new RespData(returnClass, promise, PRMsgContextHolder.getSnapshot())); } @@ -95,7 +93,7 @@ public class PRRPCResponseResolver { /** * 返回消息类型 */ - private Class returnClass; + private Class returnClass; /** * 回调方法 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java index 31a14db..29c7505 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java @@ -8,6 +8,8 @@ import com.paradogs.framework.core.netty.clients.PRMasterClientMsgHandler; import com.paradogs.framework.core.netty.server.PRServer; import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.netty.*; +import com.paradogs.framework.core.utils.MsgUtils; +import com.paradogs.framework.core.utils.PRAsync; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -50,11 +52,6 @@ public class NettyConfiguration { return new PRMasterClientMsgHandler(); } - @Bean - public ServerProperties serverProperties() { - return new ServerProperties(); - } - @Bean public GlobalExceptionDispatch globalExceptionDispatch() { return new GlobalExceptionDispatch(); @@ -66,21 +63,12 @@ public class NettyConfiguration { return new PRCodec(); } - /** - * 自动启动服务器 - * @return - */ @Bean - public PRServer prServer() { - return new PRServer(); + public MsgUtils msgUtils() { + return new MsgUtils(); } - /** - * 自动连接 Master 服务器 - * @return - */ @Bean - public PRMasterClient prMasterClient() { - return new PRMasterClient(); - } + public PRAsync pRAsync() {return new PRAsync();} + } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java index 524318d..c4edee7 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java @@ -23,12 +23,4 @@ public class UtilsConfiguration { return new SpringUtils(); } - @Bean - public MsgUtils msgUtils() { - return new MsgUtils(); - } - - @Bean - public PRAsync pRAsync() {return new PRAsync();} - } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java index 5e3c28c..f9c4b81 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java @@ -1,7 +1,7 @@ package com.paradogs.framework.core.events; import com.paradogs.framework.core.events.base.AnonEvent; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -16,9 +16,9 @@ import java.util.concurrent.CompletableFuture; @Data @AllArgsConstructor @NoArgsConstructor -public class RPCRequestEvent extends AnonEvent { +public class RPCRequestEvent extends AnonEvent { private String route; private T msg; - private Class returnClass; - private CompletableFuture promise; + private Class returnClass; + private CompletableFuture promise; } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java index cde306b..c0b7bd0 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java @@ -1,7 +1,7 @@ package com.paradogs.framework.core.events; import com.paradogs.framework.core.events.base.AnonEvent; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -14,7 +14,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class RPCRespEvent extends AnonEvent { +public class RPCRespEvent extends AnonEvent { private T msg; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCSyncRequestEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCSyncRequestEvent.java index 3b74a4f..87f5387 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCSyncRequestEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCSyncRequestEvent.java @@ -1,7 +1,7 @@ package com.paradogs.framework.core.events; import com.paradogs.framework.core.events.base.AnonEvent; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -16,9 +16,9 @@ import java.util.concurrent.CompletableFuture; @Data @AllArgsConstructor @NoArgsConstructor -public class RPCSyncRequestEvent extends AnonEvent { +public class RPCSyncRequestEvent extends AnonEvent { private String route; private T msg; - private Class returnClass; - private CompletableFuture promise; + private Class returnClass; + private CompletableFuture promise; } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java index 91f71ac..3e7a85b 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java @@ -1,7 +1,7 @@ package com.paradogs.framework.core.events; import com.paradogs.framework.core.events.base.AnonEvent; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -14,7 +14,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class ReceiveMsgEvent extends AnonEvent { +public class ReceiveMsgEvent extends AnonEvent { private T msg; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteBodyMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteBodyMsg.java index 195640e..1d78618 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteBodyMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteBodyMsg.java @@ -11,7 +11,7 @@ import java.io.IOException; * @Description: TODO */ @Data -public class ByteBodyMsg extends BaseMsg { +public class ByteBodyMsg extends PRMsg { private byte[] dataBytes; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java index ac2e7b1..c6817f3 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java @@ -11,6 +11,6 @@ import lombok.ToString; */ @Data @ToString(callSuper = true) -public class CGMsg extends BaseMsg { +public class CGMsg extends PRMsg { } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCMsg.java index e08151d..6a1533f 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCMsg.java @@ -8,7 +8,7 @@ import lombok.Data; * @Description: TODO */ @Data -public abstract class GCMsg extends BaseMsg { +public abstract class GCMsg extends PRMsg { /** * 回复的 CG 消息 ID diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java similarity index 93% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java index 89029f8..eddd405 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java @@ -20,12 +20,14 @@ import java.io.IOException; //@Slf4j 不能加,jprotobuf 会自动解析所有属性 @Data @ProtobufClass -public class BaseMsg implements IMsgSerializable { +public class PRMsg implements IMsgSerializable { @TableField(exist = false) @Protobuf(fieldType = FieldType.OBJECT, order = 1) private MsgHeader msgHeader; + private Object msgData; + /** * 序列化(编码 @@ -56,7 +58,7 @@ public class BaseMsg implements IMsgSerializable { @Override public void deserialization(byte[] bytes) { - BaseMsg msg = ProtoUtils.decode(bytes, this.getClass()); + PRMsg msg = ProtoUtils.decode(bytes, this.getClass()); // 将属性设置到类上 BeanUtils.copyProperties(msg, this); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java index 53a0485..dffa325 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java @@ -1,9 +1,7 @@ package com.paradogs.framework.core.msg; -import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import lombok.extern.slf4j.Slf4j; /** * @author: yumi @@ -12,7 +10,7 @@ import lombok.extern.slf4j.Slf4j; */ @Data @NoArgsConstructor // 必须要有无参构造,JProtobuf 才能编码 -public class R extends BaseMsg { +public class R extends PRMsg { /** * 消息码 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/VoidMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/VoidMsg.java index 5483f30..c405966 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/VoidMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/VoidMsg.java @@ -5,5 +5,5 @@ package com.paradogs.framework.core.msg; * @date: 2023/8/26 16:10 * @Description: TODO */ -public class VoidMsg extends BaseMsg { +public class VoidMsg extends PRMsg { } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java index ac64424..e986b76 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.msg.route; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -17,7 +17,7 @@ import java.lang.reflect.Method; @NoArgsConstructor public class MsgMapping { - private Class msgClass; + private Class msgClass; private Method method; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java index 86f032c..d2320dc 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.netty; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.ByteBodyMsg; import com.paradogs.framework.core.msg.MsgHeader; import io.netty.buffer.ByteBuf; @@ -22,10 +22,10 @@ import java.util.List; @Slf4j @Component @Scope("prototype") -public class PRCodec extends ByteToMessageCodec { +public class PRCodec extends ByteToMessageCodec { @Override - protected void encode(ChannelHandlerContext ctx, BaseMsg msg, ByteBuf out) throws Exception { + protected void encode(ChannelHandlerContext ctx, PRMsg msg, ByteBuf out) throws Exception { msg.getMsgHeader().serialization(out); @@ -50,11 +50,11 @@ public class PRCodec extends ByteToMessageCodec { // : new ByteBodyMsg(); // 消息体暂时不解析,放 MsgHandler 中解析 - BaseMsg baseMsg = new ByteBodyMsg(); - baseMsg.deserialization(in); - baseMsg.setMsgHeader(msgHeader); + PRMsg PRMsg = new ByteBodyMsg(); + PRMsg.deserialization(in); + PRMsg.setMsgHeader(msgHeader); - out.add(baseMsg); + out.add(PRMsg); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java index d3e45f5..d257f02 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.pojo; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import io.netty.channel.Channel; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -15,7 +15,7 @@ import java.net.InetSocketAddress; */ @Slf4j @Data -public class Connection extends BaseMsg { +public class Connection extends PRMsg { /** * 通道 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java index e5b23ce..39bddf8 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java @@ -4,8 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.paradogs.framework.core.msg.BaseMsg; -import java.io.Serializable; +import com.paradogs.framework.core.msg.PRMsg; import lombok.Getter; import lombok.Setter; import lombok.ToString; @@ -22,7 +21,7 @@ import lombok.ToString; @Setter @ToString(callSuper = true) @TableName("g_player") -public class Player extends BaseMsg { +public class Player extends PRMsg { private static final long serialVersionUID = 1L; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java index 60d0842..dc3bc8a 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.queue; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.utils.SpringUtils; import lombok.Getter; import lombok.Setter; @@ -83,7 +83,7 @@ public class PRQueueHolder implements ApplicationRunner { } } - public static void putMsg(QueueType queueType, BaseMsg msg) throws InterruptedException { + public static void putMsg(QueueType queueType, PRMsg msg) throws InterruptedException { balance(consumerMap.get(queueType), msg).produce(msg); } @@ -91,7 +91,7 @@ public class PRQueueHolder implements ApplicationRunner { * 待优化,负载均衡规则,可以换成一个接口 * @return */ - private static QueueConsumerThread balance(List list, BaseMsg msg) { + private static QueueConsumerThread balance(List list, PRMsg msg) { return list.get((int) (msg.getMsgHeader().getPId() % list.size())); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/EventUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/EventUtils.java index be8ab0b..7157628 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/EventUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/EventUtils.java @@ -1,7 +1,7 @@ package com.paradogs.framework.core.utils; import com.paradogs.framework.core.annoations.rpc.PRRPCResponseResolver; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; @@ -41,7 +41,7 @@ public class EventUtils implements ApplicationEventPublisherAware { * @param promise * @param */ - public static void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { + public static void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { SpringUtils.getBean(PRRPCResponseResolver.class).on4Once(route, cgMsgId, returnClass, promise); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java index 3a0a60c..4ccae13 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java @@ -6,7 +6,7 @@ import com.paradogs.framework.core.msg.route.MsgMapping; import com.paradogs.framework.core.netty.server.PRConnection; import com.paradogs.framework.core.netty.server.PRConnectionHolder; import com.paradogs.framework.core.netty.server.ServerProperties; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.ByteBodyMsg; import com.paradogs.framework.core.msg.MsgHeader; import com.paradogs.framework.core.msg.PRMsgContextHolder; @@ -20,7 +20,6 @@ import org.springframework.stereotype.Component; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.List; -import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.stream.Stream; @@ -41,7 +40,7 @@ public class MsgUtils { MsgUtils.serverProperties = serverProperties; } - public static void send(String route, BaseMsg msg) { + public static void send(String route, PRMsg msg) { if (msg.getMsgHeader() == null) { msg.setMsgHeader(new MsgHeader()); if (StringUtils.isBlank(route)) { @@ -88,7 +87,7 @@ public class MsgUtils { log.warn("Channel is null, route: {}", route); } } - public static void send(String route, BaseMsg msg, Channel channel) { + public static void send(String route, PRMsg msg, Channel channel) { if (msg.getMsgHeader() == null) { msg.setMsgHeader(new MsgHeader()); } @@ -102,7 +101,7 @@ public class MsgUtils { log.warn("Channel is null, route: {}", route); } } - public static void send(BaseMsg msg) { + public static void send(PRMsg msg) { MsgUtils.send(msg.getMsgHeader().getRoute(), msg); } @@ -110,7 +109,7 @@ public class MsgUtils { * 转发消息 * @param msg */ - public static void forward(BaseMsg msg) { + public static void forward(PRMsg msg) { msg.getMsgHeader().setSendServer(PRConnectionHolder.getConnKey(PRMsgContextHolder.getChannel())); MsgUtils.send(msg); } @@ -122,7 +121,7 @@ public class MsgUtils { * @param returnClass 返回结果的消息类型 * @param */ - public static CompletableFuture request(String route, T msg, Class returnClass, CompletableFuture promise) { + public static CompletableFuture request(String route, T msg, Class returnClass, CompletableFuture promise) { if (msg.getMsgHeader() == null) { msg.setMsgHeader(new MsgHeader()); @@ -133,7 +132,7 @@ public class MsgUtils { EventUtils.on4Once(route, msg.getMsgHeader().getId(), returnClass, promise); return promise; } - public static CompletableFuture request(String route, T msg, Class returnClass) { + public static CompletableFuture request(String route, T msg, Class returnClass) { CompletableFuture promise = new CompletableFuture<>(); request(route, msg, returnClass, promise); return promise; @@ -175,7 +174,7 @@ public class MsgUtils { log.warn("Not found Mapping Method, route: {}", RouteUtils.getPath(header.getRoute())); return; } - Class msgClass = PRMsgMappingHolder.getMsgMappingClass(RouteUtils.getPath(header.getRoute())); + Class msgClass = PRMsgMappingHolder.getMsgMappingClass(RouteUtils.getPath(header.getRoute())); /** * 执行对应 Handler 方法 @@ -199,7 +198,7 @@ public class MsgUtils { if (msgClass.isAssignableFrom(ByteBodyMsg.class)) { return msg; } else { - BaseMsg param = ProtoUtils.decode(msg.getDataBytes(), msgClass); + PRMsg param = ProtoUtils.decode(msg.getDataBytes(), msgClass); param.setMsgHeader(msg.getMsgHeader()); return param; } @@ -221,13 +220,13 @@ public class MsgUtils { */ CompletableFuture future = (CompletableFuture) result; future.thenAccept(gc -> { - if (!(gc instanceof BaseMsg)) { + if (!(gc instanceof PRMsg)) { log.error("CompletableFuture! result GC not extends BaseMsg: {}", method.getName()); return; } // !! 如果把请求参数返回,返回值的类会和请求参数地址一样,英文就是 msg == gcMsg // 准备返回消息 - BaseMsg gcMsg = (BaseMsg) gc; + PRMsg gcMsg = (PRMsg) gc; MsgHeader gcHeader = new MsgHeader(); gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); gcMsg.setMsgHeader(gcHeader); @@ -235,12 +234,12 @@ public class MsgUtils { // 发送 GC MsgUtils.send(header.getSendServer() + RouteUtils.SERVER_SEPARATOR + "_paradogs.callback", gcMsg); }); - } else if (result instanceof BaseMsg) { + } else if (result instanceof PRMsg) { /** * 正常 GC */ // 返回消息 - BaseMsg gcMsg = (BaseMsg) result; + PRMsg gcMsg = (PRMsg) result; MsgHeader gcHeader = new MsgHeader(); gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); gcMsg.setMsgHeader(gcHeader); diff --git a/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index f0b76f3..a448e29 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,15 +1,9 @@ -com.paradogs.framework.core.config.NettyConfiguration - -com.paradogs.framework.core.config.UtilsConfiguration - -com.paradogs.framework.core.config.RPCConfiguration - -com.paradogs.framework.core.config.QueueConfiguration - com.paradogs.framework.core.CoreStarter com.paradogs.framework.core.strategy.GatewayRandomLoadBalancerStrategy +com.paradogs.framework.core.config.UtilsConfiguration + diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java index 2a9b317..1dea704 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java @@ -2,18 +2,16 @@ package com.paradogs.framework.master; import com.paradogs.framework.core.annoations.request.PRController; import com.paradogs.framework.core.annoations.request.PRMsgMapping; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.netty.server.PRConnection; import com.paradogs.framework.core.netty.server.PRConnectionHolder; import com.paradogs.framework.core.strategy.GatewayLoadBalancerStrategy; -import com.paradogs.framework.core.strategy.GatewayRandomLoadBalancerStrategy; import com.paradogs.framework.master.pojo.AllocGatewayVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import java.net.InetSocketAddress; -import java.net.SocketAddress; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; @@ -60,8 +58,8 @@ public class MasterController { } @PRMsgMapping("hello") - public BaseMsg hello() { + public PRMsg hello() { log.info("receive hello..."); - return new BaseMsg(); + return new PRMsg(); } } diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java index 01c382c..e62e5ac 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java @@ -1,6 +1,6 @@ package com.paradogs.framework.master.pojo; -import com.paradogs.framework.core.msg.BaseMsg; +import com.paradogs.framework.core.msg.PRMsg; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -13,7 +13,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class AllocGatewayVO extends BaseMsg { +public class AllocGatewayVO extends PRMsg { /** * 是否 diff --git a/paradogs-generator/pom.xml b/paradogs-generator/pom.xml index d29a9b8..f363f25 100644 --- a/paradogs-generator/pom.xml +++ b/paradogs-generator/pom.xml @@ -33,6 +33,10 @@ org.freemarker freemarker
+ + com.paradogs + paradogs-framework-core + \ No newline at end of file diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/CodeGenerator.java b/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java similarity index 98% rename from paradogs-generator/src/main/java/com/paradogs/generator/CodeGenerator.java rename to paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java index a095b34..2fa2c3c 100644 --- a/paradogs-generator/src/main/java/com/paradogs/generator/CodeGenerator.java +++ b/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java @@ -12,7 +12,7 @@ import java.util.Collections; * @date: 2023/11/14 10:00 * @Description: TODO */ -public class CodeGenerator { +public class DBEntityGenerator { public static void main(String[] args) { String test = System.getProperty("user.dir") + "/src/main/java"; FastAutoGenerator.create("jdbc:mysql://120.26.15.12:3306/paradogs_game?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8", diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/ProtobufIDLGenerator.java b/paradogs-generator/src/main/java/com/paradogs/generator/ProtobufIDLGenerator.java new file mode 100644 index 0000000..f0b9243 --- /dev/null +++ b/paradogs-generator/src/main/java/com/paradogs/generator/ProtobufIDLGenerator.java @@ -0,0 +1,22 @@ +package com.paradogs.generator; + +import com.paradogs.generator.utils.GeneratorUtils; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import java.nio.file.Paths; + +/** + * @author: yumi + * @date: 2023/11/18 10:23 + * @Description: 通过 java 实体类生成 .proto 文件 + */ +@SpringBootApplication +public class ProtobufIDLGenerator { + public static void main(String[] args) { + SpringApplication.run(ProtobufIDLGenerator.class, args); + String outDir = Paths.get(System.getProperty("user.dir"), "proto").toString(); + String[] scanPackages = new String[]{"com.paradogs.framework.core"}; + GeneratorUtils.generatorIDL(outDir, scanPackages); + } +} diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntityScanner.java b/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntityScanner.java new file mode 100644 index 0000000..ecd1c71 --- /dev/null +++ b/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntityScanner.java @@ -0,0 +1,66 @@ +package com.paradogs.generator.idl; + +import com.paradogs.framework.core.annoations.base.BaseScanner; +import com.paradogs.framework.core.msg.PRMsg; +import com.paradogs.framework.core.msg.CGMsg; +import com.paradogs.framework.core.msg.GCMsg; +import com.paradogs.framework.core.msg.MsgHeader; +import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; +import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.core.type.classreading.MetadataReader; + +import java.io.IOException; +import java.util.Arrays; + +/** + * @author: yumi + * @date: 2023/8/25 15:54 + * @Description: TODO + */ +public class ProtoEntityScanner extends BaseScanner { + + public ProtoEntityScanner(BeanDefinitionRegistry registry) { + super(registry); + } + + /** + * 是否为可添加 bean,返回接口类型 + * 可以用 TypeFilter 加,但 TypeFilter 只能指定类,未知的动态类无法处理 + * hasMetaAnnotation() 可以读到注解中的注解信息,hasAnnotation() 只能读取当前 Class 上的注解 + * @param metadataReader + * @return + * @throws IOException + */ + @Override + protected boolean isCandidateComponent(MetadataReader metadataReader) { + if (metadataReader.getClassMetadata().hasSuperClass()) { + String superClassName = metadataReader.getClassMetadata().getSuperClassName(); + if (superClassName.equals(PRMsg.class.getName()) + || superClassName.equals(CGMsg.class.getName()) + || superClassName.equals(GCMsg.class.getName())) { + return true; + } + } + + Class[] excludeClasses = new Class[]{MsgHeader.class}; // 手动添加指定类 + if (Arrays.stream(excludeClasses).anyMatch(clz -> metadataReader.getClassMetadata().getClassName().equals(clz.getName()))) { + return true; + } + + return false; + } + + /** + * @param beanDefinition 一个 bean + * @return + */ + @Override + protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) { + return true; + } + + @Override + public boolean isNeedRegister() { + return true; + } +} diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntitySelector.java b/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntitySelector.java new file mode 100644 index 0000000..70db9d0 --- /dev/null +++ b/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntitySelector.java @@ -0,0 +1,75 @@ +package com.paradogs.generator.idl; + + +import com.baidu.bjf.remoting.protobuf.ProtobufIDLGenerator; +import com.paradogs.framework.core.annoations.base.BaseScanner; +import com.paradogs.framework.core.annoations.base.BaseSelector; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.beans.factory.support.DefaultListableBeanFactory; +import org.springframework.stereotype.Component; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.HashSet; +import java.util.Set; + +/** + * @author: yumi + * @date: 2023/11/18 10:55 + * @Description: TODO + */ +@Slf4j +@Component +public class ProtoEntitySelector extends BaseSelector { + + @Setter + private String generatorDir; + + @Setter + private String[] scanPackages; + + private Set> cachedTypes = new HashSet<>(); + + private Set> cachedEnumTypes = new HashSet<>(); + + @Override + public String[] getScanPackages() { + return scanPackages; + } + + @Override + public BaseScanner getScanner(BeanFactory beanFactory) { + return new ProtoEntityScanner((DefaultListableBeanFactory) beanFactory); + } + + /** + * 生成 .proto 文件 + * @param beanDefinition + */ + @Override + public void handle(BeanDefinition beanDefinition) { + try { + Class beanClass = Class.forName(beanDefinition.getBeanClassName()); + String filename = beanClass.getSimpleName() + ".proto"; // 文件名 + String code = ProtobufIDLGenerator.getIDL(beanClass, cachedTypes, cachedEnumTypes); // 文件内容 + Path targetDirectory = Paths.get(this.generatorDir); + Path filePath = targetDirectory.resolve(filename); + + // 确保目录存在 + Files.createDirectories(targetDirectory); + + // 写入内容到文件 + Files.write(filePath, code.getBytes()); + log.info("生成文件: {}/{}", generatorDir, filename); + + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/utils/GeneratorUtils.java b/paradogs-generator/src/main/java/com/paradogs/generator/utils/GeneratorUtils.java new file mode 100644 index 0000000..23f4085 --- /dev/null +++ b/paradogs-generator/src/main/java/com/paradogs/generator/utils/GeneratorUtils.java @@ -0,0 +1,28 @@ +package com.paradogs.generator.utils; + +import com.paradogs.framework.core.utils.SpringUtils; +import com.paradogs.generator.idl.ProtoEntitySelector; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/11/18 11:21 + * @Description: TODO + */ +public class GeneratorUtils { + + /** + * 生成 .proto 文件 + * @param outDir .proto 文件输出路径 + * @param scanPackages 扫描包路径 + */ + public static void generatorIDL(String outDir, String[] scanPackages) { + // 要从 Spring 中获取,才会注入 beanFactory + ProtoEntitySelector selector = SpringUtils.getBean(ProtoEntitySelector.class); + selector.setGeneratorDir(outDir); + selector.setScanPackages(scanPackages); + selector.scanAndHandle(); + + + } +} diff --git a/paradogs-generator/src/main/resources/application.yml b/paradogs-generator/src/main/resources/application.yml new file mode 100644 index 0000000..88ad834 --- /dev/null +++ b/paradogs-generator/src/main/resources/application.yml @@ -0,0 +1,11 @@ +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://120.26.15.12:3306/paradogs_game?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8 + username: root + password: ningensama122 + +logging: + level: + # 指定的包路径 + com.paradogs: debug \ No newline at end of file -- Gitee From d7768a1d7d1edf41781c076ab4aa169e62ba0ecd Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Mon, 20 Nov 2023 10:45:42 +0800 Subject: [PATCH 26/32] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BC=A0=E8=BE=93?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E7=BB=93=E6=9E=84=E4=BF=AE=E6=94=B9=EF=BC=8C?= =?UTF-8?q?=E5=88=86=E7=A6=BB=20header=20=E5=92=8C=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/client/DemoClientApplication.java | 28 +----- .../com/paradogs/test/client/demo/Client.java | 5 +- .../paradogs/test/client/pojo/CGLogin.java | 5 +- .../demo/gateway/pojo/CGPrepareLogin.java | 5 +- .../login/controller/LoginController.java | 1 - .../paradogs/demo/login/pojo/cg/CGLogin.java | 5 +- .../demo/login/pojo/cg/CGPrepareLogin.java | 5 +- .../demo/login/pojo/gc/GCAllocGateway.java | 5 +- .../PRConnectorServerMsgHandler.java | 6 +- .../request/PRMsgMappingHolder.java | 2 +- .../request/PRRequestInterfaceSelector.java | 20 ++-- .../annoations/rpc/PRRPCProxyInterceptor.java | 99 ++++++++++--------- .../annoations/rpc/PRRPCResponseResolver.java | 14 ++- .../core/events/RPCRequestEvent.java | 4 +- .../framework/core/events/RPCRespEvent.java | 6 +- .../core/events/ReceiveMsgEvent.java | 5 +- .../msg/{ByteBodyMsg.java => ByteData.java} | 14 ++- .../paradogs/framework/core/msg/CGMsg.java | 16 --- .../framework/core/msg/CGTestMsg.java | 19 ---- .../framework/core/msg/CommonController.java | 2 +- .../paradogs/framework/core/msg/GCMsg.java | 17 ---- .../framework/core/msg/GCTestMsg.java | 16 --- .../paradogs/framework/core/msg/PRMsg.java | 79 ++++++++++++--- .../com/paradogs/framework/core/msg/R.java | 4 +- .../paradogs/framework/core/msg/VoidMsg.java | 9 -- .../framework/core/msg/route/MsgMapping.java | 2 +- .../netty/PRAbstractClientMsgHandler.java | 2 +- .../core/netty/PRAbstractMsgHandler.java | 17 ++-- .../netty/PRAbstractServerMsgHandler.java | 2 +- .../framework/core/netty/PRCodec.java | 20 +--- .../core/netty/PRDefaultMsgHandler.java | 3 +- .../clients/PRMasterClientMsgHandler.java | 7 +- .../core/netty/server/ServerProperties.java | 5 +- .../framework/core/pojo/Connection.java | 4 +- .../framework/core/pojo/entity/Player.java | 4 +- .../core/queue/AbstractMsgConsumer.java | 4 +- .../core/queue/MsgDefaultConsumer.java | 4 +- .../framework/core/queue/PRQueueHolder.java | 5 +- .../framework/core/utils/MsgUtils.java | 56 +++++------ .../framework/core/utils/ProtoUtils.java | 4 + .../framework/master/MasterMsgConsumer.java | 10 +- .../framework/master/pojo/AllocGatewayVO.java | 4 +- .../framework/server/ServerMsgConsumer.java | 6 +- .../generator/idl/ProtoEntityScanner.java | 6 +- .../java/com/paradogs/generator/test.java | 13 +++ 45 files changed, 276 insertions(+), 293 deletions(-) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/{ByteBodyMsg.java => ByteData.java} (51%) delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGTestMsg.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCMsg.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCTestMsg.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/VoidMsg.java create mode 100644 paradogs-generator/src/main/java/com/paradogs/generator/test.java diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java index 4b2cd54..e1ab2fe 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java @@ -1,7 +1,9 @@ package com.paradogs.test.client; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.MsgHeader; +import com.paradogs.framework.core.netty.PRCodec; import com.paradogs.test.client.demo.Client; import com.paradogs.test.client.pojo.CGLogin; import io.netty.bootstrap.Bootstrap; @@ -47,32 +49,12 @@ public class DemoClientApplication { channel.pipeline().addLast(new LengthFieldPrepender(2)); - channel.pipeline().addLast(new ByteToMessageCodec() { - @Override - protected void encode(ChannelHandlerContext ctx, PRMsg msg, ByteBuf out) throws Exception { - msg.getMsgHeader().serialization(out); - - msg.serialization(out); - } - - @Override - protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { - MsgHeader msgHeader = new MsgHeader(); - msgHeader.deserialization(in); - - PRMsg PRMsg = new PRMsg(); - - PRMsg.deserialization(in); - PRMsg.setMsgHeader(msgHeader); - - out.add(PRMsg); - } - }); + channel.pipeline().addLast(new PRCodec()); // addLast() 加入越晚的出栈时越先执行 - channel.pipeline().addLast(new SimpleChannelInboundHandler() { + channel.pipeline().addLast(new SimpleChannelInboundHandler() { @Override - protected void channelRead0(ChannelHandlerContext ctx, PRMsg msg) throws Exception { + protected void channelRead0(ChannelHandlerContext ctx, ByteData msg) throws Exception { log.info("receive {}", msg.toString()); } }); diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java index 97512a0..64492e7 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java @@ -13,7 +13,8 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public class Client { - public static void send(Channel channel, String route, PRMsg msg) { + public static void send(Channel channel, String route, T data) { + PRMsg msg = new PRMsg(data); if (msg == null) { msg = new PRMsg(); } @@ -24,7 +25,7 @@ public class Client { if (channel != null) { channel.writeAndFlush(msg); - log.debug(">>>>> [{}] ", msg.getMsgHeader().getRoute()); + log.info(">>>>> [{}] ", msg.getMsgHeader().getRoute()); } else { log.warn("channel is null, route: {}", route); } diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/pojo/CGLogin.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/pojo/CGLogin.java index dc65c94..04fdde2 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/pojo/CGLogin.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/pojo/CGLogin.java @@ -1,6 +1,6 @@ package com.paradogs.test.client.pojo; -import com.paradogs.framework.core.msg.CGMsg; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -13,7 +13,8 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class CGLogin extends CGMsg { +@ProtobufClass +public class CGLogin { /** * 账号 diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/pojo/CGPrepareLogin.java b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/pojo/CGPrepareLogin.java index 2428d22..0cfabf8 100644 --- a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/pojo/CGPrepareLogin.java +++ b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/pojo/CGPrepareLogin.java @@ -1,6 +1,6 @@ package com.paradogs.demo.gateway.pojo; -import com.paradogs.framework.core.msg.CGMsg; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -13,7 +13,8 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class CGPrepareLogin extends CGMsg { +@ProtobufClass +public class CGPrepareLogin { private String token; diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java index 05487f5..3929469 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java @@ -57,7 +57,6 @@ public class LoginController { return gcAllocGateway; }).thenApply(gcAllocGateway -> { - GCAllocGateway vo = (GCAllocGateway)gcAllocGateway; // 申请一个可以连接的网关 if (!vo.isSuccess()) { diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGLogin.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGLogin.java index f4ce314..c6a8079 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGLogin.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGLogin.java @@ -1,6 +1,6 @@ package com.paradogs.demo.login.pojo.cg; -import com.paradogs.framework.core.msg.CGMsg; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.Data; /** @@ -9,7 +9,8 @@ import lombok.Data; * @Description: TODO */ @Data -public class CGLogin extends CGMsg { +@ProtobufClass +public class CGLogin { /** * 账号 diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGPrepareLogin.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGPrepareLogin.java index aa809be..8e11dd6 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGPrepareLogin.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGPrepareLogin.java @@ -1,6 +1,6 @@ package com.paradogs.demo.login.pojo.cg; -import com.paradogs.framework.core.msg.CGMsg; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -13,7 +13,8 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class CGPrepareLogin extends CGMsg { +@ProtobufClass +public class CGPrepareLogin { private String token; diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java index 2cb53de..4d812d1 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java @@ -1,6 +1,6 @@ package com.paradogs.demo.login.pojo.gc; -import com.paradogs.framework.core.msg.GCMsg; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -13,7 +13,8 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class GCAllocGateway extends GCMsg { +@ProtobufClass +public class GCAllocGateway { /** * 是否 diff --git a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java index 3830f42..3487a2b 100644 --- a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java +++ b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java @@ -1,6 +1,6 @@ package com.paradogs.framework.connector; -import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.netty.PRAbstractServerMsgHandler; import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.utils.MsgUtils; @@ -17,13 +17,13 @@ import org.springframework.stereotype.Component; @Slf4j @Component @ChannelHandler.Sharable -public class PRConnectorServerMsgHandler extends PRAbstractServerMsgHandler { +public class PRConnectorServerMsgHandler extends PRAbstractServerMsgHandler { @Autowired private ServerProperties serverProperties; @Override - protected void processMsg(ByteBodyMsg msg) throws Exception { + protected void processMsg(ByteData msg) throws Exception { // 发给自己的消息直接处理 if (msg.getMsgHeader().getServer().equals(serverProperties.getType())) { MsgUtils.adapterHandle(msg); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java index 153896d..155295a 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMappingHolder.java @@ -35,7 +35,7 @@ public class PRMsgMappingHolder { * @param route * @return */ - public static Class getMsgMappingClass(String route) { + public static Class getMsgMappingClass(String route) { MsgMapping msgMapping = PRMsgMappingHolder.getMsgMapping(route); if (msgMapping == null || msgMapping.getMsgClass() == null || msgMapping.getMsgClass().isAssignableFrom(void.class)) { return null; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java index 1625030..e58e6a3 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java @@ -51,19 +51,23 @@ public class PRRequestInterfaceSelector extends BaseImportSelector { } // 保存 Msg 类型和要执行的方法 - Class targetMsgClass = null; + Class targetMsgClass = null; for (Parameter parameter : method.getParameters()) { if (parameter.getAnnotation(com.paradogs.framework.core.annoations.request.PRMsg.class) != null) { - targetMsgClass = (Class) parameter.getType(); + targetMsgClass = parameter.getType(); } else { - // 如果只有一个 BaseMsg 参数,自动优化添加,等于加了 PdgMsg - List baseMsgList = Stream.of(method.getParameters()). - filter(param -> PRMsg.class.isAssignableFrom(param.getType())) - .collect(Collectors.toList()); - if (baseMsgList.size() == 1) { - targetMsgClass = (Class) parameter.getType(); + // 如果找不到 @PRMsg 修饰,默认第一个参数为消息 + if (method.getParameters().length > 0) { + targetMsgClass = parameter.getType(); } +// // 如果只有一个 BaseMsg 参数,自动优化添加,等于加了 PdgMsg +// List baseMsgList = Stream.of(method.getParameters()). +// filter(param -> PRMsg.class.isAssignableFrom(param.getType())) +// .collect(Collectors.toList()); +// if (baseMsgList.size() == 1) { +// targetMsgClass = (Class) parameter.getType(); +// } } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java index ab8b189..562566e 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java @@ -36,63 +36,68 @@ public class PRRPCProxyInterceptor implements MethodInterceptor { @Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { - PRRPCMapping PRRPCMapping = AnnotationUtils.findAnnotation(method, PRRPCMapping.class); - if (PRRPCMapping == null) { - return methodProxy.invokeSuper(obj, args); - } + try { + PRRPCMapping PRRPCMapping = AnnotationUtils.findAnnotation(method, PRRPCMapping.class); + if (PRRPCMapping == null) { + return methodProxy.invokeSuper(obj, args); + } - // 获取被代理目标的真实 class - Class targetClass = obj.getClass(); - boolean aopProxy = AopUtils.isAopProxy(obj); - if (aopProxy) { - targetClass = AopUtils.getTargetClass(obj); - } + // 获取被代理目标的真实 class + Class targetClass = obj.getClass(); + boolean aopProxy = AopUtils.isAopProxy(obj); + if (aopProxy) { + targetClass = AopUtils.getTargetClass(obj); + } - PRRPC PRRPC = AnnotationUtils.findAnnotation(targetClass, PRRPC.class); + PRRPC PRRPC = AnnotationUtils.findAnnotation(targetClass, PRRPC.class); - // 获得参数消息 - PRMsg requestMsg = null; - Parameter[] parameters = method.getParameters(); - for (int i = 0; i < parameters.length; i++) { - com.paradogs.framework.core.annoations.request.PRMsg requestAnnotation = AnnotationUtils.findAnnotation(parameters[i], com.paradogs.framework.core.annoations.request.PRMsg.class); - if (requestAnnotation != null) { - try { - requestMsg = (PRMsg) args[i]; - } catch (Exception e) { - throw new RuntimeException("@PdgMsg arg must extends BaseMsg: " + method.getName()); - } finally { - break; + // 获得参数消息 + Object requestData = null; + Parameter[] parameters = method.getParameters(); + for (int i = 0; i < parameters.length; i++) { + com.paradogs.framework.core.annoations.request.PRMsg requestAnnotation = AnnotationUtils.findAnnotation(parameters[i], com.paradogs.framework.core.annoations.request.PRMsg.class); + if (requestAnnotation != null) { + try { + requestData = args[i]; + } catch (Exception e) { + throw new RuntimeException("@PdgMsg arg must extends BaseMsg: " + method.getName()); + } finally { + break; + } } } - } - // 如果只有一个参数,则默认视为被 @PRMsg 修饰 - if (requestMsg == null && parameters.length == 1 && PRMsg.class.isAssignableFrom(parameters[0].getType())) { - requestMsg = (PRMsg) args[0]; - } + // 如果只有一个参数,则默认视为被 @PRMsg 修饰 + if (requestData == null && parameters.length == 1) { + requestData = args[0]; + } - // 获得返回值类型 - Class returnType = null; - try { - returnType = (Class) ReflectUtils.getGenericReturnType(method); - if (returnType == null) { - returnType = (Class) method.getReturnType(); + // 获得返回值类型 + Class returnType = null; + try { + returnType = ReflectUtils.getGenericReturnType(method); + if (returnType == null) { + returnType = method.getReturnType(); + } + } catch (Exception e) { + throw new RuntimeException("ReturnType[" + method.getReturnType() + "] must extends BaseMsg: " + method.getName()); } - } catch (Exception e) { - throw new RuntimeException("ReturnType[" + method.getReturnType() + "] must extends BaseMsg: " + method.getName()); - } - CompletableFuture promise = new CompletableFuture<>(); + CompletableFuture promise = new CompletableFuture<>(); - // 解耦 MsgUtils - EventUtils.publishEvent(new RPCRequestEvent( - PRRPC.value() + RouteUtils.SERVER_SEPARATOR + PRRPCMapping.value(), - requestMsg != null ? requestMsg : new PRMsg(), - returnType, - promise - )); + // 解耦 MsgUtils + EventUtils.publishEvent(new RPCRequestEvent( + PRRPC.value() + RouteUtils.SERVER_SEPARATOR + PRRPCMapping.value(), + requestData, + returnType, + promise + )); - PRMsg result = promise.get();// 阻塞等待 + Object result = promise.get();// 阻塞等待 + return result; // 类型不对应可能会导致回调失败并且没有抛异常 - return result; + } catch (Exception e) { + log.error("{}", e.getMessage(), e); + } + return null; } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java index 2c4ac5a..2367060 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java @@ -2,7 +2,7 @@ package com.paradogs.framework.core.annoations.rpc; import com.paradogs.framework.core.events.RPCRespEvent; import com.paradogs.framework.core.msg.PRMsg; -import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.PRMsgContextHolder; import com.paradogs.framework.core.utils.ProtoUtils; import lombok.AllArgsConstructor; @@ -34,13 +34,12 @@ public class PRRPCResponseResolver { /** * 监听 rpc 响应 * @param event - * @param */ @EventListener(RPCRespEvent.class) - private void onRpcMsgResponse(RPCRespEvent event) { + private void onRpcMsgResponse(RPCRespEvent event) { Long key = event.getMsg().getMsgHeader().getReplyMsgId(); - ByteBodyMsg byteBodyMsg = event.getMsg(); + ByteData byteData = event.getMsg(); PRRPCHolder.getMappingMap(); try { @@ -51,19 +50,18 @@ public class PRRPCResponseResolver { return; } if (respInfo.getPromise() == null) { - log.warn(""); + log.warn("Promise == null"); return; } // 解码消息体数据 - PRMsg msg = ProtoUtils.decode(byteBodyMsg.getDataBytes(), (Class)respInfo.getReturnClass()); - msg.setMsgHeader(byteBodyMsg.getMsgHeader()); + Object data = ProtoUtils.decode(byteData.getDataBytes(), respInfo.getReturnClass()); // 设置上下文 PRMsgContextHolder.setContext(respInfo.getMsgContextHolder()); // 标记任务完成,执行回调 - boolean isSuccess = respInfo.getPromise().complete(msg); + boolean isSuccess = respInfo.getPromise().complete(data); if (!isSuccess) {log.error("Callback promise invoke is fail: {}", respInfo);} } catch (Exception e) { diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java index f9c4b81..de5fcb3 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java @@ -16,9 +16,9 @@ import java.util.concurrent.CompletableFuture; @Data @AllArgsConstructor @NoArgsConstructor -public class RPCRequestEvent extends AnonEvent { +public class RPCRequestEvent extends AnonEvent { private String route; - private T msg; + private T data; private Class returnClass; private CompletableFuture promise; } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java index c0b7bd0..bc08a75 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java @@ -1,7 +1,7 @@ package com.paradogs.framework.core.events; import com.paradogs.framework.core.events.base.AnonEvent; -import com.paradogs.framework.core.msg.PRMsg; +import com.paradogs.framework.core.msg.ByteData; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -14,8 +14,8 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class RPCRespEvent extends AnonEvent { +public class RPCRespEvent extends AnonEvent { - private T msg; + private ByteData msg; } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java index 3e7a85b..ef6ca0a 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java @@ -1,6 +1,7 @@ package com.paradogs.framework.core.events; import com.paradogs.framework.core.events.base.AnonEvent; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.PRMsg; import lombok.AllArgsConstructor; import lombok.Data; @@ -14,8 +15,8 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class ReceiveMsgEvent extends AnonEvent { +public class ReceiveMsgEvent extends AnonEvent { - private T msg; + private ByteData msg; } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteBodyMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteData.java similarity index 51% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteBodyMsg.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteData.java index 1d78618..19c3486 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteBodyMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteData.java @@ -1,5 +1,8 @@ package com.paradogs.framework.core.msg; +import com.baidu.bjf.remoting.protobuf.FieldType; +import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import io.netty.buffer.ByteBuf; import lombok.Data; @@ -11,8 +14,12 @@ import java.io.IOException; * @Description: TODO */ @Data -public class ByteBodyMsg extends PRMsg { +public class ByteData implements IMsgSerializable { + @Protobuf(fieldType = FieldType.OBJECT, order = 1) + private MsgHeader msgHeader; + + @Protobuf(fieldType = FieldType.BYTES, order = 2) private byte[] dataBytes; @Override @@ -26,4 +33,9 @@ public class ByteBodyMsg extends PRMsg { in.readBytes(this.dataBytes); } + @Override + public void deserialization(byte[] bytes) throws IOException { + this.dataBytes = bytes; + } + } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java deleted file mode 100644 index c6817f3..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGMsg.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.paradogs.framework.core.msg; - -import lombok.Data; -import lombok.ToString; - - -/** - * @author: yumi - * @date: 2023/2/15 21:15 - * @Description: TODO - */ -@Data -@ToString(callSuper = true) -public class CGMsg extends PRMsg { - -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGTestMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGTestMsg.java deleted file mode 100644 index 31dd484..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CGTestMsg.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.paradogs.framework.core.msg; - -import lombok.*; - -/** - * @author: yumi - * @date: 2023/8/1 9:28 - * @Description: TODO - */ - -@Data -@AllArgsConstructor -@NoArgsConstructor -@ToString(callSuper = true) -public class CGTestMsg extends CGMsg { - - private String str; - -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java index d0bd681..a968839 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java @@ -30,7 +30,7 @@ public class CommonController { * @param msg */ @PRMsgMapping("callback") - public void callback(ByteBodyMsg msg) { + public void callback(ByteData msg) { if (msg.getMsgHeader().getReplyMsgId() == null) { log.error("Not found Callback header.replyMsgId: {}", msg); return; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCMsg.java deleted file mode 100644 index 6a1533f..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCMsg.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.paradogs.framework.core.msg; - -import lombok.Data; - -/** - * @author: yumi - * @date: 2023/2/16 23:27 - * @Description: TODO - */ -@Data -public abstract class GCMsg extends PRMsg { - - /** - * 回复的 CG 消息 ID - */ - private Long targetCGMsgId; -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCTestMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCTestMsg.java deleted file mode 100644 index be0e42b..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCTestMsg.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.paradogs.framework.core.msg; - -import lombok.AllArgsConstructor; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023/8/8 13:40 - * @Description: TODO - */ -@Data -@AllArgsConstructor -public class GCTestMsg extends GCMsg { - - private String data; -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java index eddd405..e7c67c6 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java @@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.paradogs.framework.core.utils.BeanUtils; import com.paradogs.framework.core.utils.ProtoUtils; import io.netty.buffer.ByteBuf; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.io.IOException; @@ -19,27 +21,43 @@ import java.io.IOException; */ //@Slf4j 不能加,jprotobuf 会自动解析所有属性 @Data -@ProtobufClass -public class PRMsg implements IMsgSerializable { +@AllArgsConstructor +@NoArgsConstructor +public class PRMsg { + /** + * 消息头 + */ @TableField(exist = false) @Protobuf(fieldType = FieldType.OBJECT, order = 1) private MsgHeader msgHeader; + /** + * 消息数据 + */ + @Protobuf(fieldType = FieldType.OBJECT, order = 2) private Object msgData; + public PRMsg(T data) { + this.msgHeader = new MsgHeader(); + this.msgData = data; + } /** - * 序列化(编码 - * ps: BaseMsg 的 JProtobuf 序列化时,this 指向 BaseMsg(实际运行会指向子类),无法通过编译,需要额外处理 (ProtoUtils), - * 不指定 Codec<> 的泛型虽然可以通过编译但是无法正确的编解码 + * 序列化(编码) * @param out */ - @Override public void serialization(ByteBuf out) { - byte[] bytes = ProtoUtils.encode(this); + // 字节消息特殊处理 + if (this.msgData instanceof byte[]) { + out.writeBytes((byte[]) this.msgData); + return; + } + // 待优化:基本数据类型特殊处理 + // 写入消息体 + byte[] bytes = ProtoUtils.encode(this.msgData); out.writeBytes(bytes); } @@ -48,21 +66,52 @@ public class PRMsg implements IMsgSerializable { * 反序列化(解码) * @param in */ - @Override - public void deserialization(ByteBuf in) throws IOException { + public void deserialization(ByteBuf in, Class clz) throws IOException { // 读取消息体 byte 数组 byte[] bytes = new byte[in.readableBytes()]; in.readBytes(bytes); - this.deserialization(bytes); + this.deserialization(bytes, clz); } - @Override - public void deserialization(byte[] bytes) { - PRMsg msg = ProtoUtils.decode(bytes, this.getClass()); - // 将属性设置到类上 - BeanUtils.copyProperties(msg, this); + public void deserialization(byte[] bytes, Class clz) { + this.msgData = ProtoUtils.decode(bytes, clz); } + +// /** +// * 序列化(编码) +// * ps: BaseMsg 的 JProtobuf 序列化时,this 指向 BaseMsg(实际运行会指向子类),无法通过编译,需要额外处理 (ProtoUtils), +// * 不指定 Codec<> 的泛型虽然可以通过编译但是无法正确的编解码 +// * @param out +// */ +// @Override +// public void serialization(ByteBuf out) { +// +// byte[] bytes = ProtoUtils.encode(this); +// // 写入消息体 +// out.writeBytes(bytes); +// +// } +// +// /** +// * 反序列化(解码) +// * @param in +// */ +// @Override +// public void deserialization(ByteBuf in) throws IOException { +// // 读取消息体 byte 数组 +// byte[] bytes = new byte[in.readableBytes()]; +// in.readBytes(bytes); +// this.deserialization(bytes); +// } +// +// @Override +// public void deserialization(byte[] bytes) { +// PRMsg msg = ProtoUtils.decode(bytes, this.getClass()); +// // 将属性设置到类上 +// BeanUtils.copyProperties(msg, this); +// } + public void setMsgHeader(MsgHeader msgHeader) { this.msgHeader = msgHeader; } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java index dffa325..d2b58f4 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java @@ -1,5 +1,6 @@ package com.paradogs.framework.core.msg; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.Data; import lombok.NoArgsConstructor; @@ -10,7 +11,8 @@ import lombok.NoArgsConstructor; */ @Data @NoArgsConstructor // 必须要有无参构造,JProtobuf 才能编码 -public class R extends PRMsg { +@ProtobufClass +public class R { /** * 消息码 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/VoidMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/VoidMsg.java deleted file mode 100644 index c405966..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/VoidMsg.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.paradogs.framework.core.msg; - -/** - * @author: yumi - * @date: 2023/8/26 16:10 - * @Description: TODO - */ -public class VoidMsg extends PRMsg { -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java index e986b76..f501ec6 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java @@ -17,7 +17,7 @@ import java.lang.reflect.Method; @NoArgsConstructor public class MsgMapping { - private Class msgClass; + private Class msgClass; private Method method; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientMsgHandler.java index 2f867a2..036067b 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientMsgHandler.java @@ -5,6 +5,6 @@ package com.paradogs.framework.core.netty; * @date: 2023/11/3 11:18 * @Description: TODO */ -public abstract class PRAbstractClientMsgHandler extends PRAbstractMsgHandler { +public abstract class PRAbstractClientMsgHandler extends PRAbstractMsgHandler { } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java index e4feeda..4c68cbc 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java @@ -2,7 +2,7 @@ package com.paradogs.framework.core.netty; import com.paradogs.framework.core.events.ReceiveMsgEvent; import com.paradogs.framework.core.exceptions.GlobalExceptionDispatch; -import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.PRMsgContextHolder; import com.paradogs.framework.core.msg.MsgHeader; import com.paradogs.framework.core.netty.server.PRConnectionHolder; @@ -13,7 +13,6 @@ import com.paradogs.framework.core.utils.StringUtils; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import lombok.extern.slf4j.Slf4j; -import org.springframework.jdbc.datasource.ConnectionHolder; /** * @author: yumi @@ -21,19 +20,19 @@ import org.springframework.jdbc.datasource.ConnectionHolder; * @Description: 消息加入到 MAIN 处理队列 */ @Slf4j -public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler { +public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler { /** * 消息处理 */ - protected void processMsg(ByteBodyMsg msg) throws Exception { + protected void processMsg(ByteData msg) throws Exception { PRQueueHolder.putMsg(PRQueueHolder.QueueType.MAIN, msg); } /** * 设置自定义参数 */ - protected void setProps(ChannelHandlerContext ctx, ByteBodyMsg msg) { + protected void setProps(ChannelHandlerContext ctx, ByteData msg) { MsgHeader header = msg.getMsgHeader(); header.setPId(1L); if (StringUtils.isBlank(header.getSendServer())) { // 有值代表网关转发,已经设置过 @@ -46,7 +45,7 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler(msg)); + EventUtils.publishEvent(new ReceiveMsgEvent(msg)); } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerMsgHandler.java index 2a552dc..2c93812 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerMsgHandler.java @@ -5,5 +5,5 @@ package com.paradogs.framework.core.netty; * @date: 2023/11/3 11:18 * @Description: TODO */ -public abstract class PRAbstractServerMsgHandler extends PRAbstractMsgHandler { +public abstract class PRAbstractServerMsgHandler extends PRAbstractMsgHandler { } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java index d2320dc..96545e8 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java @@ -1,7 +1,7 @@ package com.paradogs.framework.core.netty; import com.paradogs.framework.core.msg.PRMsg; -import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.MsgHeader; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; @@ -39,22 +39,12 @@ public class PRCodec extends ByteToMessageCodec { MsgHeader msgHeader = new MsgHeader(); msgHeader.deserialization(in); -// // 获取消息实际类型 -// MsgMapping msgMapping = PdgRequestHolder.getMappingMap().get(msgHeader.getRouteMethod()); -// if (msgMapping == null) { -// msgMapping = PdgRPCHolder.getMappingMap().get(msgHeader.getRouteMethod()); -// } - -// BaseMsg baseMsg = msgMapping != null && msgMapping.getMsgClass() != null && !msgMapping.getMsgClass().isAssignableFrom(void.class) -// ? msgMapping.getMsgClass().newInstance() -// : new ByteBodyMsg(); - // 消息体暂时不解析,放 MsgHandler 中解析 - PRMsg PRMsg = new ByteBodyMsg(); - PRMsg.deserialization(in); - PRMsg.setMsgHeader(msgHeader); + ByteData byteDataMsg = new ByteData(); + byteDataMsg.deserialization(in); + byteDataMsg.setMsgHeader(msgHeader); - out.add(PRMsg); + out.add(byteDataMsg); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultMsgHandler.java index 40a619e..d47edbd 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultMsgHandler.java @@ -1,5 +1,6 @@ package com.paradogs.framework.core.netty; +import com.paradogs.framework.core.msg.ByteData; import io.netty.channel.ChannelHandler; /** @@ -8,5 +9,5 @@ import io.netty.channel.ChannelHandler; * @Description: TODO */ @ChannelHandler.Sharable -public class PRDefaultMsgHandler extends PRAbstractServerMsgHandler { +public class PRDefaultMsgHandler extends PRAbstractServerMsgHandler { } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientMsgHandler.java index 75c7ff8..662f792 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientMsgHandler.java @@ -1,8 +1,7 @@ package com.paradogs.framework.core.netty.clients; -import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.netty.PRAbstractClientMsgHandler; -import com.paradogs.framework.core.netty.server.PRConnection; import com.paradogs.framework.core.netty.server.PRConnectionHolder; import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.utils.MsgUtils; @@ -19,13 +18,13 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component -public class PRMasterClientMsgHandler extends PRAbstractClientMsgHandler { +public class PRMasterClientMsgHandler extends PRAbstractClientMsgHandler { @Autowired private MasterClientProperties masterClientProperties; @Override - protected void processMsg(ByteBodyMsg msg) throws Exception { + protected void processMsg(ByteData msg) throws Exception { MsgUtils.adapterHandle(msg); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/ServerProperties.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/ServerProperties.java index bc00f4b..4214b4e 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/ServerProperties.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/ServerProperties.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.netty.server; -import com.paradogs.framework.core.msg.CGMsg; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -24,8 +24,9 @@ import java.util.UUID; @AllArgsConstructor @NoArgsConstructor @ToString(callSuper = true) +@ProtobufClass @ConfigurationProperties("paradogs.server") -public class ServerProperties extends CGMsg { +public class ServerProperties { /** * 端口 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java index d257f02..6d7d79e 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java @@ -1,5 +1,6 @@ package com.paradogs.framework.core.pojo; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.paradogs.framework.core.msg.PRMsg; import io.netty.channel.Channel; import lombok.Data; @@ -15,7 +16,8 @@ import java.net.InetSocketAddress; */ @Slf4j @Data -public class Connection extends PRMsg { +@ProtobufClass +public class Connection { /** * 通道 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java index 39bddf8..3b827bf 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java @@ -1,5 +1,6 @@ package com.paradogs.framework.core.pojo.entity; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -21,7 +22,8 @@ import lombok.ToString; @Setter @ToString(callSuper = true) @TableName("g_player") -public class Player extends PRMsg { +@ProtobufClass +public class Player { private static final long serialVersionUID = 1L; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/AbstractMsgConsumer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/AbstractMsgConsumer.java index 0b427c8..a826c37 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/AbstractMsgConsumer.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/AbstractMsgConsumer.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.queue; -import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.netty.events.MainLoopEvent; import com.paradogs.framework.core.utils.EventUtils; @@ -9,7 +9,7 @@ import com.paradogs.framework.core.utils.EventUtils; * @date: 2023/11/6 17:35 * @Description: TODO */ -public abstract class AbstractMsgConsumer extends QueueConsumerThread { +public abstract class AbstractMsgConsumer extends QueueConsumerThread { private MainLoopEvent mainLoopEvent = new MainLoopEvent(); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/MsgDefaultConsumer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/MsgDefaultConsumer.java index 8498a59..c02f50d 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/MsgDefaultConsumer.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/MsgDefaultConsumer.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.queue; -import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.utils.MsgUtils; import lombok.extern.slf4j.Slf4j; @@ -19,7 +19,7 @@ public class MsgDefaultConsumer extends AbstractMsgConsumer { * @param msg */ @Override - public void handle(ByteBodyMsg msg) throws InvocationTargetException, IllegalAccessException { + public void handle(ByteData msg) throws InvocationTargetException, IllegalAccessException { MsgUtils.adapterHandle(msg); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java index dc3bc8a..4c78507 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java @@ -1,5 +1,6 @@ package com.paradogs.framework.core.queue; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.utils.SpringUtils; import lombok.Getter; @@ -83,7 +84,7 @@ public class PRQueueHolder implements ApplicationRunner { } } - public static void putMsg(QueueType queueType, PRMsg msg) throws InterruptedException { + public static void putMsg(QueueType queueType, ByteData msg) throws InterruptedException { balance(consumerMap.get(queueType), msg).produce(msg); } @@ -91,7 +92,7 @@ public class PRQueueHolder implements ApplicationRunner { * 待优化,负载均衡规则,可以换成一个接口 * @return */ - private static QueueConsumerThread balance(List list, PRMsg msg) { + private static QueueConsumerThread balance(List list, ByteData msg) { return list.get((int) (msg.getMsgHeader().getPId() % list.size())); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java index 4ccae13..4556fb7 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java @@ -7,7 +7,7 @@ import com.paradogs.framework.core.netty.server.PRConnection; import com.paradogs.framework.core.netty.server.PRConnectionHolder; import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.msg.PRMsg; -import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.MsgHeader; import com.paradogs.framework.core.msg.PRMsgContextHolder; import io.netty.channel.Channel; @@ -40,7 +40,8 @@ public class MsgUtils { MsgUtils.serverProperties = serverProperties; } - public static void send(String route, PRMsg msg) { + public static void send(String route, MsgHeader header, T data) { + PRMsg msg = new PRMsg(header, data); if (msg.getMsgHeader() == null) { msg.setMsgHeader(new MsgHeader()); if (StringUtils.isBlank(route)) { @@ -87,10 +88,8 @@ public class MsgUtils { log.warn("Channel is null, route: {}", route); } } - public static void send(String route, PRMsg msg, Channel channel) { - if (msg.getMsgHeader() == null) { - msg.setMsgHeader(new MsgHeader()); - } + public static void send(String route, T data, Channel channel) { + PRMsg msg = new PRMsg(data); if (StringUtils.isBlank(msg.getMsgHeader().getRoute())) { msg.getMsgHeader().setRoute(route); } @@ -101,31 +100,30 @@ public class MsgUtils { log.warn("Channel is null, route: {}", route); } } - public static void send(PRMsg msg) { - MsgUtils.send(msg.getMsgHeader().getRoute(), msg); + public static void send(String route, PRMsg msg) { + MsgUtils.send(route, msg.getMsgHeader(), msg.getMsgData()); } /** * 转发消息 * @param msg */ - public static void forward(PRMsg msg) { + public static void forward(ByteData msg) { msg.getMsgHeader().setSendServer(PRConnectionHolder.getConnKey(PRMsgContextHolder.getChannel())); - MsgUtils.send(msg); + MsgUtils.send(msg.getMsgHeader().getRoute(), msg.getMsgHeader(), msg.getDataBytes()); } /** * 发起 rpc 请求 * @param route 路由地址 - * @param msg 发送数据 + * @param data 发送数据 * @param returnClass 返回结果的消息类型 * @param */ - public static CompletableFuture request(String route, T msg, Class returnClass, CompletableFuture promise) { + public static CompletableFuture request(String route, T data, Class returnClass, CompletableFuture promise) { + + PRMsg msg = new PRMsg(data); - if (msg.getMsgHeader() == null) { - msg.setMsgHeader(new MsgHeader()); - } // 发起请求 MsgUtils.send(route, msg); // 开启响应监听 @@ -155,7 +153,7 @@ public class MsgUtils { @EventListener(RPCRequestEvent.class) public void onRPCRequestEvent(RPCRequestEvent event) { - MsgUtils.request(event.getRoute(), event.getMsg(), event.getReturnClass(), event.getPromise()); + MsgUtils.request(event.getRoute(), event.getData(), event.getReturnClass(), event.getPromise()); } /** @@ -164,7 +162,7 @@ public class MsgUtils { * @throws InvocationTargetException * @throws IllegalAccessException */ - public static void adapterHandle(ByteBodyMsg msg) throws InvocationTargetException, IllegalAccessException { + public static void adapterHandle(ByteData msg) throws InvocationTargetException, IllegalAccessException { MsgHeader header = msg.getMsgHeader(); @@ -174,7 +172,7 @@ public class MsgUtils { log.warn("Not found Mapping Method, route: {}", RouteUtils.getPath(header.getRoute())); return; } - Class msgClass = PRMsgMappingHolder.getMsgMappingClass(RouteUtils.getPath(header.getRoute())); + Class msgClass = PRMsgMappingHolder.getMsgMappingClass(RouteUtils.getPath(header.getRoute())); /** * 执行对应 Handler 方法 @@ -195,12 +193,11 @@ public class MsgUtils { .map(type -> { // 转换为参数类型传参 if (type.isAssignableFrom(msgClass)) { - if (msgClass.isAssignableFrom(ByteBodyMsg.class)) { + if (msgClass.isAssignableFrom(ByteData.class)) { return msg; } else { - PRMsg param = ProtoUtils.decode(msg.getDataBytes(), msgClass); - param.setMsgHeader(msg.getMsgHeader()); - return param; + // 传入 data 参数 + return ProtoUtils.decode(msg.getDataBytes(), msgClass); } } return null; @@ -219,35 +216,30 @@ public class MsgUtils { * 异步回调型 GC */ CompletableFuture future = (CompletableFuture) result; - future.thenAccept(gc -> { - if (!(gc instanceof PRMsg)) { - log.error("CompletableFuture! result GC not extends BaseMsg: {}", method.getName()); + future.thenAccept(gcData -> { + if (gcData == null) { return; } // !! 如果把请求参数返回,返回值的类会和请求参数地址一样,英文就是 msg == gcMsg // 准备返回消息 - PRMsg gcMsg = (PRMsg) gc; MsgHeader gcHeader = new MsgHeader(); gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); - gcMsg.setMsgHeader(gcHeader); + PRMsg gcMsg = new PRMsg(gcHeader, gcData); // 发送 GC MsgUtils.send(header.getSendServer() + RouteUtils.SERVER_SEPARATOR + "_paradogs.callback", gcMsg); }); - } else if (result instanceof PRMsg) { + } else { /** * 正常 GC */ // 返回消息 - PRMsg gcMsg = (PRMsg) result; MsgHeader gcHeader = new MsgHeader(); gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); - gcMsg.setMsgHeader(gcHeader); + PRMsg gcMsg = new PRMsg(gcHeader, result); // 发送 GC MsgUtils.send(header.getSendServer() + RouteUtils.SERVER_SEPARATOR + "_paradogs.callback", gcMsg); - } else { - log.error("GC not extends BaseMsg: {}", method.getName()); } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java index ddc5a08..cb15387 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java @@ -27,6 +27,10 @@ public class ProtoUtils { */ public static byte[] encode(T obj) { + if (obj == null) { + return new byte[0]; + } + if (!codecMap.containsKey(obj.getClass())) { codecMap.put(obj.getClass(), ProtobufProxy.create(obj.getClass())); } diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgConsumer.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgConsumer.java index 7298a9f..371ebd9 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgConsumer.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgConsumer.java @@ -1,6 +1,6 @@ package com.paradogs.framework.master; -import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.MsgHeader; import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.queue.AbstractMsgConsumer; @@ -27,21 +27,21 @@ public class MasterMsgConsumer extends AbstractMsgConsumer { private ServerProperties serverProperties; @Override - public void handle(ByteBodyMsg byteBodyMsg) throws InvocationTargetException, IllegalAccessException { + public void handle(ByteData byteData) throws InvocationTargetException, IllegalAccessException { - MsgHeader header = byteBodyMsg.getMsgHeader(); + MsgHeader header = byteData.getMsgHeader(); /** * 发给自己的消息直接处理 */ if (header.getServer().equals(serverProperties.getType())) { - MsgUtils.adapterHandle(byteBodyMsg); + MsgUtils.adapterHandle(byteData); return; } /** * 其他 RPC 消息通过 Master 进行转发 */ - MsgUtils.forward(byteBodyMsg); + MsgUtils.forward(byteData); } } diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java index e62e5ac..5290979 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java @@ -1,5 +1,6 @@ package com.paradogs.framework.master.pojo; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.paradogs.framework.core.msg.PRMsg; import lombok.AllArgsConstructor; import lombok.Data; @@ -13,7 +14,8 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class AllocGatewayVO extends PRMsg { +@ProtobufClass +public class AllocGatewayVO { /** * 是否 diff --git a/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerMsgConsumer.java b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerMsgConsumer.java index d34bea4..15f94e1 100644 --- a/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerMsgConsumer.java +++ b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerMsgConsumer.java @@ -1,6 +1,6 @@ package com.paradogs.framework.server; -import com.paradogs.framework.core.msg.ByteBodyMsg; +import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.queue.AbstractMsgConsumer; import com.paradogs.framework.core.utils.MsgUtils; @@ -26,11 +26,11 @@ public class ServerMsgConsumer extends AbstractMsgConsumer { private ServerProperties serverProperties; @Override - public void handle(ByteBodyMsg byteBodyMsg) throws InvocationTargetException, IllegalAccessException { + public void handle(ByteData byteData) throws InvocationTargetException, IllegalAccessException { /** * 找到对应的 Controller 处理 */ - MsgUtils.adapterHandle(byteBodyMsg); + MsgUtils.adapterHandle(byteData); } } diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntityScanner.java b/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntityScanner.java index ecd1c71..94a8048 100644 --- a/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntityScanner.java +++ b/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntityScanner.java @@ -2,8 +2,6 @@ package com.paradogs.generator.idl; import com.paradogs.framework.core.annoations.base.BaseScanner; import com.paradogs.framework.core.msg.PRMsg; -import com.paradogs.framework.core.msg.CGMsg; -import com.paradogs.framework.core.msg.GCMsg; import com.paradogs.framework.core.msg.MsgHeader; import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionRegistry; @@ -35,9 +33,7 @@ public class ProtoEntityScanner extends BaseScanner { protected boolean isCandidateComponent(MetadataReader metadataReader) { if (metadataReader.getClassMetadata().hasSuperClass()) { String superClassName = metadataReader.getClassMetadata().getSuperClassName(); - if (superClassName.equals(PRMsg.class.getName()) - || superClassName.equals(CGMsg.class.getName()) - || superClassName.equals(GCMsg.class.getName())) { + if (superClassName.equals(PRMsg.class.getName())) { return true; } } diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/test.java b/paradogs-generator/src/main/java/com/paradogs/generator/test.java new file mode 100644 index 0000000..a075115 --- /dev/null +++ b/paradogs-generator/src/main/java/com/paradogs/generator/test.java @@ -0,0 +1,13 @@ +package com.paradogs.generator; + +/** + * @author: yumi + * @date: 2023/11/20 10:28 + * @Description: TODO + */ +public class test { + public static void main(String[] args) { + byte[] bs = new byte[0]; + System.out.println(bs.getClass()); + } +} -- Gitee From fdf7e8852566f2cde80eb7a26072513bd0b325a8 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Mon, 20 Nov 2023 11:46:22 +0800 Subject: [PATCH 27/32] save --- .../core/config/MybatisPlusConfiguration.java | 35 +++++++++++++++++++ .../core/config/NettyConfiguration.java | 3 +- .../core/config/QueueConfiguration.java | 3 +- .../core/config/RPCConfiguration.java | 3 +- .../core/config/UtilsConfiguration.java | 2 ++ .../framework/core/mapper/PlayerMapper.java | 7 ++-- .../core/msg/BaseMsg_CmdVersion.java | 1 - .../core/pojo/entity/BaseEntity.java | 35 +++++++++++++++++++ .../framework/core/utils/ProtoUtils.java | 2 ++ .../paradogs/generator/DBEntityGenerator.java | 3 +- .../generator/idl/ProtoEntityScanner.java | 10 ++---- .../generator/idl/ProtoEntitySelector.java | 3 +- proto/BaseMsg_CmdVersion.proto | 12 +++++++ proto/Connection.proto | 19 ++++++++++ proto/MsgHeader.proto | 9 +++++ proto/Player.proto | 9 +++++ proto/R.proto | 10 ++++++ proto/ServerProperties.proto | 9 +++++ 18 files changed, 157 insertions(+), 18 deletions(-) create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/MybatisPlusConfiguration.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/BaseEntity.java create mode 100644 proto/BaseMsg_CmdVersion.proto create mode 100644 proto/Connection.proto create mode 100644 proto/MsgHeader.proto create mode 100644 proto/Player.proto create mode 100644 proto/R.proto create mode 100644 proto/ServerProperties.proto diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/MybatisPlusConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/MybatisPlusConfiguration.java new file mode 100644 index 0000000..7aa59cc --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/MybatisPlusConfiguration.java @@ -0,0 +1,35 @@ +package com.paradogs.framework.core.config; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.cglib.core.Local; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.time.LocalDateTime; + +/** + * @author: yumi + * @date: 2023/11/20 11:17 + * @Description: TODO + */ +@Configuration +public class MybatisPlusConfiguration { + + @Bean + public MetaObjectHandler metaObjectHandler() { + return new MetaObjectHandler() { + @Override + public void insertFill(MetaObject metaObject) { + this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 插入时填充 createTime + this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 插入时填充 updateTime + } + + @Override + public void updateFill(MetaObject metaObject) { + this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 更新时填充 updateTime + } + }; + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java index 29c7505..173a208 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java @@ -10,6 +10,7 @@ import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.netty.*; import com.paradogs.framework.core.utils.MsgUtils; import com.paradogs.framework.core.utils.PRAsync; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -20,7 +21,7 @@ import org.springframework.context.annotation.Scope; * @date: 2023/8/26 17:22 * @Description: TODO */ -@Configuration +@AutoConfiguration // @AutoConfiguration 与 @Configuration 作用相同?,规范使用,代表自动装配 public class NettyConfiguration { @Bean diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/QueueConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/QueueConfiguration.java index f4aba16..45d2599 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/QueueConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/QueueConfiguration.java @@ -4,6 +4,7 @@ import com.paradogs.framework.core.queue.AbstractMsgConsumer; import com.paradogs.framework.core.queue.MsgDefaultConsumer; import com.paradogs.framework.core.queue.PRQueueHolder; import com.paradogs.framework.core.queue.QueueProperties; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -14,7 +15,7 @@ import org.springframework.context.annotation.Scope; * @date: 2023/8/3 11:21 * @Description: TODO */ -@Configuration +@AutoConfiguration public class QueueConfiguration { @Bean diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/RPCConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/RPCConfiguration.java index dbcd33d..abbd185 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/RPCConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/RPCConfiguration.java @@ -2,6 +2,7 @@ package com.paradogs.framework.core.config; import com.paradogs.framework.core.annoations.rpc.PRRPCResponseResolver; import com.paradogs.framework.core.msg.CommonController; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -10,7 +11,7 @@ import org.springframework.context.annotation.Configuration; * @date: 2023/8/28 14:32 * @Description: TODO */ -@Configuration +@AutoConfiguration public class RPCConfiguration { @Bean diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java index c4edee7..ed01aa8 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/UtilsConfiguration.java @@ -4,6 +4,7 @@ import com.paradogs.framework.core.utils.EventUtils; import com.paradogs.framework.core.utils.MsgUtils; import com.paradogs.framework.core.utils.PRAsync; import com.paradogs.framework.core.utils.SpringUtils; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.context.annotation.Bean; /** @@ -11,6 +12,7 @@ import org.springframework.context.annotation.Bean; * @date: 2023/8/26 17:28 * @Description: TODO */ +@AutoConfiguration public class UtilsConfiguration { @Bean diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/mapper/PlayerMapper.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/mapper/PlayerMapper.java index 8ba842c..d18e0e1 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/mapper/PlayerMapper.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/mapper/PlayerMapper.java @@ -1,16 +1,15 @@ package com.paradogs.framework.core.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.paradogs.framework.core.pojo.entity.Player; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** *

* Mapper 接口 *

* - * @author author - * @since 2023-11-16 + * @author yumi + * @since 2023-11-20 */ public interface PlayerMapper extends BaseMapper { diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg_CmdVersion.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg_CmdVersion.java index f203c82..817de9f 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg_CmdVersion.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/BaseMsg_CmdVersion.java @@ -16,7 +16,6 @@ import java.io.IOException; * @Description: 基础消息类,通过约定类名实现反射自动调用, * this 在子类使用时会指向子类对象,从而实现子类不需要实现接口就能自动转换 */ -//@Slf4j 不能加,jprotobuf 会自动解析所有属性 @Data @ProtobufClass @Deprecated diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/BaseEntity.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/BaseEntity.java new file mode 100644 index 0000000..6e5b1d3 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/BaseEntity.java @@ -0,0 +1,35 @@ +package com.paradogs.framework.core.pojo.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.time.LocalDateTime; + +/** + * @author: yumi + * @date: 2023/11/20 11:01 + * @Description: TODO + */ +public class BaseEntity { + + /** + * 玩家 ID + */ + @TableId(value = "uid", type = IdType.AUTO) + private Long uid; + + /** + * 创建时间 + */ + @TableField(value = "createTime", fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField(value = "updateTime", fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java index cb15387..19f2bd4 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java @@ -16,6 +16,8 @@ public class ProtoUtils { /** * 优化效率,避免每次都创建一个编解码器,享元模式? + * !! jprotobuf encode() 源码内部自带了缓存,所以其实不需要自己缓存了, + * 可以直接 ProtobufProxy.create(clz).encode() */ public static Map, Codec> codecMap = new ConcurrentHashMap<>(); diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java b/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java index 2fa2c3c..a62f798 100644 --- a/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java +++ b/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; +import com.paradogs.framework.core.pojo.entity.BaseEntity; import java.util.Collections; @@ -35,7 +36,7 @@ public class DBEntityGenerator { .addTablePrefix("g_") .entityBuilder() .enableLombok() - .superClass("com.paradogs.framework.core.msg.BaseMsg") + .superClass(BaseEntity.class) .enableTableFieldAnnotation() // 增加 @TableField .idType(IdType.AUTO) .build(); diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntityScanner.java b/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntityScanner.java index 94a8048..4a7463a 100644 --- a/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntityScanner.java +++ b/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntityScanner.java @@ -1,5 +1,6 @@ package com.paradogs.generator.idl; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.paradogs.framework.core.annoations.base.BaseScanner; import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.MsgHeader; @@ -31,19 +32,12 @@ public class ProtoEntityScanner extends BaseScanner { */ @Override protected boolean isCandidateComponent(MetadataReader metadataReader) { - if (metadataReader.getClassMetadata().hasSuperClass()) { - String superClassName = metadataReader.getClassMetadata().getSuperClassName(); - if (superClassName.equals(PRMsg.class.getName())) { - return true; - } - } - Class[] excludeClasses = new Class[]{MsgHeader.class}; // 手动添加指定类 if (Arrays.stream(excludeClasses).anyMatch(clz -> metadataReader.getClassMetadata().getClassName().equals(clz.getName()))) { return true; } - return false; + return metadataReader.getAnnotationMetadata().hasAnnotation(ProtobufClass.class.getName()); } /** diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntitySelector.java b/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntitySelector.java index 70db9d0..8ba2127 100644 --- a/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntitySelector.java +++ b/paradogs-generator/src/main/java/com/paradogs/generator/idl/ProtoEntitySelector.java @@ -56,7 +56,8 @@ public class ProtoEntitySelector extends BaseSelector { try { Class beanClass = Class.forName(beanDefinition.getBeanClassName()); String filename = beanClass.getSimpleName() + ".proto"; // 文件名 - String code = ProtobufIDLGenerator.getIDL(beanClass, cachedTypes, cachedEnumTypes); // 文件内容 +// String code = ProtobufIDLGenerator.getIDL(beanClass, cachedTypes, cachedEnumTypes); // 文件内容 + String code = ProtobufIDLGenerator.getIDL(beanClass); Path targetDirectory = Paths.get(this.generatorDir); Path filePath = targetDirectory.resolve(filename); diff --git a/proto/BaseMsg_CmdVersion.proto b/proto/BaseMsg_CmdVersion.proto new file mode 100644 index 0000000..3cc4255 --- /dev/null +++ b/proto/BaseMsg_CmdVersion.proto @@ -0,0 +1,12 @@ +syntax="proto3"; +package com.paradogs.framework.core.msg; +option java_outer_classname = "BaseMsg_CmdVersion$$ByJProtobuf"; +message BaseMsg_CmdVersion { + MsgHeader msgHeader=1; +} +message MsgHeader { + int64 id=1; + string route=2; + string sendServer=3; + int64 replyMsgId=4; +} diff --git a/proto/Connection.proto b/proto/Connection.proto new file mode 100644 index 0000000..eb88e08 --- /dev/null +++ b/proto/Connection.proto @@ -0,0 +1,19 @@ +syntax="proto3"; +package com.paradogs.framework.core.pojo; +option java_outer_classname = "Connection$$ByJProtobuf"; +message Connection { + Logger log=1; + Channel channel=2; + State state=3; + string targetServer=4; + string targetName=5; +} +enum State { +WAIT_INIT=0; +RUNNING=1; +STOP=2; +} + message Logger { +} +message Channel { +} diff --git a/proto/MsgHeader.proto b/proto/MsgHeader.proto new file mode 100644 index 0000000..362dbd4 --- /dev/null +++ b/proto/MsgHeader.proto @@ -0,0 +1,9 @@ +syntax="proto3"; +package com.paradogs.framework.core.msg; +option java_outer_classname = "MsgHeader$$ByJProtobuf"; +message MsgHeader { + int64 id=1; + string route=2; + string sendServer=3; + int64 replyMsgId=4; +} diff --git a/proto/Player.proto b/proto/Player.proto new file mode 100644 index 0000000..21466b6 --- /dev/null +++ b/proto/Player.proto @@ -0,0 +1,9 @@ +syntax="proto3"; +package com.paradogs.framework.core.pojo.entity; +option java_outer_classname = "Player$$ByJProtobuf"; +message Player { + int64 serialVersionUID=1; + int64 uid=2; + string account=3; + string pwd=4; +} diff --git a/proto/R.proto b/proto/R.proto new file mode 100644 index 0000000..792e51d --- /dev/null +++ b/proto/R.proto @@ -0,0 +1,10 @@ +syntax="proto3"; +package com.paradogs.framework.core.msg; +option java_outer_classname = "R$$ByJProtobuf"; +message R { + int32 code=1; + string msg=2; + Object data=3; +} +message Object { +} diff --git a/proto/ServerProperties.proto b/proto/ServerProperties.proto new file mode 100644 index 0000000..81d078d --- /dev/null +++ b/proto/ServerProperties.proto @@ -0,0 +1,9 @@ +syntax="proto3"; +package com.paradogs.framework.core.netty.server; +option java_outer_classname = "ServerProperties$$ByJProtobuf"; +message ServerProperties { + int32 port=1; + string type=2; + string key=3; + bool master=4; +} -- Gitee From 2c74dc16ec680c6f30b4634c983630dbd1c02916 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Mon, 20 Nov 2023 11:46:32 +0800 Subject: [PATCH 28/32] save --- .../framework/core/pojo/entity/Player.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java index 3b827bf..117e299 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java @@ -1,14 +1,13 @@ package com.paradogs.framework.core.pojo.entity; -import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.paradogs.framework.core.msg.PRMsg; +import com.paradogs.framework.core.pojo.entity.BaseEntity; +import java.io.Serializable; import lombok.Getter; import lombok.Setter; -import lombok.ToString; /** *

@@ -16,20 +15,15 @@ import lombok.ToString; *

* * @author yumi - * @since 2023-11-16 + * @since 2023-11-20 */ @Getter @Setter -@ToString(callSuper = true) @TableName("g_player") -@ProtobufClass -public class Player { +public class Player extends BaseEntity { private static final long serialVersionUID = 1L; - @TableId(value = "uid", type = IdType.AUTO) - private Long uid; - @TableField("account") private String account; -- Gitee From 64be756628323f019477b19eb3f27163ebbaa373 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Mon, 20 Nov 2023 17:35:53 +0800 Subject: [PATCH 29/32] =?UTF-8?q?=E8=B0=83=E6=95=B4=20mybatis-plus=20dao(s?= =?UTF-8?q?ervice)=E3=80=81mapper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/controller/TestController.java | 28 ------------------- .../src/main/resources/application.yml | 19 ++++++++++++- .../login/controller/LoginController.java | 19 +++++++++---- .../paradogs-framework-common}/pom.xml | 8 ++++-- .../framework/common}/entity/BaseEntity.java | 2 +- .../framework/common}/entity/Player.java | 11 ++++---- .../paradogs-framework-core/pom.xml | 22 ++++++--------- .../paradogs/framework/core/CoreStarter.java | 1 + .../core/annoations/EnableParadogs.java | 9 +++--- .../core/config/MybatisPlusConfiguration.java | 10 ++++++- .../core/config/NettyConfiguration.java | 1 + .../events/ServerConnectionInitEvent.java | 2 +- .../exceptions/GlobalExceptionDispatch.java | 5 ++-- .../framework/core/mapper/PlayerMapper.java | 16 ----------- .../core/{pojo => msg}/Connection.java | 2 +- .../framework/core/utils/MsgUtils.java | 6 +++- .../framework/core/utils/PRAsync.java | 8 +++++- paradogs-framework/pom.xml | 1 + .../paradogs/generator/DBEntityGenerator.java | 20 ++++++++----- pom.xml | 8 ++---- 20 files changed, 103 insertions(+), 95 deletions(-) delete mode 100644 paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/controller/TestController.java rename {paradogs-common => paradogs-framework/paradogs-framework-common}/pom.xml (75%) rename paradogs-framework/{paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo => paradogs-framework-common/src/main/java/com/paradogs/framework/common}/entity/BaseEntity.java (93%) rename paradogs-framework/{paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo => paradogs-framework-common/src/main/java/com/paradogs/framework/common}/entity/Player.java (65%) delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/mapper/PlayerMapper.java rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/{pojo => msg}/Connection.java (97%) diff --git a/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/controller/TestController.java b/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/controller/TestController.java deleted file mode 100644 index 2e8bb7f..0000000 --- a/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/controller/TestController.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.paradogs.test.server.controller; - -import com.paradogs.framework.core.annoations.request.PRMsg; -import com.paradogs.framework.core.annoations.request.PRMsgMapping; -import com.paradogs.framework.core.msg.CGTestMsg; -import com.paradogs.framework.core.msg.GCTestMsg; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Controller; - -/** - * @author: yumi - * @date: 2023/8/1 9:29 - * @Description: TODO - */ -@Slf4j -@Controller -@PRMsgMapping("test") -public class TestController { - - @PRMsgMapping("test1") - public GCTestMsg test1(@PRMsg CGTestMsg msg) { - log.info("receive >> {}", msg); -// throw new SerializationException(); - // GC要特制,改成对 player 回复 !!! - return new GCTestMsg("ok ok ok ..."); - } - -} diff --git a/paradogs-demo/paradogs-demo-game/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-game/src/main/resources/application.yml index 5e9f85d..1233c59 100644 --- a/paradogs-demo/paradogs-demo-game/src/main/resources/application.yml +++ b/paradogs-demo/paradogs-demo-game/src/main/resources/application.yml @@ -1,12 +1,29 @@ paradogs: server: - port: 8002 + port: 8090 type: game key: game-1 master: host: localhost port: 8888 +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://120.26.15.12:3306/paradogs_game?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8 + username: root + password: ningensama122 + +mybatis-plus: + mapper-locations: classpath:/mappers/**/*.xml + global-config: + db-config: + id-type: auto + field-strategy: not_empty + table-underline: true + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + # 日志级别配置 logging: level: diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java index 3929469..f400311 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java @@ -1,22 +1,27 @@ package com.paradogs.demo.login.controller; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.paradogs.demo.login.pojo.cg.CGLogin; import com.paradogs.demo.login.pojo.cg.CGPrepareLogin; import com.paradogs.demo.login.pojo.gc.GCAllocGateway; import com.paradogs.demo.login.rpc.GatewayClient; import com.paradogs.demo.login.rpc.MasterClient; +import com.paradogs.framework.common.dao.PlayerDao; +import com.paradogs.framework.common.dao.impl.PlayerDaoImpl; +import com.paradogs.framework.common.entity.Player; +import com.paradogs.framework.common.mapper.PlayerMapper; import com.paradogs.framework.core.annoations.request.PRController; import com.paradogs.framework.core.annoations.request.PRMsgMapping; -import com.paradogs.framework.core.mapper.PlayerMapper; import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.MsgHeader; import com.paradogs.framework.core.msg.PRMsgContextHolder; import com.paradogs.framework.core.msg.R; -import com.paradogs.framework.core.pojo.entity.Player; import com.paradogs.framework.core.utils.PRAsync; +import com.paradogs.framework.core.utils.SpringUtils; import com.paradogs.framework.core.utils.Wrap; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import java.util.UUID; @@ -36,16 +41,20 @@ public class LoginController { private GatewayClient gatewayClient; @Autowired - private PlayerMapper playerMapper; + private PlayerDao playerDao; @PRMsgMapping("login") public void login(CGLogin dto) { + PlayerDao dao = SpringUtils.getBean(PlayerDaoImpl.class); + BaseMapper baseMapper = dao.getBaseMapper(); + BaseMapper baseMapper1 = playerDao.getBaseMapper(); PRAsync.supply(() -> { - Player player = playerMapper.selectOne(Wrap.lbq() + Player player = playerDao.getOne(Wrap.lbq() .eq(Player::getAccount, dto.getAccount()) .eq(Player::getPwd, dto.getPassword())); return player; - }).thenApply(player -> { + }) + .thenApply(player -> { if (player == null) { return R.fail(); diff --git a/paradogs-common/pom.xml b/paradogs-framework/paradogs-framework-common/pom.xml similarity index 75% rename from paradogs-common/pom.xml rename to paradogs-framework/paradogs-framework-common/pom.xml index 3fcd362..2a72eea 100644 --- a/paradogs-common/pom.xml +++ b/paradogs-framework/paradogs-framework-common/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - paradogs + paradogs-framework com.paradogs 0.0.1 4.0.0 - paradogs-common + paradogs-framework-common 8 @@ -21,6 +21,10 @@ com.baomidou mybatis-plus-boot-starter + + org.projectlombok + lombok + \ No newline at end of file diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/BaseEntity.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/BaseEntity.java similarity index 93% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/BaseEntity.java rename to paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/BaseEntity.java index 6e5b1d3..c0e5d9e 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/BaseEntity.java +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/BaseEntity.java @@ -1,4 +1,4 @@ -package com.paradogs.framework.core.pojo.entity; +package com.paradogs.framework.common.entity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/Player.java similarity index 65% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java rename to paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/Player.java index 117e299..e905aed 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/entity/Player.java +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/Player.java @@ -1,12 +1,11 @@ -package com.paradogs.framework.core.pojo.entity; +package com.paradogs.framework.common.entity; -import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.paradogs.framework.core.pojo.entity.BaseEntity; -import java.io.Serializable; + +import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; /** @@ -19,6 +18,8 @@ import lombok.Setter; */ @Getter @Setter +@AllArgsConstructor +@NoArgsConstructor @TableName("g_player") public class Player extends BaseEntity { diff --git a/paradogs-framework/paradogs-framework-core/pom.xml b/paradogs-framework/paradogs-framework-core/pom.xml index 479b347..5038f0d 100644 --- a/paradogs-framework/paradogs-framework-core/pom.xml +++ b/paradogs-framework/paradogs-framework-core/pom.xml @@ -23,35 +23,31 @@ netty-all - - org.projectlombok - lombok - - org.springframework.boot spring-boot-starter - - commons-lang - commons-lang - + + + + com.baidu jprotobuf - - com.baomidou - mybatis-plus-boot-starter - mysql mysql-connector-java + + com.paradogs + paradogs-framework-common + + \ No newline at end of file diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java index 1f83526..f87383e 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java @@ -4,6 +4,7 @@ import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; import com.paradogs.framework.core.netty.clients.PRMasterClient; import com.paradogs.framework.core.netty.server.PRServer; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java index 03d31f5..3422149 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java @@ -2,14 +2,13 @@ package com.paradogs.framework.core.annoations; import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector; import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; -import com.paradogs.framework.core.config.NettyConfiguration; -import com.paradogs.framework.core.config.QueueConfiguration; -import com.paradogs.framework.core.config.RPCConfiguration; -import com.paradogs.framework.core.config.UtilsConfiguration; +import com.paradogs.framework.core.config.*; import com.paradogs.framework.core.netty.clients.PRMasterClient; import com.paradogs.framework.core.netty.server.PRServer; import com.paradogs.framework.core.netty.server.ServerProperties; import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.ComponentScans; import org.springframework.context.annotation.Import; import org.springframework.scheduling.annotation.EnableAsync; @@ -35,8 +34,8 @@ import java.lang.annotation.Target; NettyConfiguration.class, QueueConfiguration.class, RPCConfiguration.class, + MybatisPlusConfiguration.class }) -@MapperScan("com.paradogs.framework.*") public @interface EnableParadogs { // /** diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/MybatisPlusConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/MybatisPlusConfiguration.java index 7aa59cc..d21a324 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/MybatisPlusConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/MybatisPlusConfiguration.java @@ -2,8 +2,9 @@ package com.paradogs.framework.core.config; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; -import org.springframework.cglib.core.Local; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import java.time.LocalDateTime; @@ -14,6 +15,13 @@ import java.time.LocalDateTime; * @Description: TODO */ @Configuration +/** + * mybatis-plus 扫描要精确到 dao 或 mapper,否则自动装配会有问题(dao(service)找不到正确 mapper) + * 可能原因是扫描重叠了,dao(service)也被当成 mapper 自动生成代理实现类了 + * !!! 虽然是微服务,但是所有业务的 dao 都放在一起了,!! 方便单人开发 !!,如果需要正常的微服务操作,可以取消这里的注册,自行在对应服务中编写 dao 和 pojo + */ +@ComponentScan(basePackages = {"com.paradogs.framework.common.dao.*"}) // 要精确到 dao +@MapperScan("com.paradogs.framework.common.mapper") // 不能加 * public class MybatisPlusConfiguration { @Bean diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java index 173a208..dccbd45 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java @@ -13,6 +13,7 @@ import com.paradogs.framework.core.utils.PRAsync; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerConnectionInitEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerConnectionInitEvent.java index 4282dc3..e2b589e 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerConnectionInitEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerConnectionInitEvent.java @@ -1,7 +1,7 @@ package com.paradogs.framework.core.events; import com.paradogs.framework.core.events.base.AnonEvent; -import com.paradogs.framework.core.pojo.Connection; +import com.paradogs.framework.core.msg.Connection; import lombok.Data; /** diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/GlobalExceptionDispatch.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/GlobalExceptionDispatch.java index 09ddc0e..b83a8c1 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/GlobalExceptionDispatch.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/GlobalExceptionDispatch.java @@ -67,8 +67,9 @@ public class GlobalExceptionDispatch { .toArray() ); } catch (Exception e) { - // 可能会死循环 - forward(e.getCause()); + throw new RuntimeException(e); +// // 可能会死循环 +// forward(e.getCause()); } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/mapper/PlayerMapper.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/mapper/PlayerMapper.java deleted file mode 100644 index d18e0e1..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/mapper/PlayerMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.paradogs.framework.core.mapper; - -import com.paradogs.framework.core.pojo.entity.Player; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * Mapper 接口 - *

- * - * @author yumi - * @since 2023-11-20 - */ -public interface PlayerMapper extends BaseMapper { - -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/Connection.java similarity index 97% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/Connection.java index 6d7d79e..45ea504 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/pojo/Connection.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/Connection.java @@ -1,4 +1,4 @@ -package com.paradogs.framework.core.pojo; +package com.paradogs.framework.core.msg; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.paradogs.framework.core.msg.PRMsg; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java index 4556fb7..7cf32ee 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java @@ -215,7 +215,11 @@ public class MsgUtils { /** * 异步回调型 GC */ - CompletableFuture future = (CompletableFuture) result; + CompletableFuture future = (CompletableFuture) result; + future.exceptionally(e -> { + log.error("{}", e.getMessage(), e); + return null; + }); future.thenAccept(gcData -> { if (gcData == null) { return; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/PRAsync.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/PRAsync.java index 79522b8..df6f5dd 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/PRAsync.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/PRAsync.java @@ -1,5 +1,7 @@ package com.paradogs.framework.core.utils; +import com.paradogs.framework.core.exceptions.GlobalExceptionDispatch; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.task.AsyncTaskExecutor; @@ -11,6 +13,7 @@ import java.util.function.Supplier; * @date: 2023/11/16 13:32 * @Description: TODO */ +@Slf4j public class PRAsync { private static AsyncTaskExecutor taskExecutor; @@ -22,7 +25,10 @@ public class PRAsync { public static CompletableFuture supply(Supplier supplier) { - return CompletableFuture.supplyAsync(supplier, taskExecutor); + return CompletableFuture.supplyAsync(supplier, taskExecutor).exceptionally(e -> { + SpringUtils.getBean(GlobalExceptionDispatch.class).forward(e); // 转发到全局异常 + throw new RuntimeException(); // 中断回调 + }); } public static CompletableFuture run(Runnable runnable) { diff --git a/paradogs-framework/pom.xml b/paradogs-framework/pom.xml index 60a7705..070e3ea 100644 --- a/paradogs-framework/pom.xml +++ b/paradogs-framework/pom.xml @@ -15,6 +15,7 @@ paradogs-framework-connector-starter paradogs-framework-server-starter paradogs-framework-master-starter + paradogs-framework-common \ No newline at end of file diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java b/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java index a62f798..829c17c 100644 --- a/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java +++ b/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; -import com.paradogs.framework.core.pojo.entity.BaseEntity; +import com.paradogs.framework.common.entity.BaseEntity; import java.util.Collections; @@ -22,13 +22,15 @@ public class DBEntityGenerator { .globalConfig(builder -> { builder.author("yumi") // 设置作者 .commentDate("yyyy-MM-dd") - .outputDir(System.getProperty("user.dir") + "/paradogs-framework/paradogs-framework-core/src/main/java") // 设置输出目录为项目的src/main/java目录 + .outputDir(System.getProperty("user.dir") + "/paradogs-framework/paradogs-framework-common/src/main/java") // 设置输出目录为项目的src/main/java目录 .fileOverride(); // 覆盖已生成文件 }) .packageConfig(builder -> { - builder.parent("com.paradogs.framework.core") // 设置父包名 - .entity("pojo.entity") - .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/paradogs-framework/paradogs-framework-core/src/main/resources/mapper")); // 设置mapper.xml生成路径 + builder.parent("com.paradogs.framework.common") // 设置父包名 + .entity("entity") + .service("dao") // 输出包路径 + .serviceImpl("dao.impl") + .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/paradogs-framework/paradogs-framework-common/src/main/resources/mapper")); // 设置mapper.xml生成路径 }) .strategyConfig(builder -> { builder @@ -39,11 +41,15 @@ public class DBEntityGenerator { .superClass(BaseEntity.class) .enableTableFieldAnnotation() // 增加 @TableField .idType(IdType.AUTO) + .serviceBuilder() + .formatServiceFileName("%sDao") // 去掉 'I' 前缀,Service 改为 Dao 名称 + .formatServiceImplFileName("%sDaoImpl") .build(); }) .templateConfig(builder -> { - builder.disable(TemplateType.SERVICE) // 禁用 Service 生成 - .disable(TemplateType.SERVICE_IMPL) // 禁用 ServiceImpl 生成 + builder +// .disable(TemplateType.SERVICE) // 禁用 Service 生成 +// .disable(TemplateType.SERVICE_IMPL) // 禁用 ServiceImpl 生成 .disable(TemplateType.CONTROLLER); // 禁用 Controller 生成 }) diff --git a/pom.xml b/pom.xml index ddcca26..666c91a 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,6 @@ paradogs-framework paradogs-demo paradogs-generator - paradogs-common @@ -165,10 +164,9 @@ - commons-lang - commons-lang - 2.4 - compile + com.paradogs + paradogs-framework-common + 0.0.1 -- Gitee From b82472202c51b3755798a64df1a2601c6f8020a9 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Fri, 24 Nov 2023 16:56:42 +0800 Subject: [PATCH 30/32] =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E6=88=90=E5=8A=9F=E8=BF=9E=E6=8E=A5=E7=BD=91=E5=85=B3?= =?UTF-8?q?=E6=9C=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/client/DemoClientApplication.java | 39 ++++++++-- .../gateway/controller/GatewayController.java | 37 +++++++-- .../demo/gateway/misc/PlayerOnlineHolder.java | 75 +++++++++++++++++++ .../demo/login/DemoLoginApplication.java | 5 ++ .../login/controller/LoginController.java | 72 ++++++------------ .../paradogs/demo/login/pojo/db/Player.java | 26 ------- .../demo/login/rpc/GatewayClient.java | 6 +- .../paradogs/demo/login/rpc/MasterClient.java | 4 +- .../demo/master/DemoMasterApplication.java | 2 + .../paradogs-framework-common/pom.xml | 8 ++ .../framework/common/dao/PlayerDao.java | 16 ++++ .../common/dao/impl/PlayerDaoImpl.java | 20 +++++ .../framework/common/entity/Player.java | 1 + .../common/entity/{ => base}/BaseEntity.java | 7 +- .../common/entity/base/PlayerTemplate.java | 47 ++++++++++++ .../common}/events/base/AnonEvent.java | 2 +- .../common}/events/base/BaseEvent.java | 2 +- .../common/manager/PlayerManager.java | 17 +++++ .../common/manager/base/BaseManager.java | 37 +++++++++ .../framework/common/mapper/PlayerMapper.java | 16 ++++ .../common/pojo/cg/CGGatewayLogin.java | 6 +- .../framework/common}/pojo/cg/CGLogin.java | 2 +- .../common/pojo/cg}/CGPrepareLogin.java | 4 +- .../common}/pojo/gc/GCAllocGateway.java | 11 +-- .../main/resources/mapper/PlayerMapper.xml | 5 ++ .../PRConnectorServerMsgHandler.java | 31 ++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 0 .../resources/config/application.yml | 0 .../annoations/rpc/PRRPCProxyInterceptor.java | 18 ++--- .../core/config/NettyConfiguration.java | 5 -- .../core/events/MasterClientActiveEvent.java | 21 ++++++ .../events/MasterClientInactiveEvent.java | 21 ++++++ ...vent.java => PlayerClientActiveEvent.java} | 6 +- ...nt.java => PlayerClientInactiveEvent.java} | 6 +- .../core/events/RPCRequestEvent.java | 2 +- .../framework/core/events/RPCRespEvent.java | 2 +- .../core/events/RPCSyncRequestEvent.java | 24 ------ .../core/events/ReceiveMsgEvent.java | 2 +- .../events/ServerConnectionInitEvent.java | 17 ----- .../core/events/ServerStartEvent.java | 2 +- .../framework/core/events/SyncMsgEvent.java | 30 -------- .../core/exceptions/ServiceException.java | 4 + .../paradogs/framework/core/msg/ByteData.java | 1 + .../framework/core/msg/{R.java => GCAck.java} | 39 ++-------- .../paradogs/framework/core/msg/PRMsg.java | 3 + .../core/msg/PRMsgContextHolder.java | 3 + .../core/netty/PRAbstractMsgHandler.java | 16 +--- .../framework/core/netty/PRCodec.java | 9 ++- .../core/netty/events/ServerEvent.java | 2 +- .../framework/core/queue/PRQueueHolder.java | 4 + .../framework/core/utils/IPUtils.java | 31 ++++++++ .../framework/core/utils/MsgUtils.java | 49 ++++++------ .../framework/master/MasterController.java | 24 ++---- .../framework/master/MasterMsgHandler.java | 53 +++++++++++++ .../framework/master/pojo/AllocGatewayVO.java | 39 ---------- ...ot.autoconfigure.AutoConfiguration.imports | 2 + .../paradogs/generator/DBEntityGenerator.java | 2 +- .../java/com/paradogs/generator/test.java | 13 ---- pom.xml | 7 -- 59 files changed, 594 insertions(+), 361 deletions(-) create mode 100644 paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/misc/PlayerOnlineHolder.java delete mode 100644 paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/db/Player.java create mode 100644 paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/dao/PlayerDao.java create mode 100644 paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/dao/impl/PlayerDaoImpl.java rename paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/{ => base}/BaseEntity.java (81%) create mode 100644 paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/base/PlayerTemplate.java rename paradogs-framework/{paradogs-framework-core/src/main/java/com/paradogs/framework/core => paradogs-framework-common/src/main/java/com/paradogs/framework/common}/events/base/AnonEvent.java (87%) rename paradogs-framework/{paradogs-framework-core/src/main/java/com/paradogs/framework/core => paradogs-framework-common/src/main/java/com/paradogs/framework/common}/events/base/BaseEvent.java (93%) create mode 100644 paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/PlayerManager.java create mode 100644 paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/base/BaseManager.java create mode 100644 paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/mapper/PlayerMapper.java rename paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGPrepareLogin.java => paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGGatewayLogin.java (73%) rename {paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login => paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common}/pojo/cg/CGLogin.java (87%) rename {paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/pojo => paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg}/CGPrepareLogin.java (83%) rename {paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login => paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common}/pojo/gc/GCAllocGateway.java (70%) create mode 100644 paradogs-framework/paradogs-framework-common/src/main/resources/mapper/PlayerMapper.xml rename paradogs-framework/paradogs-framework-connector-starter/src/{ => main}/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (100%) rename paradogs-framework/paradogs-framework-connector-starter/src/{ => main}/resources/config/application.yml (100%) create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientActiveEvent.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientInactiveEvent.java rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/{ChannelActiveEvent.java => PlayerClientActiveEvent.java} (66%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/{ChannelInactiveEvent.java => PlayerClientInactiveEvent.java} (66%) delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCSyncRequestEvent.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerConnectionInitEvent.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/SyncMsgEvent.java rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/{R.java => GCAck.java} (48%) create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/IPUtils.java create mode 100644 paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgHandler.java delete mode 100644 paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java delete mode 100644 paradogs-generator/src/main/java/com/paradogs/generator/test.java diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java index e1ab2fe..7bccc5c 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java @@ -1,20 +1,18 @@ package com.paradogs.test.client; +import com.paradogs.framework.common.pojo.gc.GCAllocGateway; import com.paradogs.framework.core.msg.ByteData; -import com.paradogs.framework.core.msg.PRMsg; -import com.paradogs.framework.core.msg.MsgHeader; import com.paradogs.framework.core.netty.PRCodec; +import com.paradogs.framework.core.utils.ProtoUtils; import com.paradogs.test.client.demo.Client; import com.paradogs.test.client.pojo.CGLogin; import io.netty.bootstrap.Bootstrap; -import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInitializer; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.handler.codec.ByteToMessageCodec; import io.netty.handler.codec.LengthFieldBasedFrameDecoder; import io.netty.handler.codec.LengthFieldPrepender; import lombok.extern.slf4j.Slf4j; @@ -55,7 +53,38 @@ public class DemoClientApplication { channel.pipeline().addLast(new SimpleChannelInboundHandler() { @Override protected void channelRead0(ChannelHandlerContext ctx, ByteData msg) throws Exception { - log.info("receive {}", msg.toString()); + GCAllocGateway result = ProtoUtils.decode(msg.getDataBytes(), GCAllocGateway.class); + log.info("Receive: {}", result); + + Bootstrap client = new Bootstrap() + .group(new NioEventLoopGroup()) + .channel(NioSocketChannel.class) + .handler(new ChannelInitializer() { + @Override + protected void initChannel(NioSocketChannel channel) throws Exception { + channel.pipeline().addLast(new LengthFieldBasedFrameDecoder( + 65534, + 0, + 2, + 0, + 2)); + + channel.pipeline().addLast(new LengthFieldPrepender(2)); + + channel.pipeline().addLast(new PRCodec()); + + // addLast() 加入越晚的出栈时越先执行 + channel.pipeline().addLast(new SimpleChannelInboundHandler() { + @Override + protected void channelRead0(ChannelHandlerContext ctx, ByteData msg) throws Exception { + log.info("Receive: {}", msg); + } + }); + } + }); + Channel gatewayChannel = client.connect(result.getHost(), result.getPort()).sync().channel(); + log.info("Connect Gateway success"); + } }); } diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java index 4173339..eb393fe 100644 --- a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java +++ b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java @@ -1,10 +1,15 @@ package com.paradogs.demo.gateway.controller; -import com.paradogs.demo.gateway.pojo.CGPrepareLogin; +import com.paradogs.demo.gateway.misc.PlayerOnlineHolder; +import com.paradogs.framework.common.entity.base.PlayerTemplate; +import com.paradogs.framework.common.pojo.cg.CGGatewayLogin; +import com.paradogs.framework.common.pojo.cg.CGLogin; +import com.paradogs.framework.common.pojo.cg.CGPrepareLogin; import com.paradogs.framework.core.annoations.request.PRController; import com.paradogs.framework.core.annoations.request.PRMsgMapping; -import com.paradogs.framework.core.msg.R; +import com.paradogs.framework.core.msg.GCAck; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; /** * @author: yumi @@ -15,14 +20,32 @@ import lombok.extern.slf4j.Slf4j; @PRController public class GatewayController { + @Autowired + private PlayerOnlineHolder playerOnlineHolder; + /** - * 玩家准备从登录服转移连接到网关服 - * @param cg + * 玩家准备从登录服转移连接到网关服,待优化:这里要防止玩家调用 + * @param msg */ @PRMsgMapping("prepareLogin") - public R prepareLogin(CGPrepareLogin cg) { - log.info("PrepareLogin ----------------------------- {}", cg.getToken()); - return R.success(); + public GCAck prepareLogin(CGPrepareLogin msg) { + playerOnlineHolder.willLogin(msg.getUid(), msg.getToken()); + return GCAck.success(); + } + + /** + * 玩家携带 token 登录 + * @param msg + * @return + */ + @PRMsgMapping("login") + public GCAck login(CGGatewayLogin msg) { + boolean result = playerOnlineHolder.login(msg.getToken()); + if (result) { + return GCAck.success(); + } else { + return GCAck.fail(); + } } } diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/misc/PlayerOnlineHolder.java b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/misc/PlayerOnlineHolder.java new file mode 100644 index 0000000..59f37c0 --- /dev/null +++ b/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/misc/PlayerOnlineHolder.java @@ -0,0 +1,75 @@ +package com.paradogs.demo.gateway.misc; + +import com.paradogs.framework.common.entity.base.PlayerTemplate; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +/** + * @author: yumi + * @date: 2023/11/23 14:35 + * @Description: TODO + */ +@Slf4j +@Component +public class PlayerOnlineHolder { + + /** + * 准备登录的玩家 + */ + private Map willLoginMap = new HashMap<>(); + + /** + * 在线玩家 + */ + private Map onlinePlayerMap = new HashMap<>(); + + + public void willLogin(Long uid, String token) { + willLoginMap.put(token, new WillLoginInfo(uid, token)); + } + + public boolean login(String token) { + if (willLoginMap.containsKey(token)) { + WillLoginInfo info = willLoginMap.remove(token); + PlayerTemplate playerTemplate = new PlayerTemplate(info.getUid()); + onlinePlayerMap.put(playerTemplate.getUid(), playerTemplate); + log.info("!!! Player login !!! uid: {}, {}", playerTemplate.getUid(), playerTemplate); + return true; + } + return false; + } + + @Data + public class WillLoginInfo { + /** + * 登录凭证 + */ + private String token; + /** + * 玩家 ID + */ + private Long uid; + /** + * 创建时间 + */ + private LocalDateTime createTime; + /** + * 超时时间 + */ + private LocalDateTime expireTime; + + public WillLoginInfo(Long uid, String token) { + this.token = token; + this.uid = uid; + this.createTime = LocalDateTime.now(); + this.expireTime = LocalDateTime.now().plusMinutes(1L); // 写死 1 分钟超时 + } + } + + +} diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/DemoLoginApplication.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/DemoLoginApplication.java index ce3ba19..82654e3 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/DemoLoginApplication.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/DemoLoginApplication.java @@ -1,6 +1,9 @@ package com.paradogs.demo.login; +import com.paradogs.framework.connector.PRConnectorServerMsgHandler; import com.paradogs.framework.core.annoations.EnableParadogs; +import com.paradogs.framework.core.netty.PRAbstractServerMsgHandler; +import com.paradogs.framework.core.utils.SpringUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -14,5 +17,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class DemoLoginApplication { public static void main(String[] args) { SpringApplication.run(DemoLoginApplication.class, args); + PRAbstractServerMsgHandler bean = SpringUtils.getBean(PRConnectorServerMsgHandler.class); + System.out.println(bean); } } diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java index f400311..4d0c67d 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java @@ -1,29 +1,23 @@ package com.paradogs.demo.login.controller; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.paradogs.demo.login.pojo.cg.CGLogin; -import com.paradogs.demo.login.pojo.cg.CGPrepareLogin; -import com.paradogs.demo.login.pojo.gc.GCAllocGateway; +import com.paradogs.framework.common.pojo.cg.CGLogin; +import com.paradogs.framework.common.pojo.cg.CGPrepareLogin; +import com.paradogs.framework.common.pojo.gc.GCAllocGateway; import com.paradogs.demo.login.rpc.GatewayClient; import com.paradogs.demo.login.rpc.MasterClient; import com.paradogs.framework.common.dao.PlayerDao; -import com.paradogs.framework.common.dao.impl.PlayerDaoImpl; import com.paradogs.framework.common.entity.Player; -import com.paradogs.framework.common.mapper.PlayerMapper; import com.paradogs.framework.core.annoations.request.PRController; import com.paradogs.framework.core.annoations.request.PRMsgMapping; -import com.paradogs.framework.core.msg.PRMsg; -import com.paradogs.framework.core.msg.MsgHeader; -import com.paradogs.framework.core.msg.PRMsgContextHolder; -import com.paradogs.framework.core.msg.R; +import com.paradogs.framework.core.msg.GCAck; import com.paradogs.framework.core.utils.PRAsync; -import com.paradogs.framework.core.utils.SpringUtils; import com.paradogs.framework.core.utils.Wrap; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import java.util.UUID; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicLong; /** * @author: yumi @@ -44,50 +38,30 @@ public class LoginController { private PlayerDao playerDao; @PRMsgMapping("login") - public void login(CGLogin dto) { - PlayerDao dao = SpringUtils.getBean(PlayerDaoImpl.class); - BaseMapper baseMapper = dao.getBaseMapper(); - BaseMapper baseMapper1 = playerDao.getBaseMapper(); - PRAsync.supply(() -> { + public CompletableFuture login(CGLogin dto) { + AtomicLong uid = new AtomicLong(); + return PRAsync.supply(() -> { Player player = playerDao.getOne(Wrap.lbq() .eq(Player::getAccount, dto.getAccount()) .eq(Player::getPwd, dto.getPassword())); return player; }) - .thenApply(player -> { + .thenApply(player -> { + if (player == null) { + GCAck.fail(); + } + uid.set(player.getUid()); + log.info("!!! 玩家登录成功: {}, {}", player.getAccount(), player); - if (player == null) { - return R.fail(); - } - log.info("!!! 玩家登录成功: {}, {}", player.getAccount(), player); + // 申请一个可以连接的网关 + return masterClient.allocGateway(); - // 申请一个可以连接的网关 - GCAllocGateway gcAllocGateway = masterClient.allocGateway(); - return gcAllocGateway; - - }).thenApply(gcAllocGateway -> { - GCAllocGateway vo = (GCAllocGateway)gcAllocGateway; - // 申请一个可以连接的网关 - if (!vo.isSuccess()) { - log.info("没有可连接的网关"); - return R.fail(); // 待优化:这里要改成抛出异常 - } - // 准备登录 - return gatewayClient.prepareLogin(new CGPrepareLogin(UUID.randomUUID().toString())); - - }).thenAccept(result -> { - if (!result.isSuccess()) { - log.error("登录准备失败: {}", result.getMsg()); - return; - } - /** - * 发送给客户端玩家 !!! - */ - PRMsg PRMsg = new PRMsg(); - MsgHeader header = new MsgHeader(); - PRMsg.setMsgHeader(header); - PRMsgContextHolder.getChannel().writeAndFlush(PRMsg); - }); + }).thenApply(msg -> { + // 网关服准备登录信息 + gatewayClient.prepareLogin(new CGPrepareLogin(uid.get(), UUID.randomUUID().toString())); + // 返回连接地址 + return msg; // 这个是发给客户端的,而不是发给服务器的,要特殊处理 + }); } } diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/db/Player.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/db/Player.java deleted file mode 100644 index c28c31a..0000000 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/db/Player.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.paradogs.demo.login.pojo.db; - -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023/11/14 10:19 - * @Description: TODO - */ -@Data -@TableName("g_player") -public class Player { - - @TableId - private Long id; - - @TableField("account") - private String account; - - @TableField("pwd") - private String pwd; - -} diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java index 3671e64..563b666 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java @@ -1,9 +1,9 @@ package com.paradogs.demo.login.rpc; -import com.paradogs.demo.login.pojo.cg.CGPrepareLogin; +import com.paradogs.framework.common.pojo.cg.CGPrepareLogin; import com.paradogs.framework.core.annoations.rpc.PRRPC; import com.paradogs.framework.core.annoations.rpc.PRRPCMapping; -import com.paradogs.framework.core.msg.R; +import com.paradogs.framework.core.msg.GCAck; /** * @author: yumi @@ -14,6 +14,6 @@ import com.paradogs.framework.core.msg.R; public interface GatewayClient { @PRRPCMapping("prepareLogin") - R prepareLogin(CGPrepareLogin prepareLogin); + GCAck prepareLogin(CGPrepareLogin prepareLogin); } diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java index 1ac4ad1..6ac02d9 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java @@ -1,11 +1,9 @@ package com.paradogs.demo.login.rpc; -import com.paradogs.demo.login.pojo.gc.GCAllocGateway; +import com.paradogs.framework.common.pojo.gc.GCAllocGateway; import com.paradogs.framework.core.annoations.rpc.PRRPC; import com.paradogs.framework.core.annoations.rpc.PRRPCMapping; -import java.util.concurrent.CompletableFuture; - /** * @author: yumi * @date: 2023/11/13 11:19 diff --git a/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/DemoMasterApplication.java b/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/DemoMasterApplication.java index dfed78b..75f8e16 100644 --- a/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/DemoMasterApplication.java +++ b/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/DemoMasterApplication.java @@ -1,6 +1,8 @@ package com.paradogs.demo.master; import com.paradogs.framework.core.annoations.EnableParadogs; +import com.paradogs.framework.core.netty.PRAbstractServerMsgHandler; +import com.paradogs.framework.core.utils.SpringUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/paradogs-framework/paradogs-framework-common/pom.xml b/paradogs-framework/paradogs-framework-common/pom.xml index 2a72eea..1732bc1 100644 --- a/paradogs-framework/paradogs-framework-common/pom.xml +++ b/paradogs-framework/paradogs-framework-common/pom.xml @@ -25,6 +25,14 @@ org.projectlombok lombok + + com.baidu + jprotobuf + + + io.netty + netty-all + \ No newline at end of file diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/dao/PlayerDao.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/dao/PlayerDao.java new file mode 100644 index 0000000..1d5b912 --- /dev/null +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/dao/PlayerDao.java @@ -0,0 +1,16 @@ +package com.paradogs.framework.common.dao; + +import com.paradogs.framework.common.entity.Player; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author yumi + * @since 2023-11-20 + */ +public interface PlayerDao extends IService { + +} diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/dao/impl/PlayerDaoImpl.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/dao/impl/PlayerDaoImpl.java new file mode 100644 index 0000000..d7650f9 --- /dev/null +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/dao/impl/PlayerDaoImpl.java @@ -0,0 +1,20 @@ +package com.paradogs.framework.common.dao.impl; + +import com.paradogs.framework.common.entity.Player; +import com.paradogs.framework.common.mapper.PlayerMapper; +import com.paradogs.framework.common.dao.PlayerDao; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author yumi + * @since 2023-11-20 + */ +@Service +public class PlayerDaoImpl extends ServiceImpl implements PlayerDao { + +} diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/Player.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/Player.java index e905aed..d3a3d31 100644 --- a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/Player.java +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/Player.java @@ -3,6 +3,7 @@ package com.paradogs.framework.common.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.paradogs.framework.common.entity.base.BaseEntity; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/BaseEntity.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/base/BaseEntity.java similarity index 81% rename from paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/BaseEntity.java rename to paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/base/BaseEntity.java index c0e5d9e..58ba82d 100644 --- a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/BaseEntity.java +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/base/BaseEntity.java @@ -1,10 +1,12 @@ -package com.paradogs.framework.common.entity; +package com.paradogs.framework.common.entity.base; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import java.io.Serializable; import java.time.LocalDateTime; /** @@ -12,7 +14,8 @@ import java.time.LocalDateTime; * @date: 2023/11/20 11:01 * @Description: TODO */ -public class BaseEntity { +@Data +public class BaseEntity implements Serializable { /** * 玩家 ID diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/base/PlayerTemplate.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/base/PlayerTemplate.java new file mode 100644 index 0000000..99e0500 --- /dev/null +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/base/PlayerTemplate.java @@ -0,0 +1,47 @@ +package com.paradogs.framework.common.entity.base; + +import com.paradogs.framework.common.manager.PlayerManager; +import com.paradogs.framework.common.manager.base.BaseManager; +import lombok.Data; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; + +/** + * @author: yumi + * @date: 2023/11/23 14:00 + * @Description: TODO + */ +@Data +public class PlayerTemplate { + + /** + * 玩家 ID + */ + private Long uid; + + private PlayerManager playerManager; + + public PlayerTemplate(Long uid) { + /** + * 通过反射初始化所有 Manager + */ + Field[] fields = this.getClass().getFields(); + for (Field field : fields) { + if (BaseManager.class.isAssignableFrom(field.getType())) { + try { + field.set(this, field.getType().getConstructor(Long.class).newInstance(uid)); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + } + } + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/base/AnonEvent.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/events/base/AnonEvent.java similarity index 87% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/base/AnonEvent.java rename to paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/events/base/AnonEvent.java index 6329aa3..a967f14 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/base/AnonEvent.java +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/events/base/AnonEvent.java @@ -1,4 +1,4 @@ -package com.paradogs.framework.core.events.base; +package com.paradogs.framework.common.events.base; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/base/BaseEvent.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/events/base/BaseEvent.java similarity index 93% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/base/BaseEvent.java rename to paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/events/base/BaseEvent.java index 6ed84c2..0cc8429 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/base/BaseEvent.java +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/events/base/BaseEvent.java @@ -1,4 +1,4 @@ -package com.paradogs.framework.core.events.base; +package com.paradogs.framework.common.events.base; import lombok.Getter; import lombok.Setter; diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/PlayerManager.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/PlayerManager.java new file mode 100644 index 0000000..05f8471 --- /dev/null +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/PlayerManager.java @@ -0,0 +1,17 @@ +package com.paradogs.framework.common.manager; + +import com.paradogs.framework.common.dao.PlayerDao; +import com.paradogs.framework.common.entity.Player; +import com.paradogs.framework.common.manager.base.BaseManager; + +/** + * @author: yumi + * @date: 2023/11/23 14:01 + * @Description: TODO + */ +public class PlayerManager extends BaseManager { + + public PlayerManager(Long uid) { + super(uid); + } +} diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/base/BaseManager.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/base/BaseManager.java new file mode 100644 index 0000000..e0960b4 --- /dev/null +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/base/BaseManager.java @@ -0,0 +1,37 @@ +package com.paradogs.framework.common.manager.base; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.paradogs.framework.common.entity.base.BaseEntity; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @author: yumi + * @date: 2023/11/23 14:01 + * @Description: TODO + */ +public abstract class BaseManager> { + + @Autowired + private D dao; + + private T entity; + + public BaseManager(Long uid) { + this.entity = dao.getById(uid); + if (this.entity == null) { + try { + this.entity = dao.getEntityClass().newInstance(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + + /** + * 循环检测 + */ + void heartBeat() {} + +} diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/mapper/PlayerMapper.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/mapper/PlayerMapper.java new file mode 100644 index 0000000..af723da --- /dev/null +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/mapper/PlayerMapper.java @@ -0,0 +1,16 @@ +package com.paradogs.framework.common.mapper; + +import com.paradogs.framework.common.entity.Player; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author yumi + * @since 2023-11-20 + */ +public interface PlayerMapper extends BaseMapper { + +} diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGPrepareLogin.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGGatewayLogin.java similarity index 73% rename from paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGPrepareLogin.java rename to paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGGatewayLogin.java index 8e11dd6..a591526 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGPrepareLogin.java +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGGatewayLogin.java @@ -1,4 +1,4 @@ -package com.paradogs.demo.login.pojo.cg; +package com.paradogs.framework.common.pojo.cg; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.AllArgsConstructor; @@ -7,14 +7,14 @@ import lombok.NoArgsConstructor; /** * @author: yumi - * @date: 2023/11/13 14:55 + * @date: 2023/11/23 15:01 * @Description: TODO */ @Data @AllArgsConstructor @NoArgsConstructor @ProtobufClass -public class CGPrepareLogin { +public class CGGatewayLogin { private String token; diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGLogin.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGLogin.java similarity index 87% rename from paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGLogin.java rename to paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGLogin.java index c6a8079..bdce9b3 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/cg/CGLogin.java +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGLogin.java @@ -1,4 +1,4 @@ -package com.paradogs.demo.login.pojo.cg; +package com.paradogs.framework.common.pojo.cg; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.Data; diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/pojo/CGPrepareLogin.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGPrepareLogin.java similarity index 83% rename from paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/pojo/CGPrepareLogin.java rename to paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGPrepareLogin.java index 0cfabf8..a48932d 100644 --- a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/pojo/CGPrepareLogin.java +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGPrepareLogin.java @@ -1,4 +1,4 @@ -package com.paradogs.demo.gateway.pojo; +package com.paradogs.framework.common.pojo.cg; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.AllArgsConstructor; @@ -16,6 +16,8 @@ import lombok.NoArgsConstructor; @ProtobufClass public class CGPrepareLogin { + private Long uid; + private String token; } diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/gc/GCAllocGateway.java similarity index 70% rename from paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java rename to paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/gc/GCAllocGateway.java index 4d812d1..6535772 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/pojo/gc/GCAllocGateway.java +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/gc/GCAllocGateway.java @@ -1,4 +1,4 @@ -package com.paradogs.demo.login.pojo.gc; +package com.paradogs.framework.common.pojo.gc; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.AllArgsConstructor; @@ -16,11 +16,6 @@ import lombok.NoArgsConstructor; @ProtobufClass public class GCAllocGateway { - /** - * 是否 - */ - private boolean success; - /** * 主机地址 */ @@ -31,8 +26,4 @@ public class GCAllocGateway { */ private int port; - public GCAllocGateway(boolean success) { - this.success = success; - } - } diff --git a/paradogs-framework/paradogs-framework-common/src/main/resources/mapper/PlayerMapper.xml b/paradogs-framework/paradogs-framework-common/src/main/resources/mapper/PlayerMapper.xml new file mode 100644 index 0000000..2378f5d --- /dev/null +++ b/paradogs-framework/paradogs-framework-common/src/main/resources/mapper/PlayerMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java index 3487a2b..11ed2c5 100644 --- a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java +++ b/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java @@ -1,12 +1,18 @@ package com.paradogs.framework.connector; +import com.paradogs.framework.core.events.PlayerClientActiveEvent; +import com.paradogs.framework.core.events.PlayerClientInactiveEvent; import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.netty.PRAbstractServerMsgHandler; import com.paradogs.framework.core.netty.server.ServerProperties; +import com.paradogs.framework.core.utils.EventUtils; +import com.paradogs.framework.core.utils.IPUtils; import com.paradogs.framework.core.utils.MsgUtils; import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; /** @@ -32,4 +38,29 @@ public class PRConnectorServerMsgHandler extends PRAbstractServerMsgHandler returnType = null; - try { - returnType = ReflectUtils.getGenericReturnType(method); - if (returnType == null) { - returnType = method.getReturnType(); - } - } catch (Exception e) { - throw new RuntimeException("ReturnType[" + method.getReturnType() + "] must extends BaseMsg: " + method.getName()); + Class returnType = method.getReturnType(); + if (returnType == null || returnType.equals(Void.TYPE)) { + return null; } + /** + * 监听回调 + */ CompletableFuture promise = new CompletableFuture<>(); - // 解耦 MsgUtils EventUtils.publishEvent(new RPCRequestEvent( PRRPC.value() + RouteUtils.SERVER_SEPARATOR + PRRPCMapping.value(), diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java index dccbd45..fe98b7d 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java @@ -44,11 +44,6 @@ public class NettyConfiguration { return new PRMasterClientChannelInitializer(clientMsgHandler); } - @Bean - public PRAbstractServerMsgHandler serverMsgHandler() { - return new PRDefaultMsgHandler(); - } - @Bean public PRMasterClientMsgHandler PRMasterClientMsgHandler() { return new PRMasterClientMsgHandler(); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientActiveEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientActiveEvent.java new file mode 100644 index 0000000..7df9ca3 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientActiveEvent.java @@ -0,0 +1,21 @@ +package com.paradogs.framework.core.events; + +import com.paradogs.framework.common.events.base.AnonEvent; +import io.netty.channel.ChannelHandlerContext; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/8/10 14:54 + * @Description: 成功连接 Master 服务器 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MasterClientActiveEvent extends AnonEvent { + + private ChannelHandlerContext ctx; + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientInactiveEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientInactiveEvent.java new file mode 100644 index 0000000..8a47e12 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientInactiveEvent.java @@ -0,0 +1,21 @@ +package com.paradogs.framework.core.events; + +import com.paradogs.framework.common.events.base.AnonEvent; +import io.netty.channel.ChannelHandlerContext; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/8/10 14:57 + * @Description: 从 Master 服务器断开连接 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MasterClientInactiveEvent extends AnonEvent { + + private ChannelHandlerContext ctx; + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ChannelActiveEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/PlayerClientActiveEvent.java similarity index 66% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ChannelActiveEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/PlayerClientActiveEvent.java index 25a3dce..7fc06fb 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ChannelActiveEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/PlayerClientActiveEvent.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.events; -import com.paradogs.framework.core.events.base.AnonEvent; +import com.paradogs.framework.common.events.base.AnonEvent; import io.netty.channel.ChannelHandlerContext; import lombok.AllArgsConstructor; import lombok.Data; @@ -9,12 +9,12 @@ import lombok.NoArgsConstructor; /** * @author: yumi * @date: 2023/8/10 14:54 - * @Description: 连接建立 + * @Description: 玩家客户端成功连接 */ @Data @AllArgsConstructor @NoArgsConstructor -public class ChannelActiveEvent extends AnonEvent { +public class PlayerClientActiveEvent extends AnonEvent { private ChannelHandlerContext ctx; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ChannelInactiveEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/PlayerClientInactiveEvent.java similarity index 66% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ChannelInactiveEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/PlayerClientInactiveEvent.java index 9928667..9bd9f53 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ChannelInactiveEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/PlayerClientInactiveEvent.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.events; -import com.paradogs.framework.core.events.base.AnonEvent; +import com.paradogs.framework.common.events.base.AnonEvent; import io.netty.channel.ChannelHandlerContext; import lombok.AllArgsConstructor; import lombok.Data; @@ -9,12 +9,12 @@ import lombok.NoArgsConstructor; /** * @author: yumi * @date: 2023/8/10 14:57 - * @Description: 连接断开 + * @Description: 玩家客户端断开连接 */ @Data @AllArgsConstructor @NoArgsConstructor -public class ChannelInactiveEvent extends AnonEvent { +public class PlayerClientInactiveEvent extends AnonEvent { private ChannelHandlerContext ctx; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java index de5fcb3..9cff914 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.events; -import com.paradogs.framework.core.events.base.AnonEvent; +import com.paradogs.framework.common.events.base.AnonEvent; import com.paradogs.framework.core.msg.PRMsg; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java index bc08a75..db7d37b 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRespEvent.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.events; -import com.paradogs.framework.core.events.base.AnonEvent; +import com.paradogs.framework.common.events.base.AnonEvent; import com.paradogs.framework.core.msg.ByteData; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCSyncRequestEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCSyncRequestEvent.java deleted file mode 100644 index 87f5387..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCSyncRequestEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.paradogs.framework.core.events; - -import com.paradogs.framework.core.events.base.AnonEvent; -import com.paradogs.framework.core.msg.PRMsg; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.concurrent.CompletableFuture; - -/** - * @author: yumi - * @date: 2023/8/17 10:45 - * @Description: TODO - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class RPCSyncRequestEvent extends AnonEvent { - private String route; - private T msg; - private Class returnClass; - private CompletableFuture promise; -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java index ef6ca0a..565eb11 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ReceiveMsgEvent.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.events; -import com.paradogs.framework.core.events.base.AnonEvent; +import com.paradogs.framework.common.events.base.AnonEvent; import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.PRMsg; import lombok.AllArgsConstructor; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerConnectionInitEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerConnectionInitEvent.java deleted file mode 100644 index e2b589e..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerConnectionInitEvent.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.paradogs.framework.core.events; - -import com.paradogs.framework.core.events.base.AnonEvent; -import com.paradogs.framework.core.msg.Connection; -import lombok.Data; - -/** - * @author: yumi - * @date: 2023/8/16 16:53 - * @Description: 服务器客户端连接初始化事件 - */ -@Data -public class ServerConnectionInitEvent extends AnonEvent { - - private Connection connection; - -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerStartEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerStartEvent.java index 32dd925..b29f676 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerStartEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerStartEvent.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.events; -import com.paradogs.framework.core.events.base.AnonEvent; +import com.paradogs.framework.common.events.base.AnonEvent; import lombok.Data; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/SyncMsgEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/SyncMsgEvent.java deleted file mode 100644 index 655caf6..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/SyncMsgEvent.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.paradogs.framework.core.events; - -import com.paradogs.framework.core.events.base.BaseEvent; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/7/26 16:06 - * @Description: 请求 - 响应类型消息的同步和异步调用处理 - */ -@Getter -@Setter -@ToString -@Component -public class SyncMsgEvent extends BaseEvent { - - /** - * 响应消息对应的请求消息 ID - */ - private int requestMsgId; - -// private BaseMsg - - public SyncMsgEvent(int requestMsgId) { - super(requestMsgId); - } -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/ServiceException.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/ServiceException.java index 0a400b8..77a5dcd 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/ServiceException.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/ServiceException.java @@ -12,4 +12,8 @@ public class ServiceException extends BaseUncheckedException { public ServiceException(int code, String message) { super(code, message); } + + public ServiceException() { + super(-1, "fail"); + } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteData.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteData.java index 19c3486..038706a 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteData.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/ByteData.java @@ -7,6 +7,7 @@ import io.netty.buffer.ByteBuf; import lombok.Data; import java.io.IOException; +import java.util.Arrays; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCAck.java similarity index 48% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCAck.java index d2b58f4..4768a04 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/R.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/GCAck.java @@ -1,50 +1,27 @@ package com.paradogs.framework.core.msg; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +import com.paradogs.framework.core.exceptions.ServiceException; import lombok.Data; import lombok.NoArgsConstructor; /** * @author: yumi * @date: 2023/11/16 13:47 - * @Description: TODO + * @Description: 通用返回 + * protobuf 无法解析泛型参数 */ @Data @NoArgsConstructor // 必须要有无参构造,JProtobuf 才能编码 @ProtobufClass -public class R { +public class GCAck { - /** - * 消息码 - */ - private int code; - - /** - * 描述信息 - */ - private String msg; - - /** - * 数据 - */ - private T data; - - public R(int code, String msg, T data) { - this.code = code; - this.msg = msg; - this.data = data; - } - - public static R success() { - return new R(R_CONST.SUCCESS_CODE, null, null); - } - - public static R fail() { - return new R(R_CONST.FAIL_CODE, null, null); + public static GCAck success() { + return new GCAck(); } - public boolean isSuccess() { - return this.code == R_CONST.SUCCESS_CODE; + public static GCAck fail() { + throw new ServiceException(); } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java index e7c67c6..fbffa31 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java @@ -4,6 +4,7 @@ import com.baidu.bjf.remoting.protobuf.FieldType; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.baomidou.mybatisplus.annotation.TableField; +import com.paradogs.framework.common.pojo.gc.GCAllocGateway; import com.paradogs.framework.core.utils.BeanUtils; import com.paradogs.framework.core.utils.ProtoUtils; import io.netty.buffer.ByteBuf; @@ -12,6 +13,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.IOException; +import java.util.Arrays; /** * @author: yumi @@ -58,6 +60,7 @@ public class PRMsg { // 写入消息体 byte[] bytes = ProtoUtils.encode(this.msgData); + out.writeBytes(bytes); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsgContextHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsgContextHolder.java index a57cc2c..5990035 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsgContextHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsgContextHolder.java @@ -18,6 +18,9 @@ public class PRMsgContextHolder { @Getter private static Long playerId; + @Getter + private static Channel channel; + public static void setContext(ChannelHandlerContext ctx, Long playerId) { PRMsgContextHolder.ctx = ctx; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java index 4c68cbc..15cde76 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java @@ -1,15 +1,11 @@ package com.paradogs.framework.core.netty; -import com.paradogs.framework.core.events.ReceiveMsgEvent; import com.paradogs.framework.core.exceptions.GlobalExceptionDispatch; import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.PRMsgContextHolder; -import com.paradogs.framework.core.msg.MsgHeader; import com.paradogs.framework.core.netty.server.PRConnectionHolder; import com.paradogs.framework.core.queue.PRQueueHolder; -import com.paradogs.framework.core.utils.EventUtils; import com.paradogs.framework.core.utils.SpringUtils; -import com.paradogs.framework.core.utils.StringUtils; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import lombok.extern.slf4j.Slf4j; @@ -32,13 +28,7 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandle /** * 设置自定义参数 */ - protected void setProps(ChannelHandlerContext ctx, ByteData msg) { - MsgHeader header = msg.getMsgHeader(); - header.setPId(1L); - if (StringUtils.isBlank(header.getSendServer())) { // 有值代表网关转发,已经设置过 - header.setSendServer(PRConnectionHolder.getConnKey(ctx.channel())); - } - } + protected void setProps(ChannelHandlerContext ctx, ByteData msg) {} /** * 设置消息上下文 @@ -77,7 +67,7 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandle setContext(ctx, msg); - log.debug("<<<<< !!! Receive Message: {} !!! Sender: {}, {}", msg.getMsgHeader().getRoute(), PRConnectionHolder.getConnKey(ctx.channel()), msg.getMsgHeader()); + log.debug("<<<<< [{}], Sender: {}, {}", msg.getMsgHeader().getRoute(), PRConnectionHolder.getConnKey(ctx.channel()), msg.getMsgHeader()); try { // 消息处理 @@ -87,8 +77,6 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandle // 全局异常处理 SpringUtils.getBean(GlobalExceptionDispatch.class).forward(e); - } finally { - EventUtils.publishEvent(new ReceiveMsgEvent(msg)); } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java index 96545e8..5b7e717 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRCodec.java @@ -1,8 +1,10 @@ package com.paradogs.framework.core.netty; +import com.paradogs.framework.common.pojo.gc.GCAllocGateway; import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.MsgHeader; +import com.paradogs.framework.core.utils.ProtoUtils; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; @@ -30,19 +32,20 @@ public class PRCodec extends ByteToMessageCodec { msg.getMsgHeader().serialization(out); msg.serialization(out); + } @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { // 读取请求头 - MsgHeader msgHeader = new MsgHeader(); - msgHeader.deserialization(in); + MsgHeader header = new MsgHeader(); + header.deserialization(in); // 消息体暂时不解析,放 MsgHandler 中解析 ByteData byteDataMsg = new ByteData(); + byteDataMsg.setMsgHeader(header); byteDataMsg.deserialization(in); - byteDataMsg.setMsgHeader(msgHeader); out.add(byteDataMsg); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/events/ServerEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/events/ServerEvent.java index 30e31d7..255cd94 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/events/ServerEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/events/ServerEvent.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.netty.events; -import com.paradogs.framework.core.events.base.BaseEvent; +import com.paradogs.framework.common.events.base.BaseEvent; import lombok.extern.slf4j.Slf4j; /** diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java index 4c78507..bf36baa 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/PRQueueHolder.java @@ -2,6 +2,7 @@ package com.paradogs.framework.core.queue; import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.PRMsg; +import com.paradogs.framework.core.utils.RandomUtils; import com.paradogs.framework.core.utils.SpringUtils; import lombok.Getter; import lombok.Setter; @@ -93,6 +94,9 @@ public class PRQueueHolder implements ApplicationRunner { * @return */ private static QueueConsumerThread balance(List list, ByteData msg) { + if (msg.getMsgHeader().getPId() == null) { + return list.get(0); + } return list.get((int) (msg.getMsgHeader().getPId() % list.size())); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/IPUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/IPUtils.java new file mode 100644 index 0000000..145d60e --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/IPUtils.java @@ -0,0 +1,31 @@ +package com.paradogs.framework.core.utils; + +import io.netty.channel.Channel; + +import java.net.InetAddress; +import java.net.InetSocketAddress; + +/** + * @author: yumi + * @date: 2023/11/24 16:28 + * @Description: TODO + */ +public class IPUtils { + + public static InetSocketAddress getAddr(Channel channel) { + return (InetSocketAddress) channel.remoteAddress(); + } + + public static String getHost(Channel channel) { + InetSocketAddress addr = getAddr(channel); + if (addr == null) {return null;} + return addr.getHostString(); + } + + public static Integer getPort(Channel channel) { + InetSocketAddress addr = getAddr(channel); + if (addr == null) {return null;} + return addr.getPort(); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java index 7cf32ee..23aa181 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java @@ -42,12 +42,7 @@ public class MsgUtils { public static void send(String route, MsgHeader header, T data) { PRMsg msg = new PRMsg(header, data); - if (msg.getMsgHeader() == null) { - msg.setMsgHeader(new MsgHeader()); - if (StringUtils.isBlank(route)) { - msg.getMsgHeader().setRoute(route); - } - } + msg.getMsgHeader().setRoute(route); /** * 其他服往 Master 服发送消息, Master 服往其他服转发消息 @@ -77,32 +72,28 @@ public class MsgUtils { return; } - - + MsgUtils.writeAndFlush(conn.getChannel(), msg); + } + public static void send(String route, PRMsg msg, Channel channel) { msg.getMsgHeader().setRoute(route); - - if (conn.getChannel() != null) { - conn.getChannel().writeAndFlush(msg); - log.debug(">>>>> [{}], {}", msg.getMsgHeader().getRoute(), msg); - } else { - log.warn("Channel is null, route: {}", route); - } + MsgUtils.writeAndFlush(channel, msg); } public static void send(String route, T data, Channel channel) { PRMsg msg = new PRMsg(data); - if (StringUtils.isBlank(msg.getMsgHeader().getRoute())) { - msg.getMsgHeader().setRoute(route); - } - if (channel != null) { - channel.writeAndFlush(msg); - log.debug(">>>>> [{}], {}", msg.getMsgHeader().getRoute(), msg); - } else { - log.warn("Channel is null, route: {}", route); - } + msg.getMsgHeader().setRoute(route); + MsgUtils.writeAndFlush(channel, msg); } public static void send(String route, PRMsg msg) { MsgUtils.send(route, msg.getMsgHeader(), msg.getMsgData()); } + private static void writeAndFlush(Channel channel, PRMsg msg) { + if (channel == null) { + log.warn("Channel is null, route: {}", msg.getMsgHeader().getRoute()); + return; + } + channel.writeAndFlush(msg); + log.debug(">>>>> [{}], {}", msg.getMsgHeader().getRoute(), msg); + } /** * 转发消息 @@ -230,6 +221,11 @@ public class MsgUtils { gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); PRMsg gcMsg = new PRMsg(gcHeader, gcData); + // sendServer == null 代表客户端消息,直接返回客户端,不 RPC 发送至 master + if (header.getSendServer() == null) { + MsgUtils.send("client", gcMsg, PRMsgContextHolder.getChannel()); + return; + } // 发送 GC MsgUtils.send(header.getSendServer() + RouteUtils.SERVER_SEPARATOR + "_paradogs.callback", gcMsg); }); @@ -242,6 +238,11 @@ public class MsgUtils { gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); PRMsg gcMsg = new PRMsg(gcHeader, result); + // sendServer == null 代表客户端消息,直接返回客户端,不 RPC 发送至 master + if (header.getSendServer() == null) { + MsgUtils.send("client", gcMsg, PRMsgContextHolder.getChannel()); + return; + } // 发送 GC MsgUtils.send(header.getSendServer() + RouteUtils.SERVER_SEPARATOR + "_paradogs.callback", gcMsg); } diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java index 1dea704..48b661e 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java @@ -1,12 +1,12 @@ package com.paradogs.framework.master; +import com.paradogs.framework.common.pojo.gc.GCAllocGateway; import com.paradogs.framework.core.annoations.request.PRController; import com.paradogs.framework.core.annoations.request.PRMsgMapping; -import com.paradogs.framework.core.msg.PRMsg; +import com.paradogs.framework.core.msg.GCAck; import com.paradogs.framework.core.netty.server.PRConnection; import com.paradogs.framework.core.netty.server.PRConnectionHolder; import com.paradogs.framework.core.strategy.GatewayLoadBalancerStrategy; -import com.paradogs.framework.master.pojo.AllocGatewayVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -30,36 +30,22 @@ public class MasterController { @Autowired private GatewayLoadBalancerStrategy strategy; - @PRMsgMapping("getServerInfo") - public List getServerInfo(String serverType) { - Collection conns = PRConnectionHolder.getConnMap().values(); - List collect = conns.stream().filter(conn -> conn.getConnInfo().getType().equals(serverType)).collect(Collectors.toList()); - collect.forEach(System.out::println); - return collect; - } - /** * 玩家登录成功后,登录服申请一个网关供玩家连接 * @return */ @PRMsgMapping("allocGateway") - public AllocGatewayVO allocGateway() { + public GCAllocGateway allocGateway() { List gateways = PRConnectionHolder.getTypeConns("gateway");// 待优化:暂时写死 PRConnection conn = strategy.choose(gateways); if (conn == null) { - return new AllocGatewayVO(false); + GCAck.fail(); } - return new AllocGatewayVO( - true, + return new GCAllocGateway( ((InetSocketAddress)conn.getChannel().remoteAddress()).getHostString(), conn.getConnInfo().getPort() ); } - @PRMsgMapping("hello") - public PRMsg hello() { - log.info("receive hello..."); - return new PRMsg(); - } } diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgHandler.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgHandler.java new file mode 100644 index 0000000..728e8d7 --- /dev/null +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgHandler.java @@ -0,0 +1,53 @@ +package com.paradogs.framework.master; + +import com.paradogs.framework.core.events.MasterClientActiveEvent; +import com.paradogs.framework.core.events.MasterClientInactiveEvent; +import com.paradogs.framework.core.msg.ByteData; +import com.paradogs.framework.core.msg.MsgHeader; +import com.paradogs.framework.core.netty.PRAbstractServerMsgHandler; +import com.paradogs.framework.core.netty.server.PRConnectionHolder; +import com.paradogs.framework.core.utils.EventUtils; +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/11/23 17:34 + * @Description: TODO + */ +@Primary +@Component +@ChannelHandler.Sharable +public class MasterMsgHandler extends PRAbstractServerMsgHandler { + + @Override + protected void setProps(ChannelHandlerContext ctx, ByteData msg) { + super.setProps(ctx, msg); + MsgHeader header = msg.getMsgHeader(); + header.setSendServer(PRConnectionHolder.getConnKey(ctx.channel())); // 设置发送服标识 + } + + /** + * 连接建立事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + super.channelActive(ctx); + EventUtils.publishEvent(new MasterClientActiveEvent(ctx)); + } + + /** + * 连接断开事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelInactive(ChannelHandlerContext ctx) throws Exception { + super.channelActive(ctx); + EventUtils.publishEvent(new MasterClientInactiveEvent(ctx)); + } +} diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java deleted file mode 100644 index 5290979..0000000 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/pojo/AllocGatewayVO.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.paradogs.framework.master.pojo; - -import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; -import com.paradogs.framework.core.msg.PRMsg; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author: yumi - * @date: 2023/11/13 14:12 - * @Description: TODO - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@ProtobufClass -public class AllocGatewayVO { - - /** - * 是否 - */ - private boolean success; - - /** - * 主机地址 - */ - private String host; - - /** - * 端口号 - */ - private int port; - - public AllocGatewayVO(boolean success) { - this.success = success; - } - -} diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 26f2409..fdc5c65 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -4,6 +4,8 @@ com.paradogs.framework.master.ControllerConfiguration com.paradogs.framework.master.MasterStarter +com.paradogs.framework.master.MasterMsgHandler + diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java b/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java index 829c17c..c1cde16 100644 --- a/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java +++ b/paradogs-generator/src/main/java/com/paradogs/generator/DBEntityGenerator.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; -import com.paradogs.framework.common.entity.BaseEntity; +import com.paradogs.framework.common.entity.base.BaseEntity; import java.util.Collections; diff --git a/paradogs-generator/src/main/java/com/paradogs/generator/test.java b/paradogs-generator/src/main/java/com/paradogs/generator/test.java deleted file mode 100644 index a075115..0000000 --- a/paradogs-generator/src/main/java/com/paradogs/generator/test.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.paradogs.generator; - -/** - * @author: yumi - * @date: 2023/11/20 10:28 - * @Description: TODO - */ -public class test { - public static void main(String[] args) { - byte[] bs = new byte[0]; - System.out.println(bs.getClass()); - } -} diff --git a/pom.xml b/pom.xml index 666c91a..74f1935 100644 --- a/pom.xml +++ b/pom.xml @@ -52,13 +52,6 @@ 2.0.22 - - - com.google.protobuf - protobuf-java - 3.12.2 - - org.springframework.boot spring-boot-devtools -- Gitee From e4a738fb65ff32c67162f9555281e6ef70406d68 Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Wed, 29 Nov 2023 18:04:29 +0800 Subject: [PATCH 31/32] =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=BA=86=E5=90=84=E4=B8=AA=E6=9C=8D=E7=9A=84=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/DemoClientApplication.java | 20 +- .../{test => demo}/client/demo/Client.java | 2 +- .../{test => demo}/client/pojo/CGLogin.java | 2 +- .../paradogs/test/server/misc/LoopTest.java | 34 -- .../pom.xml | 4 +- .../demo/gate/DemoGateApplication.java} | 6 +- .../demo/gate/controller/GateController.java} | 29 +- .../demo/gate}/misc/PlayerOnlineHolder.java | 26 +- .../paradogs/demo/gate/rpc/LogicClient.java | 18 ++ .../src/main/resources/application.yml | 8 +- .../pom.xml | 2 +- .../demo/logic/DemoLogicApplication.java} | 8 +- .../logic/controller/LoginController.java | 42 +++ .../demo/logic/event/PlayerLoginEvent.java | 29 ++ .../demo/logic/event/PlayerLogoutEvent.java | 23 ++ .../exceptions/GobalExceptionHandler.java | 2 +- .../demo/logic}/manager/PlayerManager.java | 11 +- .../demo/logic}/manager/base/BaseManager.java | 15 +- .../logic/manager}/base/PlayerTemplate.java | 20 +- .../demo/logic/misc/PlayerOnlineHolder.java | 37 +++ .../src/main/resources/application.yml | 4 +- paradogs-demo/paradogs-demo-login/pom.xml | 2 +- .../demo/login/DemoLoginApplication.java | 6 +- .../login/controller/LoginController.java | 50 ++- .../{GatewayClient.java => GateClient.java} | 6 +- .../paradogs/demo/login/rpc/LogicClient.java | 9 + .../paradogs/demo/login/rpc/MasterClient.java | 8 +- .../demo/master/DemoMasterApplication.java | 2 - paradogs-demo/pom.xml | 4 +- .../common/pojo/cg/CGGatewayLogin.java | 2 + .../framework/common/pojo/gc/GCApplyGate.java | 34 ++ .../common/pojo/misc/IntWrapper.java | 21 ++ .../common/pojo/misc/LongWrapper.java | 21 ++ .../common/pojo/misc/StringWrapper.java | 21 ++ ...ot.autoconfigure.AutoConfiguration.imports | 1 - .../paradogs/framework/core/CoreStarter.java | 3 - .../core/annoations/EnableParadogs.java | 12 +- .../core/annoations/request/PRMsgMapping.java | 2 + .../request/PRRequestInterfaceSelector.java | 8 +- .../rpc/{PRRPC.java => PRClient.java} | 2 +- .../annoations/rpc/PRRPCInterfaceScanner.java | 4 +- .../core/annoations/rpc/PRRPCMapping.java | 15 - .../rpc/PRRPCProxyBeanImportSelector.java | 8 +- .../annoations/rpc/PRRPCProxyInterceptor.java | 7 +- .../core/config/NettyConfiguration.java | 40 ++- ...vent.java => ServerClientActiveEvent.java} | 2 +- ...nt.java => ServerClientInactiveEvent.java} | 2 +- .../core/events/ServerClientStartEvent.java | 13 + .../core/events/ServerStartEvent.java | 8 - .../core/exceptions/MessageException.java | 28 ++ .../base/BaseUncheckedException.java | 4 + .../framework/core/msg/CommonController.java | 14 - .../framework/core/msg/MsgHeader.java | 10 +- .../paradogs/framework/core/msg/PRMsg.java | 41 +-- .../framework/core/msg/route/MsgMapping.java | 11 + ...lizer.java => PRAbChannelInitializer.java} | 6 +- ...actMsgHandler.java => PRAbMsgHandler.java} | 34 +- .../PRAbstractClientChannelInitializer.java | 14 - .../PRAbstractServerChannelInitializer.java | 14 - .../netty/PRAbstractServerMsgHandler.java | 9 - .../framework/core/netty/PRConnHolder.java | 58 ++++ .../core/netty/PRDefaultMsgHandler.java | 13 - .../PRDefaultServerChannelInitializer.java | 18 -- .../netty/clients/PRAbClientMsgHandler.java | 45 +++ .../core/netty/clients/PRClient.java | 52 ---- .../clients/PRClientChannelInitializer.java | 17 + .../core/netty/clients/PRMasterClient.java | 95 ------ .../PRMasterClientChannelInitializer.java | 17 - .../clients/common/ClientsProperties.java | 43 +++ .../netty/clients/common/PRClientLaunch.java | 43 +++ .../netty/clients/common/PRServerClient.java | 62 ++++ .../PRServerClientChannelInitializer.java | 21 ++ .../common/PRServerClientMsgHandler.java | 32 ++ .../MasterProperties.java} | 22 +- .../netty/clients/master/PRMasterClient.java | 63 ++++ .../PRMasterClientChannelInitializer.java | 20 ++ .../PRMasterClientMsgHandler.java | 31 +- .../PRAbServerMsgHandler.java} | 7 +- .../core/netty/server/PRConnection.java | 28 +- .../core/netty/server/PRConnectionHolder.java | 142 --------- .../server/PRServerChannelInitializer.java | 17 + .../{PRServer.java => PRServerLaunch.java} | 45 +-- .../framework/core/queue/QueueProperties.java | 2 +- .../paradogs/framework/core/rpc/InitRPC.java | 20 -- ...egy.java => GateLoadBalancerStrategy.java} | 2 +- ...va => GateRandomLoadBalancerStrategy.java} | 2 +- .../framework/core/utils/MsgUtils.java | 294 ++++++++---------- .../framework/core/utils/PRAsync.java | 2 +- .../framework/core/utils/SpringUtils.java | 6 + ...ot.autoconfigure.AutoConfiguration.imports | 2 +- .../pom.xml | 2 +- .../gate/PRGateClientMsgHandler.java | 22 ++ .../gate/PRGateServerMsgHandler.java} | 18 +- .../framework/gate/PRGateStarter.java} | 4 +- ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../src/main/resources/config/application.yml | 0 .../master/ControllerConfiguration.java | 19 -- .../{ => controller}/MasterController.java | 41 ++- .../master/{ => netty}/MasterMsgConsumer.java | 6 +- .../master/{ => netty}/MasterMsgHandler.java | 28 +- ...ot.autoconfigure.AutoConfiguration.imports | 8 +- .../framework/server/ServerMsgHandler.java | 22 ++ ...ot.autoconfigure.AutoConfiguration.imports | 2 + paradogs-framework/pom.xml | 2 +- pom.xml | 2 +- 105 files changed, 1241 insertions(+), 997 deletions(-) rename paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/{test => demo}/client/DemoClientApplication.java (82%) rename paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/{test => demo}/client/demo/Client.java (95%) rename paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/{test => demo}/client/pojo/CGLogin.java (91%) delete mode 100644 paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/misc/LoopTest.java rename paradogs-demo/{paradogs-demo-gateway => paradogs-demo-gate}/pom.xml (85%) rename paradogs-demo/{paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/DemoGatewayApplication.java => paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/DemoGateApplication.java} (71%) rename paradogs-demo/{paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java => paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/controller/GateController.java} (58%) rename paradogs-demo/{paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway => paradogs-demo-gate/src/main/java/com/paradogs/demo/gate}/misc/PlayerOnlineHolder.java (65%) create mode 100644 paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/rpc/LogicClient.java rename paradogs-demo/{paradogs-demo-gateway => paradogs-demo-gate}/src/main/resources/application.yml (87%) rename paradogs-demo/{paradogs-demo-game => paradogs-demo-logic}/pom.xml (94%) rename paradogs-demo/{paradogs-demo-game/src/main/java/com/paradogs/test/server/DemoGameApplication.java => paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/DemoLogicApplication.java} (56%) create mode 100644 paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/controller/LoginController.java create mode 100644 paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/event/PlayerLoginEvent.java create mode 100644 paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/event/PlayerLogoutEvent.java rename paradogs-demo/{paradogs-demo-game/src/main/java/com/paradogs/test/server => paradogs-demo-logic/src/main/java/com/paradogs/demo/logic}/exceptions/GobalExceptionHandler.java (93%) rename {paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common => paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic}/manager/PlayerManager.java (52%) rename {paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common => paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic}/manager/base/BaseManager.java (71%) rename {paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity => paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/manager}/base/PlayerTemplate.java (49%) create mode 100644 paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/misc/PlayerOnlineHolder.java rename paradogs-demo/{paradogs-demo-game => paradogs-demo-logic}/src/main/resources/application.yml (95%) rename paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/{GatewayClient.java => GateClient.java} (77%) create mode 100644 paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/LogicClient.java create mode 100644 paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/gc/GCApplyGate.java create mode 100644 paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/misc/IntWrapper.java create mode 100644 paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/misc/LongWrapper.java create mode 100644 paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/misc/StringWrapper.java delete mode 100644 paradogs-framework/paradogs-framework-connector-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/{PRRPC.java => PRClient.java} (91%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/{MasterClientActiveEvent.java => ServerClientActiveEvent.java} (88%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/{MasterClientInactiveEvent.java => ServerClientInactiveEvent.java} (87%) create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerClientStartEvent.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/MessageException.java rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/{PRAbstractChannelInitializer.java => PRAbChannelInitializer.java} (89%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/{PRAbstractMsgHandler.java => PRAbMsgHandler.java} (62%) delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientChannelInitializer.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerChannelInitializer.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerMsgHandler.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRConnHolder.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultMsgHandler.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultServerChannelInitializer.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRAbClientMsgHandler.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRClient.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRClientChannelInitializer.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClient.java delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientChannelInitializer.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/ClientsProperties.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRClientLaunch.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClient.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClientChannelInitializer.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClientMsgHandler.java rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/{MasterClientProperties.java => master/MasterProperties.java} (41%) create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/PRMasterClient.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/PRMasterClientChannelInitializer.java rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/{ => master}/PRMasterClientMsgHandler.java (45%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/{PRAbstractClientMsgHandler.java => server/PRAbServerMsgHandler.java} (30%) delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnectionHolder.java create mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServerChannelInitializer.java rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/{PRServer.java => PRServerLaunch.java} (64%) delete mode 100644 paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/rpc/InitRPC.java rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/{GatewayLoadBalancerStrategy.java => GateLoadBalancerStrategy.java} (85%) rename paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/{GatewayRandomLoadBalancerStrategy.java => GateRandomLoadBalancerStrategy.java} (86%) rename paradogs-framework/{paradogs-framework-connector-starter => paradogs-framework-gate-starter}/pom.xml (92%) create mode 100644 paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateClientMsgHandler.java rename paradogs-framework/{paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java => paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateServerMsgHandler.java} (80%) rename paradogs-framework/{paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorStarter.java => paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateStarter.java} (86%) create mode 100644 paradogs-framework/paradogs-framework-gate-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename paradogs-framework/{paradogs-framework-connector-starter => paradogs-framework-gate-starter}/src/main/resources/config/application.yml (100%) delete mode 100644 paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/ControllerConfiguration.java rename paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/{ => controller}/MasterController.java (38%) rename paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/{ => netty}/MasterMsgConsumer.java (84%) rename paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/{ => netty}/MasterMsgHandler.java (53%) create mode 100644 paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerMsgHandler.java diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/demo/client/DemoClientApplication.java similarity index 82% rename from paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java rename to paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/demo/client/DemoClientApplication.java index 7bccc5c..9e12c9b 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/DemoClientApplication.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/demo/client/DemoClientApplication.java @@ -1,11 +1,13 @@ -package com.paradogs.test.client; +package com.paradogs.demo.client; +import com.paradogs.demo.client.demo.Client; +import com.paradogs.demo.client.pojo.CGLogin; +import com.paradogs.framework.common.pojo.cg.CGGatewayLogin; import com.paradogs.framework.common.pojo.gc.GCAllocGateway; +import com.paradogs.framework.common.pojo.gc.GCApplyGate; import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.netty.PRCodec; import com.paradogs.framework.core.utils.ProtoUtils; -import com.paradogs.test.client.demo.Client; -import com.paradogs.test.client.pojo.CGLogin; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; @@ -19,8 +21,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import java.util.List; - /** * @author: yumi * @date: 2023/7/31 23:25 @@ -53,7 +53,7 @@ public class DemoClientApplication { channel.pipeline().addLast(new SimpleChannelInboundHandler() { @Override protected void channelRead0(ChannelHandlerContext ctx, ByteData msg) throws Exception { - GCAllocGateway result = ProtoUtils.decode(msg.getDataBytes(), GCAllocGateway.class); + GCApplyGate result = ProtoUtils.decode(msg.getDataBytes(), GCApplyGate.class); log.info("Receive: {}", result); Bootstrap client = new Bootstrap() @@ -78,12 +78,14 @@ public class DemoClientApplication { @Override protected void channelRead0(ChannelHandlerContext ctx, ByteData msg) throws Exception { log.info("Receive: {}", msg); + Client.send(ctx.channel(), "logic|misc.hello", new CGGatewayLogin("123")); } }); } }); - Channel gatewayChannel = client.connect(result.getHost(), result.getPort()).sync().channel(); - log.info("Connect Gateway success"); + Channel gateChannel = client.connect(result.getHost(), result.getPort()).sync().channel(); + log.info("Connect Gate success"); + Client.send(gateChannel, "gate|login", new CGGatewayLogin(result.getToken())); } }); @@ -92,6 +94,6 @@ public class DemoClientApplication { Channel channel = client.connect("localhost", 80).sync().channel(); - Client.send(channel, "login|login", new CGLogin("yumi", "123")); + Client.send(channel, "login|applyGate", new CGLogin("yumi", "123")); } } diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/demo/client/demo/Client.java similarity index 95% rename from paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java rename to paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/demo/client/demo/Client.java index 64492e7..067f7ca 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/demo/Client.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/demo/client/demo/Client.java @@ -1,4 +1,4 @@ -package com.paradogs.test.client.demo; +package com.paradogs.demo.client.demo; import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.MsgHeader; diff --git a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/pojo/CGLogin.java b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/demo/client/pojo/CGLogin.java similarity index 91% rename from paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/pojo/CGLogin.java rename to paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/demo/client/pojo/CGLogin.java index 04fdde2..a33679a 100644 --- a/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/test/client/pojo/CGLogin.java +++ b/paradogs-demo/paradogs-demo-client/src/main/java/com/paradogs/demo/client/pojo/CGLogin.java @@ -1,4 +1,4 @@ -package com.paradogs.test.client.pojo; +package com.paradogs.demo.client.pojo; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.AllArgsConstructor; diff --git a/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/misc/LoopTest.java b/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/misc/LoopTest.java deleted file mode 100644 index dc6f068..0000000 --- a/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/misc/LoopTest.java +++ /dev/null @@ -1,34 +0,0 @@ -//package com.paradogs.test.server.misc; -// -//import com.paradogs.common.core.annoations.PdgLoop; -//import lombok.extern.slf4j.Slf4j; -//import org.springframework.stereotype.Component; -// -///** -// * @author: yumi -// * @date: 2023/8/4 10:26 -// * @Description: TODO -// */ -//@Slf4j -//@Component -//public class LoopTest { -// -// @PdgLoop -// public void loopTest1() throws InterruptedException { -// log.info("loop >> 1 begin"); -// Thread.sleep(1000); -// } -// -// @PdgLoop -// public void loopTest2() throws InterruptedException { -// log.info("loop >> 2 begin"); -// Thread.sleep(2000); -// } -// -// @PdgLoop -// public void loopTest3() throws InterruptedException { -// log.info("loop >> 3 begin"); -// Thread.sleep(3000); -// } -// -//} diff --git a/paradogs-demo/paradogs-demo-gateway/pom.xml b/paradogs-demo/paradogs-demo-gate/pom.xml similarity index 85% rename from paradogs-demo/paradogs-demo-gateway/pom.xml rename to paradogs-demo/paradogs-demo-gate/pom.xml index b22b406..f038ebd 100644 --- a/paradogs-demo/paradogs-demo-gateway/pom.xml +++ b/paradogs-demo/paradogs-demo-gate/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - paradogs-demo-gateway + paradogs-demo-gate 8 @@ -19,7 +19,7 @@ com.paradogs - paradogs-framework-connector-starter + paradogs-framework-gate-starter diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/DemoGatewayApplication.java b/paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/DemoGateApplication.java similarity index 71% rename from paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/DemoGatewayApplication.java rename to paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/DemoGateApplication.java index e32ac87..4a60aa5 100644 --- a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/DemoGatewayApplication.java +++ b/paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/DemoGateApplication.java @@ -1,4 +1,4 @@ -package com.paradogs.demo.gateway; +package com.paradogs.demo.gate; import com.paradogs.framework.core.annoations.EnableParadogs; @@ -12,8 +12,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; */ @EnableParadogs @SpringBootApplication -public class DemoGatewayApplication { +public class DemoGateApplication { public static void main(String[] args) { - SpringApplication.run(DemoGatewayApplication.class, args); + SpringApplication.run(DemoGateApplication.class, args); } } diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java b/paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/controller/GateController.java similarity index 58% rename from paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java rename to paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/controller/GateController.java index eb393fe..12499bc 100644 --- a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/controller/GatewayController.java +++ b/paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/controller/GateController.java @@ -1,15 +1,21 @@ -package com.paradogs.demo.gateway.controller; +package com.paradogs.demo.gate.controller; -import com.paradogs.demo.gateway.misc.PlayerOnlineHolder; -import com.paradogs.framework.common.entity.base.PlayerTemplate; +import com.paradogs.demo.gate.misc.PlayerOnlineHolder; +import com.paradogs.demo.gate.rpc.LogicClient; import com.paradogs.framework.common.pojo.cg.CGGatewayLogin; -import com.paradogs.framework.common.pojo.cg.CGLogin; import com.paradogs.framework.common.pojo.cg.CGPrepareLogin; +import com.paradogs.framework.common.pojo.misc.LongWrapper; import com.paradogs.framework.core.annoations.request.PRController; import com.paradogs.framework.core.annoations.request.PRMsgMapping; import com.paradogs.framework.core.msg.GCAck; +import com.paradogs.framework.core.utils.PRAsync; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.CompletableFuture; /** * @author: yumi @@ -18,7 +24,10 @@ import org.springframework.beans.factory.annotation.Autowired; */ @Slf4j @PRController -public class GatewayController { +public class GateController { + + @Autowired + private LogicClient logicClient; @Autowired private PlayerOnlineHolder playerOnlineHolder; @@ -38,14 +47,14 @@ public class GatewayController { * @param msg * @return */ - @PRMsgMapping("login") + @PRMsgMapping(value = "login", async = true) public GCAck login(CGGatewayLogin msg) { - boolean result = playerOnlineHolder.login(msg.getToken()); - if (result) { + PlayerOnlineHolder.WillLoginInfo info = playerOnlineHolder.get(msg.getToken()); + if (info != null) { + logicClient.loadPlayer(new LongWrapper(info.getUid())); return GCAck.success(); - } else { - return GCAck.fail(); } + return GCAck.fail(); } } diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/misc/PlayerOnlineHolder.java b/paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/misc/PlayerOnlineHolder.java similarity index 65% rename from paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/misc/PlayerOnlineHolder.java rename to paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/misc/PlayerOnlineHolder.java index 59f37c0..994fd4d 100644 --- a/paradogs-demo/paradogs-demo-gateway/src/main/java/com/paradogs/demo/gateway/misc/PlayerOnlineHolder.java +++ b/paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/misc/PlayerOnlineHolder.java @@ -1,6 +1,5 @@ -package com.paradogs.demo.gateway.misc; +package com.paradogs.demo.gate.misc; -import com.paradogs.framework.common.entity.base.PlayerTemplate; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -23,25 +22,20 @@ public class PlayerOnlineHolder { */ private Map willLoginMap = new HashMap<>(); + /** - * 在线玩家 + * 准备登录 + * @param uid + * @param token */ - private Map onlinePlayerMap = new HashMap<>(); - - public void willLogin(Long uid, String token) { willLoginMap.put(token, new WillLoginInfo(uid, token)); } - - public boolean login(String token) { - if (willLoginMap.containsKey(token)) { - WillLoginInfo info = willLoginMap.remove(token); - PlayerTemplate playerTemplate = new PlayerTemplate(info.getUid()); - onlinePlayerMap.put(playerTemplate.getUid(), playerTemplate); - log.info("!!! Player login !!! uid: {}, {}", playerTemplate.getUid(), playerTemplate); - return true; - } - return false; + public WillLoginInfo get(String token) { + return willLoginMap.get(token); + } + public void removeToken(String token) { + willLoginMap.remove(token); } @Data diff --git a/paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/rpc/LogicClient.java b/paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/rpc/LogicClient.java new file mode 100644 index 0000000..0ff2a28 --- /dev/null +++ b/paradogs-demo/paradogs-demo-gate/src/main/java/com/paradogs/demo/gate/rpc/LogicClient.java @@ -0,0 +1,18 @@ +package com.paradogs.demo.gate.rpc; + +import com.paradogs.framework.common.pojo.misc.LongWrapper; +import com.paradogs.framework.core.annoations.rpc.PRClient; +import com.paradogs.framework.core.annoations.rpc.PRRPCMapping; +import com.paradogs.framework.core.msg.GCAck; + +/** + * @author: yumi + * @date: 2023/11/29 10:18 + * @Description: TODO + */ +@PRClient("logic") +public interface LogicClient { + + @PRRPCMapping("misc.loadPlayer") + GCAck loadPlayer(LongWrapper uid); +} diff --git a/paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-gate/src/main/resources/application.yml similarity index 87% rename from paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml rename to paradogs-demo/paradogs-demo-gate/src/main/resources/application.yml index de27b6a..79db3fc 100644 --- a/paradogs-demo/paradogs-demo-gateway/src/main/resources/application.yml +++ b/paradogs-demo/paradogs-demo-gate/src/main/resources/application.yml @@ -1,11 +1,15 @@ paradogs: server: port: 8001 - type: gateway - key: gateway-1 + type: gate + key: gate-1 master: host: localhost port: 8888 + clients: + - host: localhost + port: 8090 + type: logic spring: datasource: diff --git a/paradogs-demo/paradogs-demo-game/pom.xml b/paradogs-demo/paradogs-demo-logic/pom.xml similarity index 94% rename from paradogs-demo/paradogs-demo-game/pom.xml rename to paradogs-demo/paradogs-demo-logic/pom.xml index 1c2bdf9..2f65476 100644 --- a/paradogs-demo/paradogs-demo-game/pom.xml +++ b/paradogs-demo/paradogs-demo-logic/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - paradogs-demo-game + paradogs-demo-logic 8 diff --git a/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/DemoGameApplication.java b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/DemoLogicApplication.java similarity index 56% rename from paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/DemoGameApplication.java rename to paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/DemoLogicApplication.java index 2fa0c92..68507a8 100644 --- a/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/DemoGameApplication.java +++ b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/DemoLogicApplication.java @@ -1,8 +1,10 @@ -package com.paradogs.test.server; +package com.paradogs.demo.logic; import com.paradogs.framework.core.annoations.EnableParadogs; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableAsync; /** * @author: yumi @@ -11,8 +13,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; */ @EnableParadogs @SpringBootApplication -public class DemoGameApplication { +public class DemoLogicApplication { public static void main(String[] args) { - SpringApplication.run(DemoGameApplication.class, args); + SpringApplication.run(DemoLogicApplication.class, args); } } diff --git a/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/controller/LoginController.java b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/controller/LoginController.java new file mode 100644 index 0000000..ca18e5d --- /dev/null +++ b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/controller/LoginController.java @@ -0,0 +1,42 @@ +package com.paradogs.demo.logic.controller; + +import com.paradogs.demo.logic.event.PlayerLoginEvent; +import com.paradogs.demo.logic.manager.base.PlayerTemplate; +import com.paradogs.framework.common.pojo.misc.LongWrapper; +import com.paradogs.framework.core.annoations.request.PRController; +import com.paradogs.framework.core.annoations.request.PRMsgMapping; +import com.paradogs.framework.core.msg.GCAck; +import com.paradogs.framework.core.utils.EventUtils; +import com.paradogs.framework.core.utils.PRAsync; +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.CompletableFuture; + +/** + * @author: yumi + * @date: 2023/11/29 9:56 + * @Description: TODO + */ +@Slf4j +@PRController +@PRMsgMapping("misc") +public class LoginController { + + @PRMsgMapping(value = "loadPlayer", async = true) + public GCAck loadPlayer(LongWrapper wrapper) { + // 初始化玩家数据 + Long uid = wrapper.getVal(); + PlayerTemplate playerTemplate = new PlayerTemplate(uid); + EventUtils.publishEvent(new PlayerLoginEvent(uid, playerTemplate)); + log.info("Load Player: {}", uid); + return GCAck.success(); + } + + @PRMsgMapping("hello") + public GCAck hello() { + log.info("================ hello game !!!"); + return GCAck.success(); + } + + +} diff --git a/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/event/PlayerLoginEvent.java b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/event/PlayerLoginEvent.java new file mode 100644 index 0000000..ca638a9 --- /dev/null +++ b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/event/PlayerLoginEvent.java @@ -0,0 +1,29 @@ +package com.paradogs.demo.logic.event; + +import com.paradogs.demo.logic.manager.base.PlayerTemplate; +import com.paradogs.framework.common.events.base.AnonEvent; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/11/29 10:36 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PlayerLoginEvent extends AnonEvent { + + /** + * 玩家 ID + */ + private Long uid; + + /** + * 玩家数据 + */ + private PlayerTemplate playerTemplate; + +} diff --git a/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/event/PlayerLogoutEvent.java b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/event/PlayerLogoutEvent.java new file mode 100644 index 0000000..6cdaf95 --- /dev/null +++ b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/event/PlayerLogoutEvent.java @@ -0,0 +1,23 @@ +package com.paradogs.demo.logic.event; + +import com.paradogs.framework.common.events.base.AnonEvent; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/11/29 10:38 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PlayerLogoutEvent extends AnonEvent { + + /** + * 玩家 ID + */ + private Long uid; + +} diff --git a/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/exceptions/GobalExceptionHandler.java similarity index 93% rename from paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java rename to paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/exceptions/GobalExceptionHandler.java index 647d8fc..70dbde8 100644 --- a/paradogs-demo/paradogs-demo-game/src/main/java/com/paradogs/test/server/exceptions/GobalExceptionHandler.java +++ b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/exceptions/GobalExceptionHandler.java @@ -1,4 +1,4 @@ -package com.paradogs.test.server.exceptions; +package com.paradogs.demo.logic.exceptions; import com.paradogs.framework.core.annoations.exception.PRExceptionHandler; import com.paradogs.framework.core.annoations.exception.PRExceptionHandlerClass; diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/PlayerManager.java b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/manager/PlayerManager.java similarity index 52% rename from paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/PlayerManager.java rename to paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/manager/PlayerManager.java index 05f8471..8b3bd7e 100644 --- a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/PlayerManager.java +++ b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/manager/PlayerManager.java @@ -1,17 +1,18 @@ -package com.paradogs.framework.common.manager; +package com.paradogs.demo.logic.manager; import com.paradogs.framework.common.dao.PlayerDao; import com.paradogs.framework.common.entity.Player; -import com.paradogs.framework.common.manager.base.BaseManager; +import com.paradogs.demo.logic.manager.base.BaseManager; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; /** * @author: yumi * @date: 2023/11/23 14:01 * @Description: TODO */ +@Scope("prototype") +@Component public class PlayerManager extends BaseManager { - public PlayerManager(Long uid) { - super(uid); - } } diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/base/BaseManager.java b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/manager/base/BaseManager.java similarity index 71% rename from paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/base/BaseManager.java rename to paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/manager/base/BaseManager.java index e0960b4..ff08883 100644 --- a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/manager/base/BaseManager.java +++ b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/manager/base/BaseManager.java @@ -1,7 +1,10 @@ -package com.paradogs.framework.common.manager.base; +package com.paradogs.demo.logic.manager.base; import com.baomidou.mybatisplus.extension.service.IService; import com.paradogs.framework.common.entity.base.BaseEntity; +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; /** @@ -9,14 +12,21 @@ import org.springframework.beans.factory.annotation.Autowired; * @date: 2023/11/23 14:01 * @Description: TODO */ +@Slf4j public abstract class BaseManager> { @Autowired private D dao; + @Getter + @Setter private T entity; - public BaseManager(Long uid) { + /** + * 加载玩家数据 + * @param uid + */ + public void loadData(Long uid) { this.entity = dao.getById(uid); if (this.entity == null) { try { @@ -27,6 +37,7 @@ public abstract class BaseManager> { e.printStackTrace(); } } + log.debug("Load {}: {}", this.getClass().getSimpleName(), this.entity); } /** diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/base/PlayerTemplate.java b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/manager/base/PlayerTemplate.java similarity index 49% rename from paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/base/PlayerTemplate.java rename to paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/manager/base/PlayerTemplate.java index 99e0500..28ea8b7 100644 --- a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/entity/base/PlayerTemplate.java +++ b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/manager/base/PlayerTemplate.java @@ -1,11 +1,10 @@ -package com.paradogs.framework.common.entity.base; +package com.paradogs.demo.logic.manager.base; -import com.paradogs.framework.common.manager.PlayerManager; -import com.paradogs.framework.common.manager.base.BaseManager; +import com.paradogs.demo.logic.manager.PlayerManager; +import com.paradogs.framework.core.utils.SpringUtils; import lombok.Data; import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; /** * @author: yumi @@ -26,19 +25,16 @@ public class PlayerTemplate { /** * 通过反射初始化所有 Manager */ - Field[] fields = this.getClass().getFields(); + Field[] fields = this.getClass().getDeclaredFields(); for (Field field : fields) { if (BaseManager.class.isAssignableFrom(field.getType())) { try { - field.set(this, field.getType().getConstructor(Long.class).newInstance(uid)); + BaseManager manager = (BaseManager) SpringUtils.getBean(field.getType()); + // 加载数据 + manager.loadData(uid); + field.set(this, manager); } catch (IllegalAccessException e) { e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); } } } diff --git a/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/misc/PlayerOnlineHolder.java b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/misc/PlayerOnlineHolder.java new file mode 100644 index 0000000..4a7d46b --- /dev/null +++ b/paradogs-demo/paradogs-demo-logic/src/main/java/com/paradogs/demo/logic/misc/PlayerOnlineHolder.java @@ -0,0 +1,37 @@ +package com.paradogs.demo.logic.misc; + +import com.paradogs.demo.logic.event.PlayerLoginEvent; +import com.paradogs.demo.logic.event.PlayerLogoutEvent; +import com.paradogs.demo.logic.manager.base.PlayerTemplate; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author: yumi + * @date: 2023/11/29 10:34 + * @Description: TODO + */ +@Slf4j +@Component +public class PlayerOnlineHolder { + + /** + * 在线玩家 uid: template + */ + private Map onlinePlayerMap = new HashMap<>(); + + @EventListener(PlayerLoginEvent.class) + public void PlayerLoginEventHandler(PlayerLoginEvent event) { + onlinePlayerMap.put(event.getUid(), event.getPlayerTemplate()); + } + + @EventListener(PlayerLogoutEvent.class) + public void PlayerLogoutEventHandler(PlayerLogoutEvent event) { + onlinePlayerMap.remove(event.getUid()); + } + +} diff --git a/paradogs-demo/paradogs-demo-game/src/main/resources/application.yml b/paradogs-demo/paradogs-demo-logic/src/main/resources/application.yml similarity index 95% rename from paradogs-demo/paradogs-demo-game/src/main/resources/application.yml rename to paradogs-demo/paradogs-demo-logic/src/main/resources/application.yml index 1233c59..0d96fe1 100644 --- a/paradogs-demo/paradogs-demo-game/src/main/resources/application.yml +++ b/paradogs-demo/paradogs-demo-logic/src/main/resources/application.yml @@ -1,8 +1,8 @@ paradogs: server: port: 8090 - type: game - key: game-1 + type: logic + key: logic-1 master: host: localhost port: 8888 diff --git a/paradogs-demo/paradogs-demo-login/pom.xml b/paradogs-demo/paradogs-demo-login/pom.xml index cd082b8..91ae9a2 100644 --- a/paradogs-demo/paradogs-demo-login/pom.xml +++ b/paradogs-demo/paradogs-demo-login/pom.xml @@ -19,7 +19,7 @@ com.paradogs - paradogs-framework-connector-starter + paradogs-framework-gate-starter diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/DemoLoginApplication.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/DemoLoginApplication.java index 82654e3..b025898 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/DemoLoginApplication.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/DemoLoginApplication.java @@ -1,8 +1,8 @@ package com.paradogs.demo.login; -import com.paradogs.framework.connector.PRConnectorServerMsgHandler; +import com.paradogs.framework.gate.PRGateServerMsgHandler; import com.paradogs.framework.core.annoations.EnableParadogs; -import com.paradogs.framework.core.netty.PRAbstractServerMsgHandler; +import com.paradogs.framework.core.netty.server.PRAbServerMsgHandler; import com.paradogs.framework.core.utils.SpringUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -17,7 +17,5 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class DemoLoginApplication { public static void main(String[] args) { SpringApplication.run(DemoLoginApplication.class, args); - PRAbstractServerMsgHandler bean = SpringUtils.getBean(PRConnectorServerMsgHandler.class); - System.out.println(bean); } } diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java index 4d0c67d..d6fd32b 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/controller/LoginController.java @@ -2,11 +2,12 @@ package com.paradogs.demo.login.controller; import com.paradogs.framework.common.pojo.cg.CGLogin; import com.paradogs.framework.common.pojo.cg.CGPrepareLogin; -import com.paradogs.framework.common.pojo.gc.GCAllocGateway; -import com.paradogs.demo.login.rpc.GatewayClient; +import com.paradogs.demo.login.rpc.GateClient; import com.paradogs.demo.login.rpc.MasterClient; import com.paradogs.framework.common.dao.PlayerDao; import com.paradogs.framework.common.entity.Player; +import com.paradogs.framework.common.pojo.gc.GCAllocGateway; +import com.paradogs.framework.common.pojo.gc.GCApplyGate; import com.paradogs.framework.core.annoations.request.PRController; import com.paradogs.framework.core.annoations.request.PRMsgMapping; import com.paradogs.framework.core.msg.GCAck; @@ -32,36 +33,33 @@ public class LoginController { private MasterClient masterClient; @Autowired - private GatewayClient gatewayClient; + private GateClient gateClient; @Autowired private PlayerDao playerDao; - @PRMsgMapping("login") - public CompletableFuture login(CGLogin dto) { - AtomicLong uid = new AtomicLong(); - return PRAsync.supply(() -> { - Player player = playerDao.getOne(Wrap.lbq() - .eq(Player::getAccount, dto.getAccount()) - .eq(Player::getPwd, dto.getPassword())); - return player; - }) - .thenApply(player -> { - if (player == null) { - GCAck.fail(); - } - uid.set(player.getUid()); - log.info("!!! 玩家登录成功: {}, {}", player.getAccount(), player); + @PRMsgMapping(value = "applyGate", async = true) + public GCApplyGate login(CGLogin dto) { + Player player = playerDao.getOne(Wrap.lbq() + .eq(Player::getAccount, dto.getAccount()) + .eq(Player::getPwd, dto.getPassword())); + + if (player == null) { + GCAck.fail(); + } + + log.info("!!! 玩家登录成功: {}, {}", player.getAccount(), player); + + // 申请一个可以连接的网关 + GCAllocGateway gcAllocGateway = masterClient.allocGate(); - // 申请一个可以连接的网关 - return masterClient.allocGateway(); + // 网关服准备登录信息 + String token = UUID.randomUUID().toString(); + gateClient.prepareLogin(new CGPrepareLogin(player.getUid(), token)); + GCApplyGate gc = new GCApplyGate(gcAllocGateway.getHost(), gcAllocGateway.getPort(), token); - }).thenApply(msg -> { - // 网关服准备登录信息 - gatewayClient.prepareLogin(new CGPrepareLogin(uid.get(), UUID.randomUUID().toString())); - // 返回连接地址 - return msg; // 这个是发给客户端的,而不是发给服务器的,要特殊处理 - }); + // 返回连接地址 + return gc; // 这个是发给客户端的,而不是发给服务器的,要特殊处理 } } diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GateClient.java similarity index 77% rename from paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java rename to paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GateClient.java index 563b666..2386179 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GatewayClient.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/GateClient.java @@ -1,7 +1,7 @@ package com.paradogs.demo.login.rpc; import com.paradogs.framework.common.pojo.cg.CGPrepareLogin; -import com.paradogs.framework.core.annoations.rpc.PRRPC; +import com.paradogs.framework.core.annoations.rpc.PRClient; import com.paradogs.framework.core.annoations.rpc.PRRPCMapping; import com.paradogs.framework.core.msg.GCAck; @@ -10,8 +10,8 @@ import com.paradogs.framework.core.msg.GCAck; * @date: 2023/11/13 14:50 * @Description: TODO */ -@PRRPC("gateway") -public interface GatewayClient { +@PRClient("gate") +public interface GateClient { @PRRPCMapping("prepareLogin") GCAck prepareLogin(CGPrepareLogin prepareLogin); diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/LogicClient.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/LogicClient.java new file mode 100644 index 0000000..89478d8 --- /dev/null +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/LogicClient.java @@ -0,0 +1,9 @@ +package com.paradogs.demo.login.rpc; + +/** + * @author: yumi + * @date: 2023/11/29 10:08 + * @Description: TODO + */ +public interface LogicClient { +} diff --git a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java index 6ac02d9..50ca82a 100644 --- a/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java +++ b/paradogs-demo/paradogs-demo-login/src/main/java/com/paradogs/demo/login/rpc/MasterClient.java @@ -1,7 +1,7 @@ package com.paradogs.demo.login.rpc; import com.paradogs.framework.common.pojo.gc.GCAllocGateway; -import com.paradogs.framework.core.annoations.rpc.PRRPC; +import com.paradogs.framework.core.annoations.rpc.PRClient; import com.paradogs.framework.core.annoations.rpc.PRRPCMapping; /** @@ -9,10 +9,10 @@ import com.paradogs.framework.core.annoations.rpc.PRRPCMapping; * @date: 2023/11/13 11:19 * @Description: TODO */ -@PRRPC("master") +@PRClient("master") public interface MasterClient { - @PRRPCMapping("_master.allocGateway") - GCAllocGateway allocGateway(); + @PRRPCMapping("_master.allocGate") + GCAllocGateway allocGate(); } diff --git a/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/DemoMasterApplication.java b/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/DemoMasterApplication.java index 75f8e16..dfed78b 100644 --- a/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/DemoMasterApplication.java +++ b/paradogs-demo/paradogs-demo-master/src/main/java/com/paradogs/demo/master/DemoMasterApplication.java @@ -1,8 +1,6 @@ package com.paradogs.demo.master; import com.paradogs.framework.core.annoations.EnableParadogs; -import com.paradogs.framework.core.netty.PRAbstractServerMsgHandler; -import com.paradogs.framework.core.utils.SpringUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/paradogs-demo/pom.xml b/paradogs-demo/pom.xml index 90e026c..405438b 100644 --- a/paradogs-demo/pom.xml +++ b/paradogs-demo/pom.xml @@ -12,9 +12,9 @@ paradogs-demo pom - paradogs-demo-game + paradogs-demo-logic paradogs-demo-client - paradogs-demo-gateway + paradogs-demo-gate paradogs-demo-login paradogs-demo-master diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGGatewayLogin.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGGatewayLogin.java index a591526..0774ef9 100644 --- a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGGatewayLogin.java +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/cg/CGGatewayLogin.java @@ -4,6 +4,7 @@ import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; /** * @author: yumi @@ -13,6 +14,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor +@ToString(callSuper = true) @ProtobufClass public class CGGatewayLogin { diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/gc/GCApplyGate.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/gc/GCApplyGate.java new file mode 100644 index 0000000..69e5f1f --- /dev/null +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/gc/GCApplyGate.java @@ -0,0 +1,34 @@ +package com.paradogs.framework.common.pojo.gc; + +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/11/29 10:46 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ProtobufClass +public class GCApplyGate { + + /** + * 主机 + */ + private String host; + + /** + * 端口 + */ + private Integer port; + + /** + * 登录凭证 + */ + private String token; + +} diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/misc/IntWrapper.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/misc/IntWrapper.java new file mode 100644 index 0000000..4a51adb --- /dev/null +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/misc/IntWrapper.java @@ -0,0 +1,21 @@ +package com.paradogs.framework.common.pojo.misc; + +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/11/29 14:11 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ProtobufClass +public class IntWrapper { + + private Integer val; + +} diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/misc/LongWrapper.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/misc/LongWrapper.java new file mode 100644 index 0000000..8da05de --- /dev/null +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/misc/LongWrapper.java @@ -0,0 +1,21 @@ +package com.paradogs.framework.common.pojo.misc; + +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/11/29 14:10 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ProtobufClass +public class LongWrapper { + + private Long val; + +} diff --git a/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/misc/StringWrapper.java b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/misc/StringWrapper.java new file mode 100644 index 0000000..e80d95f --- /dev/null +++ b/paradogs-framework/paradogs-framework-common/src/main/java/com/paradogs/framework/common/pojo/misc/StringWrapper.java @@ -0,0 +1,21 @@ +package com.paradogs.framework.common.pojo.misc; + +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: yumi + * @date: 2023/11/29 14:11 + * @Description: TODO + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ProtobufClass +public class StringWrapper { + + private String val; + +} diff --git a/paradogs-framework/paradogs-framework-connector-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-connector-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 8fd7c0c..0000000 --- a/paradogs-framework/paradogs-framework-connector-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -com.paradogs.framework.connector.PRConnectorServerMsgHandler \ No newline at end of file diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java index f87383e..f387142 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/CoreStarter.java @@ -2,9 +2,6 @@ package com.paradogs.framework.core; import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector; import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; -import com.paradogs.framework.core.netty.clients.PRMasterClient; -import com.paradogs.framework.core.netty.server.PRServer; -import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java index 3422149..5422afe 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/EnableParadogs.java @@ -3,14 +3,10 @@ package com.paradogs.framework.core.annoations; import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector; import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; import com.paradogs.framework.core.config.*; -import com.paradogs.framework.core.netty.clients.PRMasterClient; -import com.paradogs.framework.core.netty.server.PRServer; +import com.paradogs.framework.core.netty.clients.common.PRClientLaunch; +import com.paradogs.framework.core.netty.server.PRServerLaunch; import com.paradogs.framework.core.netty.server.ServerProperties; -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.ComponentScans; import org.springframework.context.annotation.Import; -import org.springframework.scheduling.annotation.EnableAsync; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -28,8 +24,8 @@ import java.lang.annotation.Target; // 等同于使用 META-INF.spring,看 @Import 注释,主要区别在于 @Import 可以手动注册,META-INF 为导入依赖自动注册 PRRPCProxyBeanImportSelector.class, PRRequestInterfaceSelector.class, - PRServer.class, // 启动服务器 - PRMasterClient.class, // 连接 master 服务器 + PRServerLaunch.class, // 启动服务器 + PRClientLaunch.class, // 连接 master 服务器 ServerProperties.class, NettyConfiguration.class, QueueConfiguration.class, diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMapping.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMapping.java index 35ab799..6c60992 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMapping.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRMsgMapping.java @@ -21,4 +21,6 @@ public @interface PRMsgMapping { */ String value(); + boolean async() default false; + } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java index e58e6a3..269cff1 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/request/PRRequestInterfaceSelector.java @@ -41,11 +41,11 @@ public class PRRequestInterfaceSelector extends BaseImportSelector { // 计算路由 PRMsgMapping parentRouteMapping = AnnotationUtils.findAnnotation(method.getDeclaringClass(), PRMsgMapping.class); - PRMsgMapping PRMsgMapping = AnnotationUtils.findAnnotation(method, PRMsgMapping.class); - if (PRMsgMapping == null) { + PRMsgMapping msgMapping = AnnotationUtils.findAnnotation(method, PRMsgMapping.class); + if (msgMapping == null) { continue; } - String route = (parentRouteMapping != null ? (parentRouteMapping.value() + ".") : "") + PRMsgMapping.value(); + String route = (parentRouteMapping != null ? (parentRouteMapping.value() + ".") : "") + msgMapping.value(); if (PRMsgMappingHolder.containsRoute(route)) { throw new RuntimeException("Duplicate route found: " + route); } @@ -71,7 +71,7 @@ public class PRRequestInterfaceSelector extends BaseImportSelector { } } - PRMsgMappingHolder.put(route, new MsgMapping(targetMsgClass, method)); + PRMsgMappingHolder.put(route, new MsgMapping(targetMsgClass, method, msgMapping.async())); log.debug("Register RequestMapping: [{}]", route); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPC.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRClient.java similarity index 91% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPC.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRClient.java index 99814bc..3d1d38c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPC.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRClient.java @@ -10,7 +10,7 @@ import java.lang.annotation.*; @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented -public @interface PRRPC { +public @interface PRClient { /** * 服务名 diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCInterfaceScanner.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCInterfaceScanner.java index 21767fd..646462d 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCInterfaceScanner.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCInterfaceScanner.java @@ -28,7 +28,7 @@ public class PRRPCInterfaceScanner extends BaseScanner { @Override protected boolean isCandidateComponent(MetadataReader metadataReader) throws IOException { return metadataReader.getClassMetadata().isInterface() - && metadataReader.getAnnotationMetadata().hasAnnotation(PRRPC.class.getName()); + && metadataReader.getAnnotationMetadata().hasAnnotation(PRClient.class.getName()); } /** @@ -38,7 +38,7 @@ public class PRRPCInterfaceScanner extends BaseScanner { @Override protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) { return beanDefinition.getMetadata().isInterface() - && beanDefinition.getMetadata().hasAnnotation(PRRPC.class.getName()); + && beanDefinition.getMetadata().hasAnnotation(PRClient.class.getName()); } @Override diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCMapping.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCMapping.java index b141722..29d415c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCMapping.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCMapping.java @@ -22,19 +22,4 @@ public @interface PRRPCMapping { */ String value(); - /** - * 返回值类型 - */ - Class returnType() default PRMsg.class; - - /** - * 同步暂时未完成 - */ - @Deprecated - SyncType syncType() default SyncType.SYNC; - - enum SyncType { - ASYNC, - SYNC - } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java index 883247c..4e7889d 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyBeanImportSelector.java @@ -50,8 +50,8 @@ public class PRRPCProxyBeanImportSelector extends BaseImportSelector { for (Method method : methods) { // 计算路由 - PRRPCMapping PRRPCMapping = AnnotationUtils.findAnnotation(method, PRRPCMapping.class); - String route = PRRPCMapping.value() + "|resp"; + PRRPCMapping mapping = AnnotationUtils.findAnnotation(method, PRRPCMapping.class); + String route = mapping.value() + "|resp"; if (PRRPCHolder.getMappingMap().containsKey(route)) { throw new RuntimeException("Duplicate route found: [" + route + "]"); @@ -80,11 +80,11 @@ public class PRRPCProxyBeanImportSelector extends BaseImportSelector { throw new RuntimeException("Route already exist: " + route); } Class targetMsgClass = (Class) method.getReturnType(); - PRRPCHolder.getMappingMap().put(route, new MsgMapping(targetMsgClass, method)); + PRRPCHolder.getMappingMap().put(route, new MsgMapping(targetMsgClass, method, false)); log.debug("Register RPC callback mapping: [{}]", route); } catch (Exception e) { - throw new RuntimeException("RPC[" + PRRPCMapping.value() + "] return must extends BaseMsg(?GCMsg)"); + throw new RuntimeException("RPC[" + mapping.value() + "] return must extends BaseMsg(?GCMsg)"); } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java index 8582809..dcccd66 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCProxyInterceptor.java @@ -2,7 +2,6 @@ package com.paradogs.framework.core.annoations.rpc; import com.paradogs.framework.core.events.RPCRequestEvent; import com.paradogs.framework.core.utils.EventUtils; -import com.paradogs.framework.core.utils.MsgUtils; import com.paradogs.framework.core.utils.RouteUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.aop.support.AopUtils; @@ -48,7 +47,7 @@ public class PRRPCProxyInterceptor implements MethodInterceptor { targetClass = AopUtils.getTargetClass(obj); } - PRRPC PRRPC = AnnotationUtils.findAnnotation(targetClass, PRRPC.class); + PRClient PRClient = AnnotationUtils.findAnnotation(targetClass, PRClient.class); // 获得参数消息 Object requestData = null; @@ -72,7 +71,7 @@ public class PRRPCProxyInterceptor implements MethodInterceptor { // 获得返回值类型 Class returnType = method.getReturnType(); - if (returnType == null || returnType.equals(Void.TYPE)) { + if (returnType.equals(Void.TYPE)) { return null; } @@ -82,7 +81,7 @@ public class PRRPCProxyInterceptor implements MethodInterceptor { CompletableFuture promise = new CompletableFuture<>(); // 解耦 MsgUtils EventUtils.publishEvent(new RPCRequestEvent( - PRRPC.value() + RouteUtils.SERVER_SEPARATOR + PRRPCMapping.value(), + PRClient.value() + RouteUtils.SERVER_SEPARATOR + PRRPCMapping.value(), requestData, returnType, promise diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java index fe98b7d..e6b4916 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/config/NettyConfiguration.java @@ -1,20 +1,20 @@ package com.paradogs.framework.core.config; import com.paradogs.framework.core.exceptions.GlobalExceptionDispatch; -import com.paradogs.framework.core.netty.clients.MasterClientProperties; -import com.paradogs.framework.core.netty.clients.PRMasterClient; -import com.paradogs.framework.core.netty.clients.PRMasterClientChannelInitializer; -import com.paradogs.framework.core.netty.clients.PRMasterClientMsgHandler; -import com.paradogs.framework.core.netty.server.PRServer; -import com.paradogs.framework.core.netty.server.ServerProperties; +import com.paradogs.framework.core.netty.clients.common.ClientsProperties; +import com.paradogs.framework.core.netty.clients.common.PRServerClientChannelInitializer; +import com.paradogs.framework.core.netty.clients.common.PRServerClientMsgHandler; +import com.paradogs.framework.core.netty.clients.master.MasterProperties; import com.paradogs.framework.core.netty.*; +import com.paradogs.framework.core.netty.clients.master.PRMasterClientChannelInitializer; +import com.paradogs.framework.core.netty.clients.master.PRMasterClientMsgHandler; +import com.paradogs.framework.core.netty.server.PRAbServerMsgHandler; +import com.paradogs.framework.core.netty.server.PRServerChannelInitializer; import com.paradogs.framework.core.utils.MsgUtils; import com.paradogs.framework.core.utils.PRAsync; import org.springframework.boot.autoconfigure.AutoConfiguration; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Scope; /** @@ -31,21 +31,24 @@ public class NettyConfiguration { } @Bean - public MasterClientProperties masterProperties() {return new MasterClientProperties();} + public MasterProperties masterProperties() {return new MasterProperties();} @Bean - @ConditionalOnMissingBean(PRAbstractServerChannelInitializer.class) - public PRAbstractServerChannelInitializer defaultServerChannelInitializer(PRAbstractServerMsgHandler serverMsgHandler) { - return new PRDefaultServerChannelInitializer(serverMsgHandler); + public ClientsProperties clientsProperties() {return new ClientsProperties();} + + @Bean + public PRMasterClientChannelInitializer masterClientChannelInitializer(PRMasterClientMsgHandler msgHandler) { + return new PRMasterClientChannelInitializer(msgHandler); } + @Scope("prototype") // @Scope 代表了懒加载,启动时不会初始化 @Bean - public PRMasterClientChannelInitializer PRMasterClientChannelInitializer(PRMasterClientMsgHandler clientMsgHandler) { - return new PRMasterClientChannelInitializer(clientMsgHandler); + public PRServerClientChannelInitializer serverClientChannelInitializer(PRServerClientMsgHandler msgHandler) { + return new PRServerClientChannelInitializer(msgHandler); } @Bean - public PRMasterClientMsgHandler PRMasterClientMsgHandler() { + public PRMasterClientMsgHandler masterClientMsgHandler() { return new PRMasterClientMsgHandler(); } @@ -54,6 +57,11 @@ public class NettyConfiguration { return new GlobalExceptionDispatch(); } + @Bean + public PRServerChannelInitializer serverChannelInitializer(PRAbServerMsgHandler msgHandler) { + return new PRServerChannelInitializer(msgHandler); + } + @Bean @Scope("prototype") public PRCodec serverCodec() { diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientActiveEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerClientActiveEvent.java similarity index 88% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientActiveEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerClientActiveEvent.java index 7df9ca3..21b3be1 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientActiveEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerClientActiveEvent.java @@ -14,7 +14,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class MasterClientActiveEvent extends AnonEvent { +public class ServerClientActiveEvent extends AnonEvent { private ChannelHandlerContext ctx; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientInactiveEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerClientInactiveEvent.java similarity index 87% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientInactiveEvent.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerClientInactiveEvent.java index 8a47e12..31c805e 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/MasterClientInactiveEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerClientInactiveEvent.java @@ -14,7 +14,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class MasterClientInactiveEvent extends AnonEvent { +public class ServerClientInactiveEvent extends AnonEvent { private ChannelHandlerContext ctx; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerClientStartEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerClientStartEvent.java new file mode 100644 index 0000000..d5b5942 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerClientStartEvent.java @@ -0,0 +1,13 @@ +package com.paradogs.framework.core.events; + +import com.paradogs.framework.common.events.base.AnonEvent; +import lombok.Data; + +/** + * @author: yumi + * @date: 2023/11/27 11:05 + * @Description: TODO + */ +@Data +public class ServerClientStartEvent extends AnonEvent { +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerStartEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerStartEvent.java index b29f676..983a3d9 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerStartEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/ServerStartEvent.java @@ -12,12 +12,4 @@ import lombok.Data; @Data public class ServerStartEvent extends AnonEvent { - /** - * 启动耗时 - */ - private Long startTimeout; - - public ServerStartEvent(Long startTimeout) { - this.startTimeout = startTimeout; - } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/MessageException.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/MessageException.java new file mode 100644 index 0000000..c81c0d6 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/MessageException.java @@ -0,0 +1,28 @@ +package com.paradogs.framework.core.exceptions; + +import com.paradogs.framework.core.exceptions.base.BaseUncheckedException; + +/** + * @author: yumi + * @date: 2023/11/29 14:17 + * @Description: TODO + */ +public class MessageException extends BaseUncheckedException { + + public MessageException(int code, String message) { + super(code, message); + } + + public MessageException() { + super(-1, "fail"); + } + + public MessageException(String message) { + super(-1, message); + } + + public MessageException(Throwable cause) { + super(cause); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/base/BaseUncheckedException.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/base/BaseUncheckedException.java index 31f9c21..8117181 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/base/BaseUncheckedException.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/exceptions/base/BaseUncheckedException.java @@ -20,4 +20,8 @@ public class BaseUncheckedException extends RuntimeException { this.code = code; } + public BaseUncheckedException(Throwable cause) { + super(cause); + } + } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java index a968839..19f62c1 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/CommonController.java @@ -1,11 +1,8 @@ package com.paradogs.framework.core.msg; import com.paradogs.framework.core.annoations.request.PRController; -import com.paradogs.framework.core.annoations.request.PRMsg; import com.paradogs.framework.core.annoations.request.PRMsgMapping; import com.paradogs.framework.core.events.RPCRespEvent; -import com.paradogs.framework.core.netty.server.PRConnectionHolder; -import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.utils.EventUtils; import lombok.extern.slf4j.Slf4j; @@ -38,15 +35,4 @@ public class CommonController { EventUtils.publishEvent(new RPCRespEvent(msg)); } - /** - * 客户端服务器发来的初始化信息 - * @param properties - */ - @PRMsgMapping("initInfo") - public void initInfo(@PRMsg ServerProperties properties) { - // 初始化连接的服务器信息(建立连接后,服务器主动发送自己的信息) - PRConnectionHolder.initConnection(PRMsgContextHolder.getChannel(), properties); - log.info("Server connection init success: {}|{}", properties.getType(), properties.getKey()); - } - } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/MsgHeader.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/MsgHeader.java index af9d079..f215ee7 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/MsgHeader.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/MsgHeader.java @@ -6,6 +6,7 @@ import com.baidu.bjf.remoting.protobuf.ProtobufProxy; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; import com.google.protobuf.InvalidProtocolBufferException; import com.paradogs.framework.core.utils.BeanUtils; +import com.paradogs.framework.core.utils.ProtoUtils; import com.paradogs.framework.core.utils.RandomUtils; import com.paradogs.framework.core.utils.RouteUtils; import io.netty.buffer.ByteBuf; @@ -24,11 +25,6 @@ import java.time.LocalDateTime; @Data public class MsgHeader implements IMsgSerializable { - /** - * 解析器(也可以用 ProtoUtils) - */ - private static Codec codec = ProtobufProxy.create(MsgHeader.class); - /** * 消息唯一 ID,用于请求 - 响应 */ @@ -87,7 +83,7 @@ public class MsgHeader implements IMsgSerializable { */ @Override public void serialization(ByteBuf out) throws IOException { - byte[] bytes = codec.encode(this); + byte[] bytes = ProtoUtils.encode(this); out.writeShort(bytes.length); out.writeBytes(bytes); } @@ -106,7 +102,7 @@ public class MsgHeader implements IMsgSerializable { @Override public void deserialization(byte[] bytes) throws IOException { - MsgHeader msgHeader = codec.decode(bytes); + MsgHeader msgHeader = ProtoUtils.decode(bytes, this.getClass()); BeanUtils.copyProperties(msgHeader, this); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java index fbffa31..d7de248 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/PRMsg.java @@ -4,6 +4,7 @@ import com.baidu.bjf.remoting.protobuf.FieldType; import com.baidu.bjf.remoting.protobuf.annotation.Protobuf; import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; import com.baomidou.mybatisplus.annotation.TableField; +import com.paradogs.framework.common.pojo.cg.CGPrepareLogin; import com.paradogs.framework.common.pojo.gc.GCAllocGateway; import com.paradogs.framework.core.utils.BeanUtils; import com.paradogs.framework.core.utils.ProtoUtils; @@ -44,6 +45,11 @@ public class PRMsg { this.msgHeader = new MsgHeader(); this.msgData = data; } + public PRMsg(String route, T data) { + this.msgHeader = new MsgHeader(); + this.msgHeader.setRoute(route); + this.msgData = data; + } /** * 序列化(编码) @@ -80,41 +86,6 @@ public class PRMsg { this.msgData = ProtoUtils.decode(bytes, clz); } - -// /** -// * 序列化(编码) -// * ps: BaseMsg 的 JProtobuf 序列化时,this 指向 BaseMsg(实际运行会指向子类),无法通过编译,需要额外处理 (ProtoUtils), -// * 不指定 Codec<> 的泛型虽然可以通过编译但是无法正确的编解码 -// * @param out -// */ -// @Override -// public void serialization(ByteBuf out) { -// -// byte[] bytes = ProtoUtils.encode(this); -// // 写入消息体 -// out.writeBytes(bytes); -// -// } -// -// /** -// * 反序列化(解码) -// * @param in -// */ -// @Override -// public void deserialization(ByteBuf in) throws IOException { -// // 读取消息体 byte 数组 -// byte[] bytes = new byte[in.readableBytes()]; -// in.readBytes(bytes); -// this.deserialization(bytes); -// } -// -// @Override -// public void deserialization(byte[] bytes) { -// PRMsg msg = ProtoUtils.decode(bytes, this.getClass()); -// // 将属性设置到类上 -// BeanUtils.copyProperties(msg, this); -// } - public void setMsgHeader(MsgHeader msgHeader) { this.msgHeader = msgHeader; } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java index f501ec6..a344a84 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/msg/route/MsgMapping.java @@ -17,8 +17,19 @@ import java.lang.reflect.Method; @NoArgsConstructor public class MsgMapping { + /** + * 参数消息类型 + */ private Class msgClass; + /** + * 对应方法 + */ private Method method; + /** + * 是否异步 + */ + private boolean async; + } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbChannelInitializer.java similarity index 89% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractChannelInitializer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbChannelInitializer.java index a9f4906..e2fdd00 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractChannelInitializer.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbChannelInitializer.java @@ -14,14 +14,14 @@ import org.springframework.beans.factory.annotation.Autowired; * @Description: TODO */ @Slf4j -public abstract class PRAbstractChannelInitializer extends ChannelInitializer { +public abstract class PRAbChannelInitializer extends ChannelInitializer { @Autowired private ProtocolProperties protocolProperties; - private PRAbstractMsgHandler msgHandler; + private PRAbMsgHandler msgHandler; - public PRAbstractChannelInitializer(PRAbstractMsgHandler msgHandler) { + public PRAbChannelInitializer(PRAbMsgHandler msgHandler) { this.msgHandler = msgHandler; } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbMsgHandler.java similarity index 62% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbMsgHandler.java index 15cde76..6571216 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbMsgHandler.java @@ -1,10 +1,11 @@ package com.paradogs.framework.core.netty; +import com.paradogs.framework.core.events.ServerClientActiveEvent; +import com.paradogs.framework.core.events.ServerClientInactiveEvent; import com.paradogs.framework.core.exceptions.GlobalExceptionDispatch; import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.PRMsgContextHolder; -import com.paradogs.framework.core.netty.server.PRConnectionHolder; -import com.paradogs.framework.core.queue.PRQueueHolder; +import com.paradogs.framework.core.utils.EventUtils; import com.paradogs.framework.core.utils.SpringUtils; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; @@ -16,14 +17,12 @@ import lombok.extern.slf4j.Slf4j; * @Description: 消息加入到 MAIN 处理队列 */ @Slf4j -public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandler { +public abstract class PRAbMsgHandler extends SimpleChannelInboundHandler { /** * 消息处理 */ - protected void processMsg(ByteData msg) throws Exception { - PRQueueHolder.putMsg(PRQueueHolder.QueueType.MAIN, msg); - } + protected abstract void processMsg(ByteData msg) throws Exception; /** * 设置自定义参数 @@ -39,35 +38,18 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandle PRMsgContextHolder.setContext(ctx, msg.getMsgHeader().getPId()); } - /** - * 校验权限,是否可以处理消息 - * @param ctx - * @param msg - * @return - */ - protected boolean validPerm(ChannelHandlerContext ctx, ByteData msg) { - if (PRConnectionHolder.isExcludeRoute(msg.getMsgHeader().getRoute())) { - return true; - } - return PRConnectionHolder.isInitializedChannel(ctx.channel()); - } - /** * 消息处理 * @param ctx * @param msg */ protected final void channelRead0(ChannelHandlerContext ctx, ByteData msg) { - if (!validPerm(ctx, msg)) { - log.error("Connection not initialized: {}", PRConnectionHolder.getConnKey(ctx.channel())); - return; - } setProps(ctx, msg); setContext(ctx, msg); - log.debug("<<<<< [{}], Sender: {}, {}", msg.getMsgHeader().getRoute(), PRConnectionHolder.getConnKey(ctx.channel()), msg.getMsgHeader()); + log.debug("{} <<<<< [{}], {}", msg.getMsgHeader().getRoute(), msg.getMsgHeader().getSendServer(), msg); try { // 消息处理 @@ -87,7 +69,7 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandle */ @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { - PRConnectionHolder.addNewConnection(ctx.channel()); + EventUtils.publishEvent(new ServerClientActiveEvent(ctx)); } /** @@ -97,7 +79,7 @@ public abstract class PRAbstractMsgHandler extends SimpleChannelInboundHandle */ @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { - PRConnectionHolder.removeConn(ctx.channel()); + EventUtils.publishEvent(new ServerClientInactiveEvent(ctx)); } @Override diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientChannelInitializer.java deleted file mode 100644 index fb3f4c3..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientChannelInitializer.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.paradogs.framework.core.netty; - -/** - * @author: yumi - * @date: 2023/11/3 11:18 - * @Description: TODO - */ -public abstract class PRAbstractClientChannelInitializer extends PRAbstractChannelInitializer { - - public PRAbstractClientChannelInitializer(PRAbstractMsgHandler msgHandler) { - super(msgHandler); - } - -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerChannelInitializer.java deleted file mode 100644 index 76811be..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerChannelInitializer.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.paradogs.framework.core.netty; - -/** - * @author: yumi - * @date: 2023/11/3 11:10 - * @Description: TODO - */ -public abstract class PRAbstractServerChannelInitializer extends PRAbstractChannelInitializer { - - public PRAbstractServerChannelInitializer(PRAbstractMsgHandler msgHandler) { - super(msgHandler); - } - -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerMsgHandler.java deleted file mode 100644 index 2c93812..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractServerMsgHandler.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.paradogs.framework.core.netty; - -/** - * @author: yumi - * @date: 2023/11/3 11:18 - * @Description: TODO - */ -public abstract class PRAbstractServerMsgHandler extends PRAbstractMsgHandler { -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRConnHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRConnHolder.java new file mode 100644 index 0000000..0c83b88 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRConnHolder.java @@ -0,0 +1,58 @@ +package com.paradogs.framework.core.netty; + +import com.paradogs.framework.core.netty.server.PRConnection; +import com.paradogs.framework.core.netty.server.ServerProperties; +import io.netty.channel.Channel; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author: yumi + * @date: 2023/11/27 13:40 + * @Description: TODO + */ +public class PRConnHolder { + + private static Map> typeConnMap = new ConcurrentHashMap<>(); + private static Map channelConnMap = new ConcurrentHashMap<>(); + + public static void addConn(String type, PRConnection conn) { + if (!typeConnMap.containsKey(type)) { + typeConnMap.put(type, new ArrayList<>()); + } + typeConnMap.get(type).add(conn); + channelConnMap.put(conn.getChannel(), conn); + } + + public static void initConn(Channel channel, ServerProperties properties) { + addConn(properties.getType(), new PRConnection(channel, properties)); + } + + public static List getConns(String type) { + if (!typeConnMap.containsKey(type)) { + return new ArrayList<>(); + } + return typeConnMap.get(type); + } + + public static PRConnection getConn(String type) { + if (!typeConnMap.containsKey(type)) { + return null; + } + return typeConnMap.get(type).get(0); + } + + public static PRConnection getConn(Channel channel) { + return channelConnMap.get(channel); + } + + public static void removeConn(String type) { + for (PRConnection conn : typeConnMap.remove(type)) { + channelConnMap.remove(conn.getChannel()); + } + } +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultMsgHandler.java deleted file mode 100644 index d47edbd..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultMsgHandler.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.paradogs.framework.core.netty; - -import com.paradogs.framework.core.msg.ByteData; -import io.netty.channel.ChannelHandler; - -/** - * @author: yumi - * @date: 2023/11/6 17:31 - * @Description: TODO - */ -@ChannelHandler.Sharable -public class PRDefaultMsgHandler extends PRAbstractServerMsgHandler { -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultServerChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultServerChannelInitializer.java deleted file mode 100644 index 99c62a2..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRDefaultServerChannelInitializer.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.paradogs.framework.core.netty; - -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/11/3 11:25 - * @Description: TODO - */ -@Component -@ConditionalOnMissingBean -public class PRDefaultServerChannelInitializer extends PRAbstractServerChannelInitializer { - - public PRDefaultServerChannelInitializer(PRAbstractMsgHandler msgHandler) { - super(msgHandler); - } -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRAbClientMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRAbClientMsgHandler.java new file mode 100644 index 0000000..8516a94 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRAbClientMsgHandler.java @@ -0,0 +1,45 @@ +package com.paradogs.framework.core.netty.clients; + +import com.paradogs.framework.core.netty.PRAbMsgHandler; +import com.paradogs.framework.core.netty.PRConnHolder; +import com.paradogs.framework.core.netty.server.PRConnection; +import io.netty.channel.ChannelHandlerContext; + +/** + * @author: yumi + * @date: 2023/11/3 11:18 + * @Description: TODO + */ +public abstract class PRAbClientMsgHandler extends PRAbMsgHandler { + + private String type; + + public PRAbClientMsgHandler(String type) { + this.type = type; + } + + /** + * 连接建立事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + super.channelActive(ctx); + PRConnection conn = new PRConnection(); + conn.setChannel(ctx.channel()); + PRConnHolder.addConn(type, conn); + } + + /** + * 连接断开事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelInactive(ChannelHandlerContext ctx) throws Exception { + super.channelInactive(ctx); + PRConnHolder.removeConn(type); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRClient.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRClient.java deleted file mode 100644 index 2d7b284..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRClient.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.paradogs.framework.core.netty.clients; - -import com.paradogs.framework.core.netty.server.PRConnectionHolder; -import io.netty.channel.Channel; -import lombok.Getter; -import lombok.Setter; -import org.springframework.boot.ApplicationArguments; -import org.springframework.boot.ApplicationRunner; - -/** - * @author: yumi - * @date: 2023/11/4 14:31 - * @Description: TODO - */ -public abstract class PRClient implements ApplicationRunner { - - @Getter - @Setter - private PRClient.State state = PRClient.State.STOP; - - @Getter - private Channel channel; - - /** - * 连接服务器 - * @return - */ - protected abstract PRClient connect(); - - /** - * 是否需要连接服务器 - * @return - */ - protected abstract boolean isNeedConnect(); - - @Override - public void run(ApplicationArguments args) throws Exception { - if (isNeedConnect()) { - this.connect(); - PRConnectionHolder.addClient(this); - } - } - - protected void setChannel(Channel channel) { - this.channel = channel; - } - - public enum State { - RUNNING, - STOP - } -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRClientChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRClientChannelInitializer.java new file mode 100644 index 0000000..aed2724 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRClientChannelInitializer.java @@ -0,0 +1,17 @@ +package com.paradogs.framework.core.netty.clients; + +import com.paradogs.framework.core.netty.PRAbChannelInitializer; +import com.paradogs.framework.core.netty.PRAbMsgHandler; + +/** + * @author: yumi + * @date: 2023/11/3 11:18 + * @Description: TODO + */ +public abstract class PRClientChannelInitializer extends PRAbChannelInitializer { + + public PRClientChannelInitializer(PRAbMsgHandler msgHandler) { + super(msgHandler); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClient.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClient.java deleted file mode 100644 index a441b83..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClient.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.paradogs.framework.core.netty.clients; - -import com.paradogs.framework.core.netty.PRAbstractClientChannelInitializer; -import com.paradogs.framework.core.netty.server.ServerProperties; -import com.paradogs.framework.core.utils.SpringUtils; -import io.netty.bootstrap.Bootstrap; -import io.netty.channel.Channel; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.nio.NioSocketChannel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/7/31 22:36 - * @Description: 用于连接 master 服务器 - */ -@Slf4j -@Component -public class PRMasterClient extends PRClient { - - @Autowired - private MasterClientProperties masterClientProperties; - - @Autowired - private ServerProperties serverProperties; - - private Bootstrap client; - - private NioEventLoopGroup worker; - - /** - * 启动 netty 服务器 - */ - @Override - public PRClient connect() { - - try { - long startTime = System.currentTimeMillis(); - this.worker = new NioEventLoopGroup(); - - PRAbstractClientChannelInitializer clientChannelInitializer = SpringUtils.getBean("PRMasterClientChannelInitializer"); - - this.client = new Bootstrap() - .group(worker) - .channel(NioSocketChannel.class) - .handler(clientChannelInitializer); - - Channel channel = client.connect(this.masterClientProperties.getHost(), this.masterClientProperties.getPort()).sync().channel(); - this.setChannel(channel); - - setState(PRClient.State.RUNNING); - // 连接成功 -// EventUtils.publishEvent(new ClientStartEvent(System.currentTimeMillis() - startTime)); - - return this; - - } catch (Exception e) { - log.error("Client Connect:{}", e.getMessage(), e); - this.closeSync(); - } - - return this; - - } - - @Override - protected boolean isNeedConnect() { - return !this.serverProperties.isMaster(); - } - - /** - * 同步关闭连接 - * ***ps: 关闭后进度未结束是因为消息处理队列还开着未关闭 - * @return - */ - public boolean closeSync() { - try { - if (this.getChannel().isOpen()) { - this.getChannel().close().sync(); - } - if (!worker.isShutdown()) { - worker.shutdownGracefully(); - } - setState(PRClient.State.STOP); - return true; - } catch (Exception e) { - e.printStackTrace(); - return false; - } - - } - -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientChannelInitializer.java deleted file mode 100644 index f97c360..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientChannelInitializer.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.paradogs.framework.core.netty.clients; - -import com.paradogs.framework.core.netty.PRAbstractClientChannelInitializer; -import com.paradogs.framework.core.netty.PRAbstractMsgHandler; - -/** - * @author: yumi - * @date: 2023/11/4 14:33 - * @Description: TODO - */ -public class PRMasterClientChannelInitializer extends PRAbstractClientChannelInitializer { - - public PRMasterClientChannelInitializer(PRAbstractMsgHandler msgHandler) { - super(msgHandler); - } - -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/ClientsProperties.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/ClientsProperties.java new file mode 100644 index 0000000..470068b --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/ClientsProperties.java @@ -0,0 +1,43 @@ +package com.paradogs.framework.core.netty.clients.common; + +import com.paradogs.framework.core.utils.StringUtils; +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author: yumi + * @date: 2023/7/31 22:39 + * @Description: TODO + */ +@Data +@Component +@ConfigurationProperties("paradogs") +public class ClientsProperties { + + List clients = new ArrayList<>(); + + @Data + public static class Client { + /** + * 主机 ip + */ + private String host; + + /** + * 端口号 + */ + private int port; + + /** + * 服务器类型 + */ + private String type; + + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRClientLaunch.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRClientLaunch.java new file mode 100644 index 0000000..721e373 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRClientLaunch.java @@ -0,0 +1,43 @@ +package com.paradogs.framework.core.netty.clients.common; + +import com.paradogs.framework.core.netty.clients.master.MasterProperties; +import com.paradogs.framework.core.netty.clients.master.PRMasterClient; +import com.paradogs.framework.core.netty.server.ServerProperties; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/11/27 15:25 + * @Description: TODO + */ +@Slf4j +@Component +public class PRClientLaunch implements ApplicationRunner { + + @Autowired + private ServerProperties serverProperties; + + @Autowired + private ClientsProperties clientsProperties; + + @Override + public void run(ApplicationArguments args) throws Exception { + + // master + if (!serverProperties.isMaster()) { + PRMasterClient master = new PRMasterClient(); + master.start(); + } + + // common + for (ClientsProperties.Client clientProperties : clientsProperties.clients) { + PRServerClient client = new PRServerClient(clientProperties); + client.start(); + } + + } +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClient.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClient.java new file mode 100644 index 0000000..b12b59c --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClient.java @@ -0,0 +1,62 @@ +package com.paradogs.framework.core.netty.clients.common; + +import com.paradogs.framework.core.events.ServerClientStartEvent; +import com.paradogs.framework.core.netty.clients.PRClientChannelInitializer; +import com.paradogs.framework.core.utils.EventUtils; +import com.paradogs.framework.core.utils.SpringUtils; +import com.paradogs.framework.core.utils.StringUtils; +import io.netty.bootstrap.Bootstrap; +import io.netty.channel.Channel; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.nio.NioSocketChannel; +import lombok.extern.slf4j.Slf4j; + +/** + * @author: yumi + * @date: 2023/7/31 22:36 + * @Description: 用于连接 master 服务器 + */ +@Slf4j +public class PRServerClient { + + private ClientsProperties.Client properties; + + private PRClientChannelInitializer clientChannelInitializer; + + private Bootstrap client; + + private NioEventLoopGroup worker; + + private Channel channel; + + public PRServerClient(ClientsProperties.Client properties) { + this.properties = properties; + this.clientChannelInitializer = SpringUtils.getBean(PRServerClientChannelInitializer.class, new PRServerClientMsgHandler(properties)); + } + + /** + * 连服服务器 + */ + public void start() { + + try { + // eventLoop + worker = new NioEventLoopGroup(); + + // init + this.client = new Bootstrap() + .group(worker) + .channel(NioSocketChannel.class) + .handler(clientChannelInitializer); + + // connect + channel = client.connect(properties.getHost(), properties.getPort()).sync().channel(); + EventUtils.publishEvent(new ServerClientStartEvent()); + + } catch (Exception e) { + log.error("Client connect error:{}", e.getMessage(), e); + } + + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClientChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClientChannelInitializer.java new file mode 100644 index 0000000..e0a1a31 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClientChannelInitializer.java @@ -0,0 +1,21 @@ +package com.paradogs.framework.core.netty.clients.common; + +import com.paradogs.framework.core.netty.clients.PRClientChannelInitializer; +import io.netty.channel.ChannelHandler; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/11/4 14:33 + * @Description: 这个没有注册到 Spring,无法注入注意 + */ +@Scope("prototype") +@Component +public class PRServerClientChannelInitializer extends PRClientChannelInitializer { + + public PRServerClientChannelInitializer(PRServerClientMsgHandler msgHandler) { + super(msgHandler); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClientMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClientMsgHandler.java new file mode 100644 index 0000000..f70a47b --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClientMsgHandler.java @@ -0,0 +1,32 @@ +package com.paradogs.framework.core.netty.clients.common; + +import com.paradogs.framework.core.msg.ByteData; +import com.paradogs.framework.core.netty.clients.PRAbClientMsgHandler; +import com.paradogs.framework.core.utils.MsgUtils; +import io.netty.channel.ChannelHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/11/4 15:52 + * @Description: TODO + */ +@Slf4j +@Component +@ChannelHandler.Sharable +public class PRServerClientMsgHandler extends PRAbClientMsgHandler { + + private ClientsProperties.Client properties; + + public PRServerClientMsgHandler(ClientsProperties.Client properties) { + super(properties.getType()); + this.properties = properties; + } + + @Override + protected void processMsg(ByteData msg) throws Exception { + MsgUtils.adapterHandle(msg); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/MasterClientProperties.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/MasterProperties.java similarity index 41% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/MasterClientProperties.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/MasterProperties.java index 4b70960..d186782 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/MasterClientProperties.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/MasterProperties.java @@ -1,19 +1,16 @@ -package com.paradogs.framework.core.netty.clients; +package com.paradogs.framework.core.netty.clients.master; -import com.paradogs.framework.core.utils.StringUtils; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; /** * @author: yumi - * @date: 2023/7/31 22:39 + * @date: 2023/11/27 16:02 * @Description: TODO */ @Data -@Component @ConfigurationProperties("paradogs.master") -public class MasterClientProperties { +public class MasterProperties { /** * 主机 ip @@ -25,17 +22,4 @@ public class MasterClientProperties { */ private int port; - /** - * 服务名称 - */ - private String name; - - - public String getName() { - if (StringUtils.isBlank(this.name)) { - this.name = "Master"; - } - return name; - } - } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/PRMasterClient.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/PRMasterClient.java new file mode 100644 index 0000000..f0b8637 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/PRMasterClient.java @@ -0,0 +1,63 @@ +package com.paradogs.framework.core.netty.clients.master; + +import com.paradogs.framework.core.events.ServerClientStartEvent; +import com.paradogs.framework.core.netty.clients.common.PRServerClientChannelInitializer; +import com.paradogs.framework.core.utils.EventUtils; +import com.paradogs.framework.core.utils.SpringUtils; +import io.netty.bootstrap.Bootstrap; +import io.netty.channel.Channel; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.nio.NioSocketChannel; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @author: yumi + * @date: 2023/11/27 16:00 + * @Description: TODO + */ +@Slf4j +public class PRMasterClient { + + private MasterProperties properties; + + private PRMasterClientChannelInitializer clientChannelInitializer; + + private Bootstrap client; + + private NioEventLoopGroup worker; + + private Channel channel; + + public PRMasterClient() { + this.properties = SpringUtils.getBean(MasterProperties.class); + this.clientChannelInitializer = SpringUtils.getBean(PRMasterClientChannelInitializer.class); + } + + /** + * 连服服务器 + */ + public void start() { + + try { + // eventLoop + worker = new NioEventLoopGroup(); + + // init + this.client = new Bootstrap() + .group(worker) + .channel(NioSocketChannel.class) + .handler(clientChannelInitializer); + + // connect + channel = client.connect(properties.getHost(), properties.getPort()).sync().channel(); + EventUtils.publishEvent(new ServerClientStartEvent()); + + } catch (Exception e) { + log.error("Client connect error:{}", e.getMessage(), e); + } + + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/PRMasterClientChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/PRMasterClientChannelInitializer.java new file mode 100644 index 0000000..51dc692 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/PRMasterClientChannelInitializer.java @@ -0,0 +1,20 @@ +package com.paradogs.framework.core.netty.clients.master; + +import com.paradogs.framework.core.netty.PRAbMsgHandler; +import com.paradogs.framework.core.netty.clients.PRClientChannelInitializer; +import io.netty.channel.ChannelHandler; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/11/4 14:33 + * @Description: TODO + */ +@Component +@ChannelHandler.Sharable +public class PRMasterClientChannelInitializer extends PRClientChannelInitializer { + + public PRMasterClientChannelInitializer(PRAbMsgHandler msgHandler) { + super(msgHandler); + } +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/PRMasterClientMsgHandler.java similarity index 45% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientMsgHandler.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/PRMasterClientMsgHandler.java index 662f792..eb7fb5e 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/PRMasterClientMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/master/PRMasterClientMsgHandler.java @@ -1,11 +1,10 @@ -package com.paradogs.framework.core.netty.clients; +package com.paradogs.framework.core.netty.clients.master; import com.paradogs.framework.core.msg.ByteData; -import com.paradogs.framework.core.netty.PRAbstractClientMsgHandler; -import com.paradogs.framework.core.netty.server.PRConnectionHolder; +import com.paradogs.framework.core.netty.clients.PRAbClientMsgHandler; import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.utils.MsgUtils; -import com.paradogs.framework.core.utils.SpringUtils; +import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -18,27 +17,31 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component -public class PRMasterClientMsgHandler extends PRAbstractClientMsgHandler { +@ChannelHandler.Sharable +public class PRMasterClientMsgHandler extends PRAbClientMsgHandler { @Autowired - private MasterClientProperties masterClientProperties; + private ServerProperties serverProperties; + + public PRMasterClientMsgHandler() { + super("master"); + } @Override protected void processMsg(ByteData msg) throws Exception { MsgUtils.adapterHandle(msg); } + /** + * 连接建立事件 + * @param ctx + * @throws Exception + */ @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { super.channelActive(ctx); - ServerProperties properties = SpringUtils.getBean(ServerProperties.class); - ServerProperties master = new ServerProperties(masterClientProperties.getPort(), "master", "master-1", true); - PRConnectionHolder.initConnection(ctx.channel(), master); - MsgUtils.send("master|_paradogs.initInfo", properties, ctx.channel()); + // 向中心注册自身信息 + MsgUtils.send("master|_master.init", serverProperties, ctx.channel()); } - @Override - public void channelInactive(ChannelHandlerContext ctx) throws Exception { - log.info("Master[{}] disconnect", ctx.channel().remoteAddress()); - } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRAbServerMsgHandler.java similarity index 30% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientMsgHandler.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRAbServerMsgHandler.java index 036067b..c2256ff 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRAbstractClientMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRAbServerMsgHandler.java @@ -1,10 +1,11 @@ -package com.paradogs.framework.core.netty; +package com.paradogs.framework.core.netty.server; + +import com.paradogs.framework.core.netty.PRAbMsgHandler; /** * @author: yumi * @date: 2023/11/3 11:18 * @Description: TODO */ -public abstract class PRAbstractClientMsgHandler extends PRAbstractMsgHandler { - +public abstract class PRAbServerMsgHandler extends PRAbMsgHandler { } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnection.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnection.java index ea41bbb..804f96b 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnection.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnection.java @@ -1,7 +1,9 @@ package com.paradogs.framework.core.netty.server; import io.netty.channel.Channel; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.time.LocalDateTime; @@ -11,23 +13,27 @@ import java.time.LocalDateTime; * @Description: TODO */ @Data +@AllArgsConstructor +@NoArgsConstructor public class PRConnection { - private Channel channel; + public PRConnection(Channel channel, ServerProperties properties) { + this.channel = channel; + this.type = properties.getType(); + this.properties = properties; + } /** - * 连接信息 + * player、gate、master、login、... */ - private ServerProperties connInfo; + private String type; - /** - * 连接时间 - */ - private LocalDateTime createTime = LocalDateTime.now(); + private Channel channel; - /** - * 初始化失败超时时间 - */ - private LocalDateTime expiredTime; + private ServerProperties properties; + + public boolean isInit() { + return properties != null; + } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnectionHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnectionHolder.java deleted file mode 100644 index b925147..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRConnectionHolder.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.paradogs.framework.core.netty.server; - -import com.paradogs.framework.core.netty.clients.PRClient; -import io.netty.channel.Channel; -import lombok.Getter; - -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @author: yumi - * @date: 2023/8/26 17:18 - * @Description: TODO - */ -public class PRConnectionHolder { - - @Getter - private static PRServer server; - - @Getter - private static Map clientMap = new HashMap<>(); - - /** - * 未初始化的连接 Map - */ - @Getter - private static Map uninitializedConnMap = new HashMap<>(); - - /** 正常的连接 Map */ - @Getter - private static Map connMap = new HashMap<>(); - /** 服务器类型映射 Map */ - @Getter - private static Map> connTypeMap = new HashMap<>(); - /** Channel 映射 Map */ - @Getter - private static Map channelMap = new HashMap<>(); - - /** - * 不需要权限的路由,一般为初始化操作等 - */ - private static List excludeRoutes = new ArrayList<>(); - - static { - excludeRoutes.add("_paradogs.initInfo"); - excludeRoutes.add("login"); - } - - - public static void setServer(PRServer server) { - PRConnectionHolder.server = server; - } - - public static void addClient(PRClient client) { - PRConnectionHolder.clientMap.put(client.getChannel(), client); - } - - public static void addNewConnection(Channel channel) { - PRConnection conn = new PRConnection(); - conn.setCreateTime(LocalDateTime.now()); - conn.setExpiredTime(LocalDateTime.now().plusSeconds(10)); - PRConnectionHolder.uninitializedConnMap.put(channel, conn); - } - - public static void initConnection(Channel channel, ServerProperties properties) { - PRConnection conn = uninitializedConnMap.get(channel); - uninitializedConnMap.remove(channel); - conn.setConnInfo(properties); - conn.setChannel(channel); - - connMap.put(conn.getConnInfo().getKey(), conn); - if (!connTypeMap.containsKey(conn.getConnInfo().getType())) { - connTypeMap.put(conn.getConnInfo().getType(), new ArrayList<>()); - } - connTypeMap.get(conn.getConnInfo().getType()).add(conn); - channelMap.put(channel,conn); - } - - public static String getConnKey(Channel channel) { - if (channelMap.containsKey(channel)) { - PRConnection conn = channelMap.get(channel); - return conn.getConnInfo().getKey(); - } - return null; - } - - public static List getTypeConns(String type) { - if (!connTypeMap.containsKey(type)) { - return new ArrayList<>(); - } - return connTypeMap.get(type); - } - - public static void removeConn(Channel channel) { - PRConnectionHolder.uninitializedConnMap.remove(channel); - for (Map.Entry entry : PRConnectionHolder.connMap.entrySet()) { - String key = entry.getKey(); - PRConnection conn = PRConnectionHolder.connMap.get(key); - if (conn.getChannel() == channel) { - PRConnectionHolder.connMap.remove(key); - for (PRConnection typeConn : connTypeMap.get(conn.getConnInfo().getType())) { - if (conn.getChannel() == typeConn.getChannel()) { - connTypeMap.remove(conn.getConnInfo().getType()); - break; - } - } - channelMap.remove(channel); - return; - } - - } - - } - - /** - * Channel 是否初始化 - * @param channel - * @return - */ - public static boolean isInitializedChannel(Channel channel) { - if (channel == null) { - return false; - } - if (PRConnectionHolder.clientMap.containsKey(channel) || PRConnectionHolder.channelMap.containsKey(channel)) { - return true; - } - return false; - } - - public static boolean isExcludeRoute(String route) { - for (String excludeRoute : excludeRoutes) { - if (route.contains(excludeRoute)) { - return true; - } - } - return false; - - } -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServerChannelInitializer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServerChannelInitializer.java new file mode 100644 index 0000000..3269471 --- /dev/null +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServerChannelInitializer.java @@ -0,0 +1,17 @@ +package com.paradogs.framework.core.netty.server; + +import com.paradogs.framework.core.netty.PRAbChannelInitializer; +import com.paradogs.framework.core.netty.PRAbMsgHandler; + +/** + * @author: yumi + * @date: 2023/11/3 11:10 + * @Description: TODO + */ +public class PRServerChannelInitializer extends PRAbChannelInitializer { + + public PRServerChannelInitializer(PRAbMsgHandler msgHandler) { + super(msgHandler); + } + +} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServer.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServerLaunch.java similarity index 64% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServer.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServerLaunch.java index fa1e703..ca7a8ac 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServer.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/server/PRServerLaunch.java @@ -1,14 +1,11 @@ package com.paradogs.framework.core.netty.server; import com.paradogs.framework.core.events.ServerStartEvent; -import com.paradogs.framework.core.netty.PRAbstractServerChannelInitializer; import com.paradogs.framework.core.utils.EventUtils; -import com.paradogs.framework.core.utils.SpringUtils; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; -import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; @@ -22,10 +19,7 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component -public class PRServer implements ApplicationRunner { - - @Autowired - private ServerProperties properties; +public class PRServerLaunch implements ApplicationRunner { private ServerBootstrap server; @@ -33,40 +27,37 @@ public class PRServer implements ApplicationRunner { private NioEventLoopGroup worker; - @Getter private Channel channel; - public PRServer.State state = State.STOP; + @Autowired + private ServerProperties properties; + + @Autowired + private PRServerChannelInitializer channelInitializer; /** * 启动 netty 服务器 */ public void start() { - if (this.state != PRServer.State.STOP) { - log.error("Start fail: Server is not stop"); - return; - } - + // eventLoop boss = new NioEventLoopGroup(); worker = new NioEventLoopGroup(); try { - long startTime = System.currentTimeMillis(); - PRAbstractServerChannelInitializer channelInitializer = SpringUtils.getBean(PRAbstractServerChannelInitializer.class); - this.server = new ServerBootstrap() + // sever + server = new ServerBootstrap() .group(boss, worker) .channel(NioServerSocketChannel.class) .childHandler(channelInitializer); - this.channel = this.server.bind(properties.getPort()).sync().channel(); - log.info("Server start success: [{} localhost:{}]", properties.getKey(), properties.getPort()); - this.state = State.RUNNING; - EventUtils.publishEvent(new ServerStartEvent(System.currentTimeMillis() - startTime)); + // connect + channel = server.bind(properties.getPort()).sync().channel(); + channel.closeFuture().addListener(future -> { log.info("Server stop: [{}]", this.properties.getKey()); }); - channel.closeFuture().addListener(future -> { - log.info("Server stop: [{}]", this.properties.getKey()); - }); + // start success + EventUtils.publishEvent(new ServerStartEvent()); + log.info("Server start success: [{} localhost:{}]", properties.getKey(), properties.getPort()); } catch (InterruptedException e) { log.error("Server error:[{}]", e.getMessage(), e); @@ -88,7 +79,6 @@ public class PRServer implements ApplicationRunner { if (!worker.isShutdown()) { worker.shutdownGracefully(); } - this.state = State.STOP; return true; } catch (Exception e) { e.printStackTrace(); @@ -100,11 +90,6 @@ public class PRServer implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { this.start(); - PRConnectionHolder.setServer(this); } - public enum State { - RUNNING, - STOP - } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/QueueProperties.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/QueueProperties.java index 09bc7aa..798e84c 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/QueueProperties.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/queue/QueueProperties.java @@ -17,7 +17,7 @@ import org.springframework.stereotype.Component; public class QueueProperties { /** - * 待优化:消息逻辑处理队列(待优化:暂时为 1,heartbeat 重复执行问题未解决) + * 消息逻辑处理队列 */ private int mainSize = 1; diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/rpc/InitRPC.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/rpc/InitRPC.java deleted file mode 100644 index f95a09c..0000000 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/rpc/InitRPC.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.paradogs.framework.core.rpc; - -import com.paradogs.framework.core.annoations.rpc.PRRPC; -import com.paradogs.framework.core.annoations.rpc.PRRPCMapping; -import com.paradogs.framework.core.netty.server.ServerProperties; - -import java.util.concurrent.CompletableFuture; - -/** - * @author: yumi - * @date: 2023/8/10 15:26 - * @Description: TODO - */ -@PRRPC("master") -public interface InitRPC { - - @PRRPCMapping(value = "_init.serverInfo") - ServerProperties getServerInfo(); - -} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayLoadBalancerStrategy.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GateLoadBalancerStrategy.java similarity index 85% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayLoadBalancerStrategy.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GateLoadBalancerStrategy.java index 06ad648..66dd328 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayLoadBalancerStrategy.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GateLoadBalancerStrategy.java @@ -9,7 +9,7 @@ import java.util.List; * @date: 2023/11/13 13:47 * @Description: 负载均衡策略 */ -public interface GatewayLoadBalancerStrategy { +public interface GateLoadBalancerStrategy { PRConnection choose(List nodes); diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayRandomLoadBalancerStrategy.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GateRandomLoadBalancerStrategy.java similarity index 86% rename from paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayRandomLoadBalancerStrategy.java rename to paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GateRandomLoadBalancerStrategy.java index 99cfa73..b8f7f27 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GatewayRandomLoadBalancerStrategy.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/strategy/GateRandomLoadBalancerStrategy.java @@ -12,7 +12,7 @@ import java.util.Random; * @Description: TODO */ @Component("gatewayRandomLoadBalancerStrategy") -public class GatewayRandomLoadBalancerStrategy implements GatewayLoadBalancerStrategy { +public class GateRandomLoadBalancerStrategy implements GateLoadBalancerStrategy { @Override public PRConnection choose(List nodes) { if (nodes.size() == 0) {return null;} diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java index 23aa181..759bdac 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java @@ -2,24 +2,24 @@ package com.paradogs.framework.core.utils; import com.paradogs.framework.core.annoations.request.PRMsgMappingHolder; import com.paradogs.framework.core.events.RPCRequestEvent; +import com.paradogs.framework.core.exceptions.MessageException; +import com.paradogs.framework.core.msg.PRMsgContextHolder; import com.paradogs.framework.core.msg.route.MsgMapping; +import com.paradogs.framework.core.netty.PRConnHolder; import com.paradogs.framework.core.netty.server.PRConnection; -import com.paradogs.framework.core.netty.server.PRConnectionHolder; import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.msg.PRMsg; import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.MsgHeader; -import com.paradogs.framework.core.msg.PRMsgContextHolder; import io.netty.channel.Channel; -import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; +import sun.misc.GC; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.stream.Stream; @@ -40,111 +40,16 @@ public class MsgUtils { MsgUtils.serverProperties = serverProperties; } - public static void send(String route, MsgHeader header, T data) { - PRMsg msg = new PRMsg(header, data); - msg.getMsgHeader().setRoute(route); - - /** - * 其他服往 Master 服发送消息, Master 服往其他服转发消息 - */ - String server = RouteUtils.getServer(route); - PRConnection conn = null; - if (serverProperties.isMaster()) { - conn = PRConnectionHolder.getConnMap().get(server); - if (conn == null) { - List typeConns = PRConnectionHolder.getTypeConns(server); - if (typeConns != null && typeConns.size() > 0) { - conn = typeConns.get(0); // 待优化:默认取第一个 - } - } - - } else { - if (conn == null) { - List typeConns = PRConnectionHolder.getTypeConns("master"); - if (typeConns != null && typeConns.size() > 0) { - conn = typeConns.get(0); // 待优化:默认取第一个 - } - } - } - - if (conn == null) { - log.error("Not Found Connection: {}", route); - return; - } - - MsgUtils.writeAndFlush(conn.getChannel(), msg); - } - public static void send(String route, PRMsg msg, Channel channel) { - msg.getMsgHeader().setRoute(route); - MsgUtils.writeAndFlush(channel, msg); - } - public static void send(String route, T data, Channel channel) { - PRMsg msg = new PRMsg(data); - msg.getMsgHeader().setRoute(route); - MsgUtils.writeAndFlush(channel, msg); - } - public static void send(String route, PRMsg msg) { - MsgUtils.send(route, msg.getMsgHeader(), msg.getMsgData()); - } - private static void writeAndFlush(Channel channel, PRMsg msg) { - if (channel == null) { - log.warn("Channel is null, route: {}", msg.getMsgHeader().getRoute()); - return; - } - channel.writeAndFlush(msg); - log.debug(">>>>> [{}], {}", msg.getMsgHeader().getRoute(), msg); - } - - /** - * 转发消息 - * @param msg - */ - public static void forward(ByteData msg) { - msg.getMsgHeader().setSendServer(PRConnectionHolder.getConnKey(PRMsgContextHolder.getChannel())); - MsgUtils.send(msg.getMsgHeader().getRoute(), msg.getMsgHeader(), msg.getDataBytes()); - } - /** * 发起 rpc 请求 - * @param route 路由地址 - * @param data 发送数据 - * @param returnClass 返回结果的消息类型 - * @param + * @param event */ - public static CompletableFuture request(String route, T data, Class returnClass, CompletableFuture promise) { - - PRMsg msg = new PRMsg(data); - - // 发起请求 - MsgUtils.send(route, msg); - // 开启响应监听 - EventUtils.on4Once(route, msg.getMsgHeader().getId(), returnClass, promise); - return promise; - } - public static CompletableFuture request(String route, T msg, Class returnClass) { - CompletableFuture promise = new CompletableFuture<>(); - request(route, msg, returnClass, promise); - return promise; - } - - /** - * 获取当前发送消息的 Ctx - */ - public static ChannelHandlerContext getCurCtx() { - return PRMsgContextHolder.getCtx(); - } - - /** - * 获取当前发送消息的 Channel - */ - public static Channel getCurChannel() { - if (PRMsgContextHolder.getCtx() == null) {return null;} - return PRMsgContextHolder.getCtx().channel(); - } - @EventListener(RPCRequestEvent.class) public void onRPCRequestEvent(RPCRequestEvent event) { - MsgUtils.request(event.getRoute(), event.getData(), event.getReturnClass(), event.getPromise()); + // 发起请求 + PRMsg msg = send(event.getRoute(), event.getData()); + // 开启响应监听 + EventUtils.on4Once(event.getRoute(), msg.getMsgHeader().getId(), event.getReturnClass(), event.getPromise()); } /** @@ -175,80 +80,145 @@ public class MsgUtils { log.error("Class not managed by Spring: {}", method.getDeclaringClass()); return; } - /** - * 待优化:这里可以像 SpringMVC 一样,根据方法参数注入相关变量,目前暂时只有 BaseMsg - */ - Object result = method.invoke( - pdgController, - Stream.of(method.getParameterTypes()) - .map(type -> { - // 转换为参数类型传参 - if (type.isAssignableFrom(msgClass)) { - if (msgClass.isAssignableFrom(ByteData.class)) { - return msg; - } else { - // 传入 data 参数 - return ProtoUtils.decode(msg.getDataBytes(), msgClass); - } - } - return null; - }) - .toArray() - ); /** - * 有返回结果时,自动将返回结果作为 GC 消息发送 + * 待优化:这里可以像 SpringMVC 一样,根据方法参数注入相关变量 */ - if (result == null) { - return; - } - if (result instanceof CompletableFuture) { + if (mapping.isAsync()) { /** - * 异步回调型 GC + * 异步执行 */ - CompletableFuture future = (CompletableFuture) result; - future.exceptionally(e -> { - log.error("{}", e.getMessage(), e); - return null; - }); - future.thenAccept(gcData -> { - if (gcData == null) { - return; - } - // !! 如果把请求参数返回,返回值的类会和请求参数地址一样,英文就是 msg == gcMsg - // 准备返回消息 - MsgHeader gcHeader = new MsgHeader(); - gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); - PRMsg gcMsg = new PRMsg(gcHeader, gcData); - - // sendServer == null 代表客户端消息,直接返回客户端,不 RPC 发送至 master - if (header.getSendServer() == null) { - MsgUtils.send("client", gcMsg, PRMsgContextHolder.getChannel()); - return; + PRAsync.run(() -> { + try { + Object result = method.invoke( + pdgController, + Stream.of(method.getParameterTypes()) + .map(type -> { + // 转换为参数类型传参 + if (type.isAssignableFrom(msgClass)) { + if (msgClass.isAssignableFrom(ByteData.class)) { + return msg; + } else { + // 传入 data 参数 + return ProtoUtils.decode(msg.getDataBytes(), msgClass); + } + } + return null; + }) + .toArray() + ); + /** + * 有返回结果时,自动将返回结果作为 GC 消息发送 + */ + if (method.getReturnType().equals(Void.TYPE)) { + return; + } + reply(header.getSendServer(), result, msg.getMsgHeader().getId(), PRMsgContextHolder.getChannel()); + } catch (Exception e) { + throw new MessageException(e); } - // 发送 GC - MsgUtils.send(header.getSendServer() + RouteUtils.SERVER_SEPARATOR + "_paradogs.callback", gcMsg); }); } else { /** - * 正常 GC + * 同步执行(正常执行) + */ + Object result = method.invoke( + pdgController, + Stream.of(method.getParameterTypes()) + .map(type -> { + // 转换为参数类型传参 + if (type.isAssignableFrom(msgClass)) { + if (msgClass.isAssignableFrom(ByteData.class)) { + return msg; + } else { + // 传入 data 参数 + return ProtoUtils.decode(msg.getDataBytes(), msgClass); + } + } + return null; + }) + .toArray() + ); + /** + * 有返回结果时,自动将返回结果作为 GC 消息发送 */ - // 返回消息 - MsgHeader gcHeader = new MsgHeader(); - gcHeader.setReplyMsgId(msg.getMsgHeader().getId()); - PRMsg gcMsg = new PRMsg(gcHeader, result); - - // sendServer == null 代表客户端消息,直接返回客户端,不 RPC 发送至 master - if (header.getSendServer() == null) { - MsgUtils.send("client", gcMsg, PRMsgContextHolder.getChannel()); + if (method.getReturnType().equals(Void.TYPE)) { return; } - // 发送 GC - MsgUtils.send(header.getSendServer() + RouteUtils.SERVER_SEPARATOR + "_paradogs.callback", gcMsg); + reply(header.getSendServer(), result, msg.getMsgHeader().getId(), PRMsgContextHolder.getChannel()); } } + /** + * 服务器之间发送消息 + * @param route 路由 + * @param data 数据 + * @return + */ + public static PRMsg send(String route, T data, Channel channel) { + PRMsg msg = new PRMsg(route, data); + channel.writeAndFlush(msg); + log.debug(">>>>> {}, {}", route, data); + return msg; + } + protected static PRMsg send(String route, T data) { + Channel channel = getChannel(RouteUtils.getServer(route)); + return send(route, data, channel); + } + + /** + * 服务器之间回复消息 + * @param server 目标服务器类型 + * @param data 数据 + * @param replyId 回复的消息 ID + */ + protected static void reply(String server, T data, Long replyId, Channel channel) { + // 返回消息 + MsgHeader header = new MsgHeader(); + header.setRoute(server + RouteUtils.SERVER_SEPARATOR + "_paradogs.callback"); + header.setReplyMsgId(replyId); + PRMsg gcMsg = new PRMsg(header, data); + // 发送 GC +// Channel channel = getChannel(server); + channel.writeAndFlush(gcMsg); + log.debug("[reply] >>>>> {}, {}", server, data); + } + + /** + * 转发消息: 发送到 Master 服,通过 Master 服转发 + * Gate 服不走这个方法 + * @param byteData 请求头 + byte 数据 + */ + public static void forward(ByteData byteData) { + PRMsg msg = new PRMsg(byteData.getMsgHeader(), byteData.getDataBytes()); + Channel channel = getChannel(byteData.getMsgHeader().getServer()); + channel.writeAndFlush(msg); + log.debug("[forward] >>>>> {}, {}", byteData.getMsgHeader().getRoute(), msg.getMsgData()); + } + /** + * Gate 服转发消息: 特殊处理,直接发送到对应服 + * @param byteData + * @param + */ + public static void gateForward(ByteData byteData) { + PRMsg msg = new PRMsg(byteData.getMsgHeader(), byteData.getDataBytes()); + String server = byteData.getMsgHeader().getServer(); + PRConnection conn = PRConnHolder.getConn(server); + if (conn == null) { + throw new MessageException("Not Found Connection, server: " + server); + } + conn.getChannel().writeAndFlush(msg); + log.debug("[forward] >>>>> {}, {}", byteData.getMsgHeader().getRoute(), msg.getMsgData()); + } + + protected static Channel getChannel(String server) { + PRConnection conn = PRConnHolder.getConn(serverProperties.isMaster() ? server : "master"); + if (conn == null) { + throw new MessageException("Not Found Connection, server: " + (serverProperties.isMaster() ? server : "master")); + } + return conn.getChannel(); + } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/PRAsync.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/PRAsync.java index df6f5dd..849a5d4 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/PRAsync.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/PRAsync.java @@ -27,7 +27,7 @@ public class PRAsync { public static CompletableFuture supply(Supplier supplier) { return CompletableFuture.supplyAsync(supplier, taskExecutor).exceptionally(e -> { SpringUtils.getBean(GlobalExceptionDispatch.class).forward(e); // 转发到全局异常 - throw new RuntimeException(); // 中断回调 + throw new RuntimeException(e); // 中断回调 }); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/SpringUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/SpringUtils.java index 39f5321..3c5a93f 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/SpringUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/SpringUtils.java @@ -72,6 +72,12 @@ public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationC return result; } + public static T getBean(Class clz, Object... args) throws BeansException + { + T result = (T) beanFactory.getBean(clz, args); + return result; + } + public static Map getBeans(Class clz) throws BeansException { return SpringUtils.beanFactory.getBeansOfType(clz); diff --git a/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index a448e29..b752b00 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-framework/paradogs-framework-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,6 +1,6 @@ com.paradogs.framework.core.CoreStarter -com.paradogs.framework.core.strategy.GatewayRandomLoadBalancerStrategy +com.paradogs.framework.core.strategy.GateRandomLoadBalancerStrategy com.paradogs.framework.core.config.UtilsConfiguration diff --git a/paradogs-framework/paradogs-framework-connector-starter/pom.xml b/paradogs-framework/paradogs-framework-gate-starter/pom.xml similarity index 92% rename from paradogs-framework/paradogs-framework-connector-starter/pom.xml rename to paradogs-framework/paradogs-framework-gate-starter/pom.xml index a94a6dd..f2fa10b 100644 --- a/paradogs-framework/paradogs-framework-connector-starter/pom.xml +++ b/paradogs-framework/paradogs-framework-gate-starter/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - paradogs-framework-connector-starter + paradogs-framework-gate-starter 8 diff --git a/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateClientMsgHandler.java b/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateClientMsgHandler.java new file mode 100644 index 0000000..04bb180 --- /dev/null +++ b/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateClientMsgHandler.java @@ -0,0 +1,22 @@ +package com.paradogs.framework.gate; + +import com.paradogs.framework.core.netty.clients.common.ClientsProperties; +import com.paradogs.framework.core.netty.clients.common.PRServerClientMsgHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/11/29 17:43 + * @Description: TODO + */ +@Slf4j +public class PRGateClientMsgHandler extends PRServerClientMsgHandler { + + public PRGateClientMsgHandler(ClientsProperties.Client properties) { + super(properties); + } + + + +} diff --git a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java b/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateServerMsgHandler.java similarity index 80% rename from paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java rename to paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateServerMsgHandler.java index 11ed2c5..596fc59 100644 --- a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorServerMsgHandler.java +++ b/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateServerMsgHandler.java @@ -1,9 +1,11 @@ -package com.paradogs.framework.connector; +package com.paradogs.framework.gate; import com.paradogs.framework.core.events.PlayerClientActiveEvent; import com.paradogs.framework.core.events.PlayerClientInactiveEvent; import com.paradogs.framework.core.msg.ByteData; -import com.paradogs.framework.core.netty.PRAbstractServerMsgHandler; +import com.paradogs.framework.core.netty.PRConnHolder; +import com.paradogs.framework.core.netty.server.PRAbServerMsgHandler; +import com.paradogs.framework.core.netty.server.PRConnection; import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.utils.EventUtils; import com.paradogs.framework.core.utils.IPUtils; @@ -12,7 +14,6 @@ import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; /** @@ -23,20 +24,23 @@ import org.springframework.stereotype.Component; @Slf4j @Component @ChannelHandler.Sharable -public class PRConnectorServerMsgHandler extends PRAbstractServerMsgHandler { +public class PRGateServerMsgHandler extends PRAbServerMsgHandler { @Autowired private ServerProperties serverProperties; + /** + * 转发玩家消息 + * @param msg + * @throws Exception + */ @Override protected void processMsg(ByteData msg) throws Exception { - // 发给自己的消息直接处理 if (msg.getMsgHeader().getServer().equals(serverProperties.getType())) { MsgUtils.adapterHandle(msg); return; } - // 其他消息 Master 进行转发 - MsgUtils.forward(msg); + MsgUtils.gateForward(msg); } /** diff --git a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorStarter.java b/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateStarter.java similarity index 86% rename from paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorStarter.java rename to paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateStarter.java index 667d52b..18179a2 100644 --- a/paradogs-framework/paradogs-framework-connector-starter/src/main/java/com/paradogs/framework/connector/PRConnectorStarter.java +++ b/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateStarter.java @@ -1,4 +1,4 @@ -package com.paradogs.framework.connector; +package com.paradogs.framework.gate; import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector; import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector; @@ -15,5 +15,5 @@ import org.springframework.context.annotation.Import; PRRequestInterfaceSelector.class }) @Configuration -public class PRConnectorStarter { +public class PRGateStarter { } diff --git a/paradogs-framework/paradogs-framework-gate-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-gate-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..b2b15e7 --- /dev/null +++ b/paradogs-framework/paradogs-framework-gate-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.paradogs.framework.gate.PRGateServerMsgHandler \ No newline at end of file diff --git a/paradogs-framework/paradogs-framework-connector-starter/src/main/resources/config/application.yml b/paradogs-framework/paradogs-framework-gate-starter/src/main/resources/config/application.yml similarity index 100% rename from paradogs-framework/paradogs-framework-connector-starter/src/main/resources/config/application.yml rename to paradogs-framework/paradogs-framework-gate-starter/src/main/resources/config/application.yml diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/ControllerConfiguration.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/ControllerConfiguration.java deleted file mode 100644 index 138af59..0000000 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/ControllerConfiguration.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.paradogs.framework.master; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @author: yumi - * @date: 2023/8/26 17:57 - * @Description: TODO - */ -@Configuration -public class ControllerConfiguration { - - @Bean - public MasterController masterController() { - return new MasterController(); - } - -} diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/controller/MasterController.java similarity index 38% rename from paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java rename to paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/controller/MasterController.java index 48b661e..df8f5e0 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterController.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/controller/MasterController.java @@ -1,20 +1,21 @@ -package com.paradogs.framework.master; +package com.paradogs.framework.master.controller; import com.paradogs.framework.common.pojo.gc.GCAllocGateway; import com.paradogs.framework.core.annoations.request.PRController; import com.paradogs.framework.core.annoations.request.PRMsgMapping; import com.paradogs.framework.core.msg.GCAck; +import com.paradogs.framework.core.msg.PRMsgContextHolder; +import com.paradogs.framework.core.netty.PRConnHolder; import com.paradogs.framework.core.netty.server.PRConnection; -import com.paradogs.framework.core.netty.server.PRConnectionHolder; -import com.paradogs.framework.core.strategy.GatewayLoadBalancerStrategy; +import com.paradogs.framework.core.netty.server.ServerProperties; +import com.paradogs.framework.core.strategy.GateLoadBalancerStrategy; +import com.paradogs.framework.core.utils.IPUtils; +import com.paradogs.framework.core.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import java.net.InetSocketAddress; -import java.util.Collection; import java.util.List; -import java.util.stream.Collectors; /** * @author: yumi @@ -26,26 +27,34 @@ import java.util.stream.Collectors; @PRMsgMapping("_master") public class MasterController { - @Qualifier("gatewayRandomLoadBalancerStrategy") @Autowired - private GatewayLoadBalancerStrategy strategy; + private GateLoadBalancerStrategy strategy; + + /** + * 服务器注册和初始化 + * @param properties + */ + @PRMsgMapping("init") + public void init(ServerProperties properties) { + // 初始化连接的服务器信息(建立连接后,服务器主动发送自己的信息) + PRConnHolder.initConn(PRMsgContextHolder.getChannel(), properties); + log.info("Server connection init success: {}|{}, {}", properties.getType(), properties.getKey(), IPUtils.getAddr(PRMsgContextHolder.getChannel())); + } /** * 玩家登录成功后,登录服申请一个网关供玩家连接 * @return */ - @PRMsgMapping("allocGateway") - public GCAllocGateway allocGateway() { - List gateways = PRConnectionHolder.getTypeConns("gateway");// 待优化:暂时写死 - PRConnection conn = strategy.choose(gateways); + @PRMsgMapping("allocGate") + public GCAllocGateway allocGate() { + List gates = PRConnHolder.getConns("gate"); + PRConnection conn = strategy.choose(gates); if (conn == null) { GCAck.fail(); } - return new GCAllocGateway( - ((InetSocketAddress)conn.getChannel().remoteAddress()).getHostString(), - conn.getConnInfo().getPort() - ); + InetSocketAddress addr = IPUtils.getAddr(conn.getChannel()); + return new GCAllocGateway(addr.getHostString(), conn.getProperties().getPort()); } } diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgConsumer.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/netty/MasterMsgConsumer.java similarity index 84% rename from paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgConsumer.java rename to paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/netty/MasterMsgConsumer.java index 371ebd9..834c4e9 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgConsumer.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/netty/MasterMsgConsumer.java @@ -1,16 +1,20 @@ -package com.paradogs.framework.master; +package com.paradogs.framework.master.netty; +import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass; +import com.paradogs.framework.common.pojo.cg.CGPrepareLogin; import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.MsgHeader; import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.queue.AbstractMsgConsumer; import com.paradogs.framework.core.utils.MsgUtils; +import com.paradogs.framework.core.utils.ProtoUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; import java.lang.reflect.InvocationTargetException; +import java.util.Arrays; /** * @author: yumi diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgHandler.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/netty/MasterMsgHandler.java similarity index 53% rename from paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgHandler.java rename to paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/netty/MasterMsgHandler.java index 728e8d7..395f0da 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/MasterMsgHandler.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/netty/MasterMsgHandler.java @@ -1,11 +1,13 @@ -package com.paradogs.framework.master; +package com.paradogs.framework.master.netty; -import com.paradogs.framework.core.events.MasterClientActiveEvent; -import com.paradogs.framework.core.events.MasterClientInactiveEvent; +import com.paradogs.framework.core.events.ServerClientActiveEvent; +import com.paradogs.framework.core.events.ServerClientInactiveEvent; import com.paradogs.framework.core.msg.ByteData; import com.paradogs.framework.core.msg.MsgHeader; -import com.paradogs.framework.core.netty.PRAbstractServerMsgHandler; -import com.paradogs.framework.core.netty.server.PRConnectionHolder; +import com.paradogs.framework.core.netty.PRConnHolder; +import com.paradogs.framework.core.netty.server.PRAbServerMsgHandler; +import com.paradogs.framework.core.netty.server.PRConnection; +import com.paradogs.framework.core.queue.PRQueueHolder; import com.paradogs.framework.core.utils.EventUtils; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; @@ -20,13 +22,21 @@ import org.springframework.stereotype.Component; @Primary @Component @ChannelHandler.Sharable -public class MasterMsgHandler extends PRAbstractServerMsgHandler { +public class MasterMsgHandler extends PRAbServerMsgHandler { + + @Override + protected void processMsg(ByteData msg) throws Exception { + PRQueueHolder.putMsg(PRQueueHolder.QueueType.MAIN, msg); + } @Override protected void setProps(ChannelHandlerContext ctx, ByteData msg) { super.setProps(ctx, msg); MsgHeader header = msg.getMsgHeader(); - header.setSendServer(PRConnectionHolder.getConnKey(ctx.channel())); // 设置发送服标识 + PRConnection conn = PRConnHolder.getConn(ctx.channel()); + if (conn != null) { + header.setSendServer(conn.getType()); // 设置发送服标识 + } } /** @@ -37,7 +47,7 @@ public class MasterMsgHandler extends PRAbstractServerMsgHandler { @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { super.channelActive(ctx); - EventUtils.publishEvent(new MasterClientActiveEvent(ctx)); + EventUtils.publishEvent(new ServerClientActiveEvent(ctx)); } /** @@ -48,6 +58,6 @@ public class MasterMsgHandler extends PRAbstractServerMsgHandler { @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { super.channelActive(ctx); - EventUtils.publishEvent(new MasterClientInactiveEvent(ctx)); + EventUtils.publishEvent(new ServerClientInactiveEvent(ctx)); } } diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index fdc5c65..bcdd9fd 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,10 +1,12 @@ -com.paradogs.framework.master.MasterMsgConsumer +com.paradogs.framework.master.controller.MasterController -com.paradogs.framework.master.ControllerConfiguration +com.paradogs.framework.master.netty.MasterMsgHandler + +com.paradogs.framework.master.netty.MasterMsgConsumer com.paradogs.framework.master.MasterStarter -com.paradogs.framework.master.MasterMsgHandler + diff --git a/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerMsgHandler.java b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerMsgHandler.java new file mode 100644 index 0000000..2ba426e --- /dev/null +++ b/paradogs-framework/paradogs-framework-server-starter/src/main/java/com/paradogs/framework/server/ServerMsgHandler.java @@ -0,0 +1,22 @@ +package com.paradogs.framework.server; + +import com.paradogs.framework.core.msg.ByteData; +import com.paradogs.framework.core.netty.server.PRAbServerMsgHandler; +import com.paradogs.framework.core.queue.PRQueueHolder; +import io.netty.channel.ChannelHandler; +import org.springframework.stereotype.Component; + +/** + * @author: yumi + * @date: 2023/11/29 10:41 + * @Description: TODO + */ +@Component +@ChannelHandler.Sharable +public class ServerMsgHandler extends PRAbServerMsgHandler { + + @Override + protected void processMsg(ByteData msg) throws Exception { + PRQueueHolder.putMsg(PRQueueHolder.QueueType.MAIN, msg); + } +} diff --git a/paradogs-framework/paradogs-framework-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/paradogs-framework/paradogs-framework-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index eb556d1..c79e73a 100644 --- a/paradogs-framework/paradogs-framework-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/paradogs-framework/paradogs-framework-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -2,5 +2,7 @@ com.paradogs.framework.server.ServerStarter com.paradogs.framework.server.ServerMsgConsumer +com.paradogs.framework.server.ServerMsgHandler + diff --git a/paradogs-framework/pom.xml b/paradogs-framework/pom.xml index 070e3ea..cefa030 100644 --- a/paradogs-framework/pom.xml +++ b/paradogs-framework/pom.xml @@ -12,7 +12,7 @@ pom paradogs-framework-core - paradogs-framework-connector-starter + paradogs-framework-gate-starter paradogs-framework-server-starter paradogs-framework-master-starter paradogs-framework-common diff --git a/pom.xml b/pom.xml index 74f1935..d870ec3 100644 --- a/pom.xml +++ b/pom.xml @@ -146,7 +146,7 @@ com.paradogs - paradogs-framework-connector-starter + paradogs-framework-gate-starter 0.0.1 -- Gitee From 4ed6bac369936b3caf5e2634257779792202908c Mon Sep 17 00:00:00 2001 From: "410408824@qq.com" <410408824@qq.com> Date: Thu, 30 Nov 2023 10:49:33 +0800 Subject: [PATCH 32/32] =?UTF-8?q?!!!=20=E7=BD=91=E7=BB=9C=E6=A1=86?= =?UTF-8?q?=E6=9E=B6=E5=9F=BA=E6=9C=AC=E5=AE=8C=E6=88=90=20!!!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../annoations/rpc/PRRPCResponseResolver.java | 2 +- .../core/events/RPCRequestEvent.java | 4 +-- .../framework/core/netty/PRConnHolder.java | 20 ++++++++++++--- .../common/PRServerClientMsgHandler.java | 25 +++++++++++++++++++ .../framework/core/utils/EventUtils.java | 2 +- .../framework/core/utils/MsgUtils.java | 12 ++++----- .../framework/core/utils/ProtoUtils.java | 4 +++ .../framework/core/utils/RandomUtils.java | 5 ++-- .../gate/PRGateClientMsgHandler.java | 22 ---------------- .../gate/PRGateServerMsgHandler.java | 22 ++++++++++++++-- .../master/netty/MasterMsgHandler.java | 6 ++++- 11 files changed, 82 insertions(+), 42 deletions(-) delete mode 100644 paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateClientMsgHandler.java diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java index 2367060..4b0fcab 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/annoations/rpc/PRRPCResponseResolver.java @@ -79,7 +79,7 @@ public class PRRPCResponseResolver { * @param cgMsgId * @param promise */ - public void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { + public void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { this.waitRespMap.put(cgMsgId, new RespData(returnClass, promise, PRMsgContextHolder.getSnapshot())); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java index 9cff914..b9c59cf 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/events/RPCRequestEvent.java @@ -19,6 +19,6 @@ import java.util.concurrent.CompletableFuture; public class RPCRequestEvent extends AnonEvent { private String route; private T data; - private Class returnClass; - private CompletableFuture promise; + private Class returnClass; + private CompletableFuture promise; } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRConnHolder.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRConnHolder.java index 0c83b88..8b079f6 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRConnHolder.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/PRConnHolder.java @@ -4,10 +4,7 @@ import com.paradogs.framework.core.netty.server.PRConnection; import com.paradogs.framework.core.netty.server.ServerProperties; import io.netty.channel.Channel; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; /** @@ -55,4 +52,19 @@ public class PRConnHolder { channelConnMap.remove(conn.getChannel()); } } + + public static PRConnection removeConn(Channel channel) { + PRConnection conn = channelConnMap.remove(channel); + if (conn != null) { + List list = typeConnMap.get(conn.getType()); + if (list != null) { + Iterator iterator = list.iterator(); + while (iterator.hasNext()) { + PRConnection next = iterator.next(); + if (next == conn) {iterator.remove();} + } + } + } + return conn; + } } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClientMsgHandler.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClientMsgHandler.java index f70a47b..dfa2588 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClientMsgHandler.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/netty/clients/common/PRServerClientMsgHandler.java @@ -1,9 +1,12 @@ package com.paradogs.framework.core.netty.clients.common; import com.paradogs.framework.core.msg.ByteData; +import com.paradogs.framework.core.netty.PRConnHolder; import com.paradogs.framework.core.netty.clients.PRAbClientMsgHandler; +import com.paradogs.framework.core.netty.server.PRConnection; import com.paradogs.framework.core.utils.MsgUtils; import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -29,4 +32,26 @@ public class PRServerClientMsgHandler extends PRAbClientMsgHandler { MsgUtils.adapterHandle(msg); } + /** + * 连接建立事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + super.channelActive(ctx); + log.info("ServerClient connect success: {}", properties); + } + + /** + * 连接断开事件 + * @param ctx + * @throws Exception + */ + @Override + public void channelInactive(ChannelHandlerContext ctx) throws Exception { + super.channelInactive(ctx); + log.info("ServerClient disconnect: {}", properties); + } + } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/EventUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/EventUtils.java index 7157628..48035a1 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/EventUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/EventUtils.java @@ -41,7 +41,7 @@ public class EventUtils implements ApplicationEventPublisherAware { * @param promise * @param */ - public static void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { + public static void on4Once(String route, Long cgMsgId, Class returnClass, CompletableFuture promise) { SpringUtils.getBean(PRRPCResponseResolver.class).on4Once(route, cgMsgId, returnClass, promise); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java index 759bdac..f23cf76 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/MsgUtils.java @@ -199,18 +199,18 @@ public class MsgUtils { /** * Gate 服转发消息: 特殊处理,直接发送到对应服 - * @param byteData - * @param */ - public static void gateForward(ByteData byteData) { - PRMsg msg = new PRMsg(byteData.getMsgHeader(), byteData.getDataBytes()); - String server = byteData.getMsgHeader().getServer(); + public static void gateRequest(String route, T data, Class returnClass, CompletableFuture promise) { + PRMsg msg = new PRMsg(route, data); + String server = RouteUtils.getServer(route); PRConnection conn = PRConnHolder.getConn(server); if (conn == null) { throw new MessageException("Not Found Connection, server: " + server); } + // 开启响应监听 + EventUtils.on4Once(route, msg.getMsgHeader().getId(), returnClass, promise); conn.getChannel().writeAndFlush(msg); - log.debug("[forward] >>>>> {}, {}", byteData.getMsgHeader().getRoute(), msg.getMsgData()); + log.debug("[request] >>>>> {}, {}", route, msg); } protected static Channel getChannel(String server) { diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java index 19f2bd4..29f0700 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/ProtoUtils.java @@ -55,6 +55,10 @@ public class ProtoUtils { */ public static T decode(byte[] bytes, Class clz) { + if (byte[].class.isAssignableFrom(clz)) { + return (T) bytes; + } + if (!codecMap.containsKey(clz)) { codecMap.put(clz, ProtobufProxy.create(clz)); } diff --git a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/RandomUtils.java b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/RandomUtils.java index 780e440..896a9ae 100644 --- a/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/RandomUtils.java +++ b/paradogs-framework/paradogs-framework-core/src/main/java/com/paradogs/framework/core/utils/RandomUtils.java @@ -1,6 +1,6 @@ package com.paradogs.framework.core.utils; -import java.util.Random; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; /** * @author: yumi @@ -10,7 +10,6 @@ import java.util.Random; public class RandomUtils { public static Long spawnSnowId() { - Random random = new Random(); - return random.nextLong(); + return IdWorker.getId(); } } diff --git a/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateClientMsgHandler.java b/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateClientMsgHandler.java deleted file mode 100644 index 04bb180..0000000 --- a/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateClientMsgHandler.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.paradogs.framework.gate; - -import com.paradogs.framework.core.netty.clients.common.ClientsProperties; -import com.paradogs.framework.core.netty.clients.common.PRServerClientMsgHandler; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @author: yumi - * @date: 2023/11/29 17:43 - * @Description: TODO - */ -@Slf4j -public class PRGateClientMsgHandler extends PRServerClientMsgHandler { - - public PRGateClientMsgHandler(ClientsProperties.Client properties) { - super(properties); - } - - - -} diff --git a/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateServerMsgHandler.java b/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateServerMsgHandler.java index 596fc59..cc2b042 100644 --- a/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateServerMsgHandler.java +++ b/paradogs-framework/paradogs-framework-gate-starter/src/main/java/com/paradogs/framework/gate/PRGateServerMsgHandler.java @@ -3,6 +3,7 @@ package com.paradogs.framework.gate; import com.paradogs.framework.core.events.PlayerClientActiveEvent; import com.paradogs.framework.core.events.PlayerClientInactiveEvent; import com.paradogs.framework.core.msg.ByteData; +import com.paradogs.framework.core.msg.PRMsgContextHolder; import com.paradogs.framework.core.netty.PRConnHolder; import com.paradogs.framework.core.netty.server.PRAbServerMsgHandler; import com.paradogs.framework.core.netty.server.PRConnection; @@ -10,12 +11,15 @@ import com.paradogs.framework.core.netty.server.ServerProperties; import com.paradogs.framework.core.utils.EventUtils; import com.paradogs.framework.core.utils.IPUtils; import com.paradogs.framework.core.utils.MsgUtils; +import com.paradogs.framework.core.utils.StringUtils; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.concurrent.CompletableFuture; + /** * @author: yumi * @date: 2023/8/8 8:56 @@ -29,6 +33,14 @@ public class PRGateServerMsgHandler extends PRAbServerMsgHandler { @Autowired private ServerProperties serverProperties; + @Override + protected void setProps(ChannelHandlerContext ctx, ByteData msg) { + super.setProps(ctx, msg); + if (StringUtils.isBlank(msg.getMsgHeader().getSendServer())) { + msg.getMsgHeader().setSendServer("gate"); + } + } + /** * 转发玩家消息 * @param msg @@ -40,7 +52,13 @@ public class PRGateServerMsgHandler extends PRAbServerMsgHandler { MsgUtils.adapterHandle(msg); return; } - MsgUtils.gateForward(msg); + // 收到回复消息后返回给玩家 + // 待优化:如果 logic 方法没有返回值,这里会无限等待,内存溢出 + CompletableFuture promise = new CompletableFuture<>(); + promise.thenAccept(data -> { + MsgUtils.send("player", data, PRMsgContextHolder.getChannel()); + }); + MsgUtils.gateRequest(msg.getMsgHeader().getRoute(), msg.getDataBytes(), byte[].class, promise); } /** @@ -62,7 +80,7 @@ public class PRGateServerMsgHandler extends PRAbServerMsgHandler { */ @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { - super.channelActive(ctx); + super.channelInactive(ctx); EventUtils.publishEvent(new PlayerClientInactiveEvent(ctx)); log.info("PlayerClient disconnect: {}", IPUtils.getAddr(ctx.channel())); } diff --git a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/netty/MasterMsgHandler.java b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/netty/MasterMsgHandler.java index 395f0da..034a857 100644 --- a/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/netty/MasterMsgHandler.java +++ b/paradogs-framework/paradogs-framework-master-starter/src/main/java/com/paradogs/framework/master/netty/MasterMsgHandler.java @@ -11,6 +11,7 @@ import com.paradogs.framework.core.queue.PRQueueHolder; import com.paradogs.framework.core.utils.EventUtils; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; +import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; @@ -19,6 +20,7 @@ import org.springframework.stereotype.Component; * @date: 2023/11/23 17:34 * @Description: TODO */ +@Slf4j @Primary @Component @ChannelHandler.Sharable @@ -57,7 +59,9 @@ public class MasterMsgHandler extends PRAbServerMsgHandler { */ @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { - super.channelActive(ctx); + super.channelInactive(ctx); + PRConnection conn = PRConnHolder.removeConn(ctx.channel()); + log.info("Client disconnect: {}", conn); EventUtils.publishEvent(new ServerClientInactiveEvent(ctx)); } } -- Gitee