Browse Source

国电电力给龙源传数据程序

songwenbin 2 years ago
parent
commit
eafa6f05e0
100 changed files with 1079 additions and 413 deletions
  1. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/ApplicationEventListener.class
  2. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/HttpServerApplication.class
  3. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/bridge/rocketmq/producter/AsyncProducter$1.class
  4. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/bridge/rocketmq/producter/AsyncProducter.class
  5. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/bridge/rocketmq/producter/Gyfp2Protocol.class
  6. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/ClientManager$WorkerDaemon.class
  7. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/ClientManager.class
  8. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/ClientWorkerFactory.class
  9. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/EndPoint.class
  10. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/IClientWorker.class
  11. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/IMasterClientWorker.class
  12. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/ISlaveClientWorker.class
  13. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/iec102/IEC102RxtxClientHandler.class
  14. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/iec102/IEC102SerialClientWorker$1.class
  15. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/iec102/IEC102SerialClientWorker$2.class
  16. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/iec102/IEC102SerialClientWorker.class
  17. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/iec102/SerialPortConfig.class
  18. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/config/cache/CacheService.class
  19. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/BachmanPoint.class
  20. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/BfPoint.class
  21. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/DjlPoint.class
  22. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/FglPoint.class
  23. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/GdupcPoint.class
  24. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/Iec102Point.class
  25. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/Iec104Point.class
  26. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/ModbusPoint.class
  27. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/PointMapper.class
  28. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/config/sqlite/Database.class
  29. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/exception/CommunicationException.class
  30. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/exception/DispatchException.class
  31. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/exception/InitErrorException.class
  32. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/exception/LostConnectException.class
  33. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/exception/PushException.class
  34. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/NettyHttpServer$1.class
  35. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/NettyHttpServer.class
  36. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/annotation/NettyHttpHandler.class
  37. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/dto/Response.class
  38. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/exception/IllegalMethodNotAllowedException.class
  39. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/exception/IllegalPathDuplicatedException.class
  40. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/exception/IllegalPathNotFoundException.class
  41. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/handler/HelloWorldHandler.class
  42. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/handler/IFunctionHandler.class
  43. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/handler/PathVariableHandler.class
  44. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/handler/RequestBodyHandler.class
  45. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/http/NettyHttpRequest.class
  46. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/http/NettyHttpResponse.class
  47. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/iohandler/FilterLogginglHandler.class
  48. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/iohandler/HttpServerHandler.class
  49. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/iohandler/InterceptorHandler.class
  50. BIN
      gateway/build/classes/java/main/com/gyee/edge/gateway/restful/path/Path.class
  51. BIN
      gateway/build/resources/main/SQLiteSpy.db3
  52. BIN
      gateway/build/resources/main/SQLiteSpy.exe
  53. 16 0
      gateway/build/resources/main/application.yaml
  54. 6 0
      gateway/build/resources/main/banner.txt
  55. BIN
      gateway/build/resources/main/keytable.db
  56. BIN
      gateway/build/tmp/compileJava/previous-compilation-data.bin
  57. 0 43
      gateway/src/main/java/com/gyee/edge/gateway/client/ClientFactory.java
  58. 0 33
      gateway/src/main/java/com/gyee/edge/gateway/client/ClientManager.java
  59. 0 26
      gateway/src/main/java/com/gyee/edge/gateway/client/IClient.java
  60. 0 141
      gateway/src/main/java/com/gyee/edge/gateway/client/IEC102SerialClient.java
  61. 0 50
      gateway/src/main/java/com/gyee/edge/gateway/client/IEC102TcpClient.java
  62. 0 77
      gateway/src/main/java/com/gyee/edge/gateway/client/IEC102TcpMaster.java
  63. 0 10
      gateway/src/main/java/com/gyee/edge/gateway/restful/handler/IFunctionHandler.java
  64. 8 4
      gateway/src/main/java/com/gyee/edge/gateway/ApplicationEventListener.java
  65. 2 2
      gateway/src/main/java/com/gyee/edge/gateway/HttpServerApplication.java
  66. 1 1
      gateway/src/main/java/com/gyee/edge/gateway/bridge/rocketmq/producter/AsyncProducter.java
  67. 1 1
      gateway/src/main/java/com/gyee/edge/gateway/bridge/rocketmq/producter/Gyfp2Protocol.java
  68. 165 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/ClientManager.java
  69. 59 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/ClientWorkerFactory.java
  70. 10 3
      gateway/src/main/java/com/gyee/edge/gateway/client/EndPoint.java
  71. 21 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/IClientWorker.java
  72. 8 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/IMasterClientWorker.java
  73. 10 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/ISlaveClientWorker.java
  74. 65 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/MessageQueueService.java
  75. 28 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/iec102/IEC102Decoder.java
  76. 37 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/iec102/IEC102Encoder.java
  77. 2 2
      gateway/src/main/java/com/gyee/edge/gateway/client/IEC102RxtxClientHandler.java
  78. 145 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/iec102/IEC102SerialClientWorker.java
  79. 114 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/iec102/IEC102TcpClientWorker.java
  80. 31 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/iec102/SerialPortConfig.java
  81. 37 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/iec102/SysSframeHandler.java
  82. 49 0
      gateway/src/main/java/com/gyee/edge/gddlly/clientworker/rocketmq/RocketMQClientWorker.java
  83. 17 6
      gateway/src/main/java/com/gyee/edge/gateway/config/cache/CacheService.java
  84. 1 1
      gateway/src/main/java/com/gyee/edge/gateway/config/point/BachmanPoint.java
  85. 1 1
      gateway/src/main/java/com/gyee/edge/gateway/config/point/BfPoint.java
  86. 1 1
      gateway/src/main/java/com/gyee/edge/gateway/config/point/DjlPoint.java
  87. 1 1
      gateway/src/main/java/com/gyee/edge/gateway/config/point/FglPoint.java
  88. 1 1
      gateway/src/main/java/com/gyee/edge/gateway/config/point/GdupcPoint.java
  89. 1 1
      gateway/src/main/java/com/gyee/edge/gateway/config/point/Iec102Point.java
  90. 1 1
      gateway/src/main/java/com/gyee/edge/gateway/config/point/Iec104Point.java
  91. 1 1
      gateway/src/main/java/com/gyee/edge/gateway/config/point/ModbusPoint.java
  92. 1 1
      gateway/src/main/java/com/gyee/edge/gateway/config/point/PointMapper.java
  93. 1 1
      gateway/src/main/java/com/gyee/edge/gateway/config/sqlite/Database.java
  94. 62 0
      gateway/src/main/java/com/gyee/edge/gddlly/exception/CommunicationException.java
  95. 63 0
      gateway/src/main/java/com/gyee/edge/gddlly/exception/DispatchException.java
  96. 24 0
      gateway/src/main/java/com/gyee/edge/gddlly/exception/InitErrorException.java
  97. 62 0
      gateway/src/main/java/com/gyee/edge/gddlly/exception/LostConnectException.java
  98. 22 0
      gateway/src/main/java/com/gyee/edge/gddlly/exception/PushException.java
  99. 4 4
      gateway/src/main/java/com/gyee/edge/gateway/restful/NettyHttpServer.java
  100. 0 0
      gateway/src/main/java/com/gyee/edge/gateway/restful/annotation/NettyHttpHandler.java

BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/ApplicationEventListener.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/HttpServerApplication.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/bridge/rocketmq/producter/AsyncProducter$1.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/bridge/rocketmq/producter/AsyncProducter.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/bridge/rocketmq/producter/Gyfp2Protocol.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/ClientManager$WorkerDaemon.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/ClientManager.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/ClientWorkerFactory.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/EndPoint.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/IClientWorker.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/IMasterClientWorker.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/ISlaveClientWorker.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/iec102/IEC102RxtxClientHandler.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/iec102/IEC102SerialClientWorker$1.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/iec102/IEC102SerialClientWorker$2.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/iec102/IEC102SerialClientWorker.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/clientworker/iec102/SerialPortConfig.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/config/cache/CacheService.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/BachmanPoint.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/BfPoint.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/DjlPoint.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/FglPoint.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/GdupcPoint.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/Iec102Point.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/Iec104Point.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/ModbusPoint.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/config/point/PointMapper.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/config/sqlite/Database.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/exception/CommunicationException.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/exception/DispatchException.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/exception/InitErrorException.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/exception/LostConnectException.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/exception/PushException.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/NettyHttpServer$1.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/NettyHttpServer.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/annotation/NettyHttpHandler.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/dto/Response.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/exception/IllegalMethodNotAllowedException.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/exception/IllegalPathDuplicatedException.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/exception/IllegalPathNotFoundException.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/handler/HelloWorldHandler.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/handler/IFunctionHandler.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/handler/PathVariableHandler.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/handler/RequestBodyHandler.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/http/NettyHttpRequest.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/http/NettyHttpResponse.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/iohandler/FilterLogginglHandler.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/iohandler/HttpServerHandler.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/iohandler/InterceptorHandler.class


BIN
gateway/build/classes/java/main/com/gyee/edge/gateway/restful/path/Path.class


BIN
gateway/build/resources/main/SQLiteSpy.db3


BIN
gateway/build/resources/main/SQLiteSpy.exe


+ 16 - 0
gateway/build/resources/main/application.yaml

@@ -0,0 +1,16 @@
+server:
+  port: 8013
+spring:
+  application:
+  name: gateway
+  datasource:
+    driver-class-name: org.sqlite.JDBC
+#    F:\\colud_ideaspace\\edge\\gateway\\src\\main\\resources\\myDb
+    url: jdbc:sqlite::resource:keytable.db
+    username:
+    password:
+
+rocketmq:
+  namesrvaddr: 127.0.0.1:9876
+  topic: UPWARD_MHS_
+  tags: DJL_EP01

+ 6 - 0
gateway/build/resources/main/banner.txt

@@ -0,0 +1,6 @@
+   ______       _     _________  ________  ____      ____  _     ____  ____
+ .' ___  |     / \   |  _   _  ||_   __  ||_  _|    |_  _|/ \   |_  _||_  _|
+/ .'   \_|    / _ \  |_/ | | \_|  | |_ \_|  \ \  /\  / / / _ \    \ \  / /
+| |   ____   / ___ \     | |      |  _| _    \ \/  \/ / / ___ \    \ \/ /
+\ `.___]  |_/ /   \ \_  _| |_    _| |__/ |    \  /\  /_/ /   \ \_  _|  |_
+ `._____.'|____| |____||_____|  |________|     \/  \/|____| |____||______|

BIN
gateway/build/resources/main/keytable.db


BIN
gateway/build/tmp/compileJava/previous-compilation-data.bin


+ 0 - 43
gateway/src/main/java/com/gyee/edge/gateway/client/ClientFactory.java

@@ -1,43 +0,0 @@
-package com.gyee.edge.gateway.client;
-
-import com.gyee.edge.gateway.config.cache.CacheService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * 通过Endpoint,创建Client对象,并将Client对象放入ClientManager
- */
-@Component
-public class ClientFactory {
-
-    @Autowired
-    CacheService cacheService;
-
-    @Autowired
-    ClientManager clientManager;
-
-
-    public void CreateClients() {
-        List<EndPoint> endPoints = cacheService.getEndPointList();
-        for(EndPoint endPoint : endPoints) {
-            if (endPoint.getDirection() == 0) {
-                IClient iClient = createClient(endPoint);
-                clientManager.addClient(iClient);
-            }
-        }
-
-    }
-
-    public IClient createClient(EndPoint endPoint) {
-        //todo: 通过endpoint生成不同的IClient
-        return new IEC102TcpClient();
-    }
-
-
-
-
-
-
-}

+ 0 - 33
gateway/src/main/java/com/gyee/edge/gateway/client/ClientManager.java

@@ -1,33 +0,0 @@
-package com.gyee.edge.gateway.client;
-
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * 客户端管理,状态检查等
- * 批量的客户端管理任务,比如刷新连接状态,检查客户端连接是否正常,发送心跳信号,批量连接,断开,重连等
- *
- */
-@Component
-public class ClientManager {
-
-    private List<IClient> clientList;
-
-    public List<IClient> getClientList() {
-        return clientList;
-    }
-
-    public void addClient(IClient iClient) {
-        clientList.add(iClient);
-    }
-
-    public void removeClient(IClient iClient) {
-        clientList.remove(iClient);
-    }
-
-
-
-
-
-}

+ 0 - 26
gateway/src/main/java/com/gyee/edge/gateway/client/IClient.java

@@ -1,26 +0,0 @@
-package com.gyee.edge.gateway.client;
-
-import com.gyee.protocol.gyfp2.message.GYMessage;
-import io.netty.channel.EventLoopGroup;
-import io.netty.util.concurrent.Future;
-
-public interface IClient {
-
-    EndPoint getEndPoint();
-
-    Future<Integer> connect();
-
-    Future<Integer> reconnect();
-
-    void disconnect();
-
-    boolean isConnected();
-
-    EventLoopGroup getEventLoop();
-
-    Future<Integer> sendMessage(GYMessage gyMessage);
-
-    Future<Integer> send(Byte[] bytes);
-
-
-}

+ 0 - 141
gateway/src/main/java/com/gyee/edge/gateway/client/IEC102SerialClient.java

@@ -1,141 +0,0 @@
-package com.gyee.edge.gateway.client;
-
-import com.gyee.protocol.gyfp2.message.GYMessage;
-import io.netty.bootstrap.Bootstrap;
-import io.netty.channel.*;
-import io.netty.channel.oio.OioEventLoopGroup;
-import io.netty.channel.rxtx.RxtxChannel;
-import io.netty.channel.rxtx.RxtxChannelConfig;
-import io.netty.channel.rxtx.RxtxDeviceAddress;
-import io.netty.handler.codec.LineBasedFrameDecoder;
-import io.netty.handler.codec.string.StringDecoder;
-import io.netty.handler.codec.string.StringEncoder;
-import io.netty.util.concurrent.Future;
-
-import java.nio.charset.StandardCharsets;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.Executors;
-
-
-public class IEC102SerialClient implements IClient {
-
-    private EndPoint endPoint;
-
-    private IEC102RxtxClientHandler defaultHandler;
-
-    private EventLoopGroup eventLoop;
-
-    private volatile Channel channel;
-
-    private volatile boolean disconnected = false;
-    private volatile boolean reconnect = false;
-
-
-    private int status;
-
-    public IEC102SerialClient(EndPoint endPoint1) {
-        this.endPoint = endPoint1;
-    }
-
-    public EndPoint getEndPoint() {
-        return endPoint;
-    }
-
-    @Override
-    public Future<Integer> connect() {
-        return null;
-    }
-
-    @Override
-    public Future<Integer> reconnect() {
-        return null;
-    }
-
-    @Override
-    public void disconnect() {
-
-    }
-
-    @Override
-    public boolean isConnected() {
-        return false;
-    }
-
-    @Override
-    public EventLoopGroup getEventLoop() {
-        return null;
-    }
-
-    @Override
-    public Future<Integer> sendMessage(GYMessage gyMessage) {
-        return null;
-    }
-
-    @Override
-    public Future<Integer> send(Byte[] bytes) {
-        return null;
-    }
-
-    public int getStatus() {
-        return status;
-    }
-
-    public void createRxtx(IEC102RxtxClientHandler handler, String portName) throws Exception {
-        System.out.println(portName);
-        //串口使用阻塞io
-        EventLoopGroup group = new OioEventLoopGroup();
-        try {
-            Bootstrap bootstrap  = new Bootstrap();
-            bootstrap.group(group)
-                    .channelFactory(() -> {
-                        RxtxChannel rxtxChannel = new RxtxChannel();
-                        rxtxChannel.config()
-                                .setBaudrate(9600)
-                                .setDatabits(RxtxChannelConfig.Databits.DATABITS_8)
-                                .setParitybit(RxtxChannelConfig.Paritybit.NONE)
-                                .setStopbits(RxtxChannelConfig.Stopbits.STOPBITS_1);
-                        return rxtxChannel ;
-                    })
-                    .handler(new ChannelInitializer<RxtxChannel>() {
-                        @Override
-                        protected void initChannel(RxtxChannel rxtxChannel) {
-                            rxtxChannel.pipeline().addLast(
-                                    new LineBasedFrameDecoder(60000),
-                                    new StringEncoder(StandardCharsets.UTF_8),
-                                    new StringDecoder(StandardCharsets.UTF_8),
-                                    handler
-                            );
-                        }
-                    });
-
-            ChannelFuture f = bootstrap.connect(new RxtxDeviceAddress(portName)).sync();
-            f.channel().closeFuture().sync();
-        } finally {
-            group.shutdownGracefully();
-        }
-    }
-
-    public void start() {
-
-    }
-
-    public void start(IEC102RxtxClientHandler handler, String portName){
-        CompletableFuture.runAsync(()->{
-            try {
-                //阻塞的函数
-                createRxtx(handler,portName);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }, Executors.newSingleThreadExecutor());//不传默认使用ForkJoinPool,都是守护线程
-    }
-
-    public void stop() {
-
-    }
-
-    public void restart() {
-
-    }
-
-}

+ 0 - 50
gateway/src/main/java/com/gyee/edge/gateway/client/IEC102TcpClient.java

@@ -1,50 +0,0 @@
-package com.gyee.edge.gateway.client;
-
-
-import com.gyee.protocol.gyfp2.message.GYMessage;
-import io.netty.channel.EventLoopGroup;
-import io.netty.util.concurrent.Future;
-
-public class IEC102TcpClient implements IClient {
-
-
-    @Override
-    public EndPoint getEndPoint() {
-        return null;
-    }
-
-    @Override
-    public Future<Integer> connect() {
-        return null;
-    }
-
-    @Override
-    public Future<Integer> reconnect() {
-        return null;
-    }
-
-    @Override
-    public void disconnect() {
-
-    }
-
-    @Override
-    public boolean isConnected() {
-        return false;
-    }
-
-    @Override
-    public EventLoopGroup getEventLoop() {
-        return null;
-    }
-
-    @Override
-    public Future<Integer> sendMessage(GYMessage gyMessage) {
-        return null;
-    }
-
-    @Override
-    public Future<Integer> send(Byte[] bytes) {
-        return null;
-    }
-}

+ 0 - 77
gateway/src/main/java/com/gyee/edge/gateway/client/IEC102TcpMaster.java

@@ -1,77 +0,0 @@
-package com.gyee.edge.gateway.client;
-
-
-import com.gyee.protocol.gyfp2.message.GYMessage;
-import io.netty.channel.EventLoopGroup;
-import io.netty.util.concurrent.Future;
-
-public class IEC102TcpMaster implements IClient {
-
-    private EndPoint endPoint;
-
-    private int status;
-
-    public IEC102TcpMaster(EndPoint endPoint1) {
-        this.endPoint = endPoint1;
-    }
-
-    public EndPoint getEndPoint() {
-        return endPoint;
-    }
-
-    @Override
-    public Future<Integer> connect() {
-        return null;
-    }
-
-    @Override
-    public Future<Integer> reconnect() {
-        return null;
-    }
-
-    @Override
-    public void disconnect() {
-
-    }
-
-    @Override
-    public boolean isConnected() {
-        return false;
-    }
-
-    @Override
-    public EventLoopGroup getEventLoop() {
-        return null;
-    }
-
-    @Override
-    public Future<Integer> sendMessage(GYMessage gyMessage) {
-        return null;
-    }
-
-    @Override
-    public Future<Integer> send(Byte[] bytes) {
-        return null;
-    }
-
-    public int getStatus() {
-        return status;
-    }
-
-
-
-
-    public void start() {
-
-    }
-
-
-    public void stop() {
-
-    }
-
-    public void restart() {
-
-    }
-
-}

+ 0 - 10
gateway/src/main/java/com/gyee/edge/gateway/restful/handler/IFunctionHandler.java

@@ -1,10 +0,0 @@
-
-package com.gyee.edge.gateway.restful.handler;
-
-
-import com.gyee.edge.gateway.restful.dto.Response;
-import com.gyee.edge.gateway.restful.http.NettyHttpRequest;
-
-public interface IFunctionHandler<T> {
-    Response<T> execute(NettyHttpRequest request);
-}

+ 8 - 4
gateway/src/main/java/com/gyee/edge/gateway/ApplicationEventListener.java

@@ -1,6 +1,6 @@
-package com.gyee.edge.gateway;
+package com.gyee.edge.gddlly;
 
-import com.gyee.edge.gateway.bridge.rocketmq.producter.AsyncProducter;
+import com.gyee.edge.gddlly.clientworker.ClientManager;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,8 +13,11 @@ import org.springframework.stereotype.Component;
 public class ApplicationEventListener implements
         ApplicationListener<ApplicationReadyEvent> {
 
+//    @Autowired
+//    private AsyncProducter asyncProducter;
+//
     @Autowired
-    private AsyncProducter asyncProducter;
+    ClientManager clientManager;
 
 
     @SneakyThrows
@@ -22,7 +25,8 @@ public class ApplicationEventListener implements
     public void onApplicationEvent(ApplicationReadyEvent event) {
         log.info("ApplicationEvent  rised!");
         log.info("listener: " + event.toString());
-        asyncProducter.dataSendProducter();
+        clientManager.start();
+        //asyncProducter.dataSendProducter();
     }
 
 }

+ 2 - 2
gateway/src/main/java/com/gyee/edge/gateway/HttpServerApplication.java

@@ -1,7 +1,7 @@
 
-package com.gyee.edge.gateway;
+package com.gyee.edge.gddlly;
 
-import com.gyee.edge.gateway.restful.annotation.NettyHttpHandler;
+import com.gyee.edge.gddlly.restful.annotation.NettyHttpHandler;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/bridge/rocketmq/producter/AsyncProducter.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.bridge.rocketmq.producter;
+package com.gyee.edge.gddlly.bridge.rocketmq.producter;
 
 
 import lombok.extern.slf4j.Slf4j;

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/bridge/rocketmq/producter/Gyfp2Protocol.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.bridge.rocketmq.producter;
+package com.gyee.edge.gddlly.bridge.rocketmq.producter;
 
 import com.gyee.protocol.gyfp2.message.GYMessage;
 import com.gyee.protocol.gyfp2.message.MessageData;

+ 165 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/ClientManager.java

@@ -0,0 +1,165 @@
+package com.gyee.edge.gddlly.clientworker;
+
+import com.gyee.edge.gddlly.config.cache.CacheService;
+import com.gyee.edge.gddlly.exception.InitErrorException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 客户端管理,状态检查等
+ * 批量的客户端管理任务,比如刷新连接状态,检查客户端连接是否正常,发送心跳信号,批量连接,断开,重连等
+ *
+ */
+@Component
+@Slf4j
+public class ClientManager {
+
+    //从站(数据源设备)采集器列表
+    private List<ISlaveClientWorker> slaveWorkers;
+    //主站(数据转发目标)转发器列表
+    private List<IMasterClientWorker> masterWorkers;
+    //默认情况下的数据转发器
+    private IMasterClientWorker defaultMasterWorker;
+
+    //客户端网络节点配置信息
+    private List<EndPoint> endPoints;
+
+    //服务状态标识
+    private boolean workStarted = false;
+
+    @Autowired
+    private CacheService cacheService;
+
+    @Autowired
+    private ClientWorkerFactory workerFactory;
+
+    @Autowired
+    private MessageQueueService messageQueueService;
+
+    public boolean start() {
+
+        if (workStarted) {
+            return true;
+        }
+
+        try {
+            log.warn("网关服务启动...... ");
+            log.info("开始网络节点配置数据......");
+            endPoints = cacheService.getEndPointList();
+
+            if (endPoints == null || endPoints.size() < 1) {
+                throw new InitErrorException("没有网络节点endpoint配置信息!");
+            }
+
+            //初始化Master节点
+            List<EndPoint> masterEndPoints = endPoints.stream().filter(e -> e.getDirection() == 1).collect(Collectors.toList());
+            if (masterEndPoints == null || masterEndPoints.size() < 1)
+                throw  new InitErrorException("缺少有效的主站连接配置信息!");
+            for (EndPoint endPoint: masterEndPoints) {
+                Object obj = workerFactory.createClientWorker(endPoint);
+                if (obj instanceof IMasterClientWorker) {
+                    if (defaultMasterWorker == null)
+                        defaultMasterWorker = (IMasterClientWorker) obj;
+                    addMasterWorker((IMasterClientWorker) obj);
+                }
+            }
+
+            if (defaultMasterWorker == null)
+                throw new InitErrorException("创建主站连接器失败!");
+            else
+                log.info("主站连接器创建成功!masterendpoint = " + masterEndPoints.size());
+
+            //初始化Slave节点
+            List<EndPoint> slaveEndPoints = endPoints.stream().filter(e -> e.getDirection() == 0).collect(Collectors.toList());
+            if (slaveEndPoints == null || slaveEndPoints.size() < 1)
+                throw  new InitErrorException("缺少有效的从站连接配置信息!");
+            for (EndPoint endPoint: slaveEndPoints) {
+                Object obj = workerFactory.createClientWorker(endPoint);
+                if (obj instanceof ISlaveClientWorker) {
+                    addSlaveWorker((ISlaveClientWorker) obj);
+                }
+            }
+
+            if (slaveWorkers == null || slaveWorkers.size() < 1)
+                throw new InitErrorException("缺少有效的从站连接");
+            else
+                log.info("从站连接器创建成功!masterendpoint = " + masterEndPoints.size());
+
+            log.info("开始启动主站连接......");
+            defaultMasterWorker.start();
+            Thread.sleep(10000);
+
+            log.info("开始启动从站连接......");
+            for(ISlaveClientWorker clientWorker : slaveWorkers){
+                try {
+                    clientWorker.start();
+                } catch (Exception ex) {
+                    log.error("从站连接失败,endpoint = " + clientWorker.getEndPoint().toString());
+                }
+            }
+            workStarted = true;
+
+            Thread.sleep(60000);
+            log.info("开启守护线程......");
+            Thread thread = new Thread(new WorkerDaemon());
+            thread.setDaemon(true);
+            thread.start();
+
+        } catch (Exception ex) {
+            workStarted = false;
+            stop();
+            log.error(ex.getMessage());
+            return false;
+        }
+
+        return true;
+    }
+
+    public void stop() {
+        workStarted=false;
+        try {
+            Thread.sleep(5000);
+            //线程停止后,清空报警规则相关缓存
+            cacheService.clearCache();
+        } catch (Exception ex) {
+        }
+    }
+
+    private void addSlaveWorker(ISlaveClientWorker clientWorker) {
+        if (slaveWorkers == null)
+            slaveWorkers = new ArrayList<ISlaveClientWorker>();
+
+        slaveWorkers.add(clientWorker);
+    }
+
+    private void addMasterWorker(IMasterClientWorker clientWorker) {
+        if (masterWorkers == null)
+            masterWorkers = new ArrayList<IMasterClientWorker>();
+
+        masterWorkers.add(clientWorker);
+    }
+
+    /**
+     * 内部类,守护线程,定期检查所有主站及从站的通信和工作状态
+     */
+    class WorkerDaemon implements Runnable {
+
+        @Override
+        public void run() {
+            while(workStarted) {
+                try {
+                    //todo: 周期检查所有worker线程,发送心跳命令
+
+                    Thread.sleep(30000);
+                } catch (Exception e){
+                    log.error(e.getMessage());
+                }
+            }
+        }
+    }
+}

+ 59 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/ClientWorkerFactory.java

@@ -0,0 +1,59 @@
+package com.gyee.edge.gddlly.clientworker;
+
+import com.gyee.edge.common.utils.StringUtil;
+import com.gyee.edge.gddlly.exception.InitErrorException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+@Component
+@Slf4j
+public class ClientWorkerFactory {
+
+    public Object createClientWorker(EndPoint endPoint)  {
+        //1.参数有效性检查
+        //2.根据className,connectionType,protocol选择合适的类型
+        //3、创建对象
+        if (StringUtil.isBlank(endPoint.getClassName())) {
+            throw new InitErrorException("没有指定有效的连接器类名className");
+        }
+
+        if ("TCP".equals(endPoint.getConnectionType().toUpperCase())) {
+            if (StringUtil.isBlank(endPoint.getHost()) ||
+                    endPoint.getPort() <= 0 ||
+                    endPoint.getPort() >- 65535) {
+                throw new InitErrorException("无效的IP地址或端口");
+            }
+        } else if ("SERIAL".equals(endPoint.getConnectionType().toUpperCase())) {
+            if (StringUtil.isBlank(endPoint.getSerialPort()) ||
+                    endPoint.getBaudRate() <= 0 ||
+                    endPoint.getParityBit() <= 0) {
+                throw new InitErrorException("无效的串口参数");
+            }
+        } else {
+                throw new InitErrorException("无效的连接类型!");
+        }
+
+        try {
+            return Class.forName(endPoint.getClassName());
+        } catch (ClassNotFoundException e) {
+            throw new InitErrorException("无效的类型className!");
+        }
+
+    }
+
+
+//    public ISlaveClientWorker createSlaveClientWorker(EndPoint endPoint, IMasterClientWorker masterClientWorker)  {
+//        Object obj = createClientWorker(endPoint);
+//        if (obj instanceof ISlaveClientWorker) {
+//            ISlaveClientWorker slaveClientWorker = (ISlaveClientWorker)obj;
+//            slaveClientWorker.setDefaultMasterClientWorker(masterClientWorker);
+//            return slaveClientWorker;
+//        }
+//
+//        throw new InitErrorException("创建从站连接器失败! endpoint = " + endPoint);
+//
+//
+//    }
+
+
+}

+ 10 - 3
gateway/src/main/java/com/gyee/edge/gateway/client/EndPoint.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.client;
+package com.gyee.edge.gddlly.clientworker;
 
 import lombok.Data;
 
@@ -8,13 +8,14 @@ public class EndPoint {
     private String connectionType;
     private int direction;
     private String protocol;
+    private String className;
     private String host;
     private int port;
     private String serialPort;
     private int baudRate;
-    private int startBit;
+    private int dataBit;
     private int stopBit;
-    private int checkBit;
+    private int parityBit;
     private String userName;
     private String password;
     private String token;
@@ -22,4 +23,10 @@ public class EndPoint {
     private String path;
     private boolean enabled;
 
+    @Override
+    public String toString() {
+        //todo: 根据协议类型返回完整的配置信息
+        return id + "," + protocol + "," + className + "," + host;
+    }
+
 }

+ 21 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/IClientWorker.java

@@ -0,0 +1,21 @@
+package com.gyee.edge.gddlly.clientworker;
+
+
+import io.netty.channel.ChannelFuture;
+
+public interface IClientWorker {
+
+    EndPoint getEndPoint();
+
+    void start();
+
+    void stop();
+
+    int getState();
+
+    ChannelFuture sendMessage(Object message);
+
+    ChannelFuture sendBytes(Byte[] bytes);
+
+
+}

+ 8 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/IMasterClientWorker.java

@@ -0,0 +1,8 @@
+package com.gyee.edge.gddlly.clientworker;
+
+//面向中心(主站)
+public interface IMasterClientWorker extends IClientWorker {
+
+//    List<ISlaveClientWorker> getSlaveClientWorkers();
+
+}

+ 10 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/ISlaveClientWorker.java

@@ -0,0 +1,10 @@
+package com.gyee.edge.gddlly.clientworker;
+
+//面向设备(从站)
+public interface ISlaveClientWorker extends IClientWorker {
+
+//    IMasterClientWorker getDefaultMasterClientWorker();
+//
+//    void setDefaultMasterClientWorker(IMasterClientWorker clientWorker);
+
+}

+ 65 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/MessageQueueService.java

@@ -0,0 +1,65 @@
+package com.gyee.edge.gddlly.clientworker;
+
+import com.gyee.protocol.gyfp2.message.GYMessage;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+@Service
+@Slf4j
+public class MessageQueueService {
+
+    public final int MAX_QUEUE_SIZE = 10000;
+
+    private ConcurrentLinkedQueue<GYMessage> upwardQueue = new ConcurrentLinkedQueue<>();
+
+    private ConcurrentLinkedQueue<Object> downwardQueue = new ConcurrentLinkedQueue<>();
+
+    //添加到队尾
+    public boolean offerUpwardQueue(GYMessage gyMessage) {
+        if (upwardQueue.size()>MAX_QUEUE_SIZE) {
+            //upwardQueue.poll();
+            log.warn("网关内部中转消息队列已达上限,移除队首元素。 element = " + upwardQueue.poll().toString());
+        }
+        return upwardQueue.offer(gyMessage);
+    }
+
+    //取队首元素并删除
+    public GYMessage pollUpwardQueue() {
+        return upwardQueue.poll();
+    }
+
+    //取队首元素但不删除
+    public GYMessage peekUpwardQueue() {
+        return upwardQueue.peek();
+    }
+
+    public boolean isEmptyUpwardQueue() {
+        return upwardQueue.isEmpty();
+    }
+
+    //添加到队尾
+    public boolean offerDownwardQueue(Object obj) {
+        if (downwardQueue.size()>MAX_QUEUE_SIZE) {
+            //upwardQueue.poll();
+            log.warn("网关内部中转消息队列已达上限,移除队首元素。 element = " + downwardQueue.poll().toString());
+        }
+        return downwardQueue.offer(obj);
+    }
+
+    //取队首元素并删除
+    public Object pollDownwardQueue() {
+        return downwardQueue.poll();
+    }
+
+    //取队首元素但不删除
+    public Object peekDownwardQueue() {
+        return downwardQueue.peek();
+    }
+
+    public boolean isEmptyDownwardQueue() {
+        return downwardQueue.isEmpty();
+    }
+
+}

+ 28 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/iec102/IEC102Decoder.java

@@ -0,0 +1,28 @@
+package com.gyee.edge.gddlly.clientworker.iec102;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.ByteToMessageDecoder;
+
+import java.util.List;
+
+
+/**
+ * IEC102解码器
+ * @author sun
+ *
+ */
+public class IEC102Decoder extends ByteToMessageDecoder {
+	
+	@Override
+	protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
+//		byte[] data = new byte[in.readableBytes()];
+//		in.readBytes(data);
+//		String str=Analysis.analysis(ByteUtil.byteArrayToHexString(data));
+//		System.out.println(str);
+//		short send = Iec104Util.getSend(ByteUtil.getByte(data, 2, 4));
+//		Iec104ThreadLocal.getControlPool().setAccept(send);
+//		MessageDetail ruleDetail104 = Decoder104.encoder(data);
+//		out.add(ruleDetail104);
+	}
+}

+ 37 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/iec102/IEC102Encoder.java

@@ -0,0 +1,37 @@
+package com.gyee.edge.gddlly.clientworker.iec102;
+
+
+import com.gyee.protocol.gyfp2.message.GYMessage;
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.MessageToByteEncoder;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 编码器
+ * @author sun
+ *
+ */
+@Slf4j
+public class IEC102Encoder extends MessageToByteEncoder<GYMessage> {
+
+	
+	@Override
+	protected void encode(ChannelHandlerContext ctx, GYMessage msg, ByteBuf out) throws Exception {
+//		byte[] bytes = Encoder104.encoder(msg);
+//		short accept = Iec104ThreadLocal.getControlPool().getAccept();
+//		short send = Iec104ThreadLocal.getControlPool().getSend();
+//		short terminalAddress = Iec104ThreadLocal.getIec104Conig().getTerminnalAddress();
+//		// 替换终端地址 发送序号和接收序号
+//		byte[] terminalAddressBytes = Iec104Util.getTerminalAddressByte(terminalAddress);
+//		byte[] icontrol = Iec104Util.getIcontrol(accept, send);
+//		for (int i = 0; i < icontrol.length; i++) {
+//			bytes[i + 2] = icontrol[i];
+//		}
+//		bytes[10] = terminalAddressBytes[0];
+//		bytes[11] = terminalAddressBytes[1];
+//		log.info(ByteUtil.byteArrayToHexString(bytes));
+//		out.writeBytes(bytes);
+	}
+
+}

+ 2 - 2
gateway/src/main/java/com/gyee/edge/gateway/client/IEC102RxtxClientHandler.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.client;
+package com.gyee.edge.gddlly.clientworker.iec102;
 
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.SimpleChannelInboundHandler;
@@ -32,7 +32,7 @@ public class IEC102RxtxClientHandler extends SimpleChannelInboundHandler<String>
 
     public void write(String msg){
         if(ctx!=null){
-            ctx.writeAndFlush(msg);
+            ctx.pipeline().writeAndFlush(msg);
         }
     }
 

+ 145 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/iec102/IEC102SerialClientWorker.java

@@ -0,0 +1,145 @@
+package com.gyee.edge.gddlly.clientworker.iec102;
+
+import com.gyee.edge.gddlly.clientworker.EndPoint;
+import com.gyee.edge.gddlly.clientworker.IClientWorker;
+import com.gyee.edge.gddlly.exception.InitErrorException;
+import io.netty.bootstrap.Bootstrap;
+import io.netty.channel.*;
+import io.netty.channel.oio.OioEventLoopGroup;
+import io.netty.channel.rxtx.RxtxChannel;
+import io.netty.channel.rxtx.RxtxChannelConfig;
+import io.netty.channel.rxtx.RxtxDeviceAddress;
+import io.netty.handler.codec.LineBasedFrameDecoder;
+import io.netty.handler.codec.string.StringDecoder;
+import io.netty.handler.codec.string.StringEncoder;
+import lombok.extern.slf4j.Slf4j;
+
+import java.nio.charset.StandardCharsets;
+
+@Slf4j
+public class IEC102SerialClientWorker implements IClientWorker {
+
+    private EndPoint endPoint;
+
+    private SerialPortConfig serialPortConfig;
+
+    private IEC102RxtxClientHandler defaultHandler;
+
+    private EventLoopGroup eventLoop;
+
+    private volatile Channel channel;
+
+    public IEC102SerialClientWorker(EndPoint endPoint) {
+        this.serialPortConfig = getSerialPortConfig(endPoint);
+        this.endPoint = endPoint;
+    }
+
+    public SerialPortConfig getSerialPortConfig(EndPoint endPoint) {
+        if (endPoint.getSerialPort() == null ||
+                endPoint.getSerialPort().equals("") ||
+                endPoint.getBaudRate() < 100 ||
+                endPoint.getParityBit() < 0 ||
+                endPoint.getDataBit() < 0 ||
+                endPoint.getStopBit() < 0) {
+            throw new InitErrorException("串口配置参数错误,endpoint : " + endPoint.getId());
+        }
+
+        SerialPortConfig serialPortConfig = new SerialPortConfig();
+        serialPortConfig.setSerialPortName(endPoint.getSerialPort());
+        serialPortConfig.setBaudRate(endPoint.getBaudRate());
+        try {
+            serialPortConfig.setDataBits(RxtxChannelConfig.Databits.valueOf(endPoint.getDataBit()));
+        } catch (Exception e) {}
+
+        try {
+            serialPortConfig.setStopBits(RxtxChannelConfig.Stopbits.valueOf(endPoint.getStopBit()));
+        } catch (Exception e) {}
+
+        try {
+            serialPortConfig.setParity(RxtxChannelConfig.Paritybit.valueOf(endPoint.getParityBit()));
+        } catch (Exception e) {}
+
+        return serialPortConfig;
+    }
+
+    @Override
+    public EndPoint getEndPoint() {
+        return endPoint;
+    }
+
+
+    @Override
+    public void start() {
+        try {
+            log.info("启动串口102数据采集线程...");
+            //串口使用阻塞io
+            EventLoopGroup group = new OioEventLoopGroup();
+            try {
+                Bootstrap bootstrap  = new Bootstrap();
+                bootstrap.group(group)
+                        .channelFactory(() -> {
+                            RxtxChannel rxtxChannel = new RxtxChannel();
+                            rxtxChannel.config()
+                                    .setBaudrate(endPoint.getBaudRate())
+                                    .setDatabits(RxtxChannelConfig.Databits.DATABITS_8)
+                                    .setParitybit(RxtxChannelConfig.Paritybit.NONE)
+                                    .setStopbits(RxtxChannelConfig.Stopbits.STOPBITS_1);
+                            return rxtxChannel ;
+                        })
+                        .handler(new ChannelInitializer<RxtxChannel>() {
+                            @Override
+                            protected void initChannel(RxtxChannel rxtxChannel) {
+                                rxtxChannel.pipeline().addLast(
+                                        new LineBasedFrameDecoder(60000),
+                                        new StringEncoder(StandardCharsets.UTF_8),
+                                        new StringDecoder(StandardCharsets.UTF_8),
+                                        new IEC102RxtxClientHandler()
+                                );
+                            }
+                        });
+
+                ChannelFuture f = bootstrap.connect(new RxtxDeviceAddress(serialPortConfig.getSerialPortName())).sync();
+                f.addListener(new ChannelFutureListener() {
+                    @Override
+                    public void operationComplete(ChannelFuture future) throws Exception {
+                        log.info("连接成功! endpoint : " + endPoint.getId());
+                    }
+                });
+
+                this.channel = f.channel();
+                this.eventLoop = group;
+                //此处阻塞主线程;
+                f.channel().closeFuture().sync();
+            } finally {
+                group.shutdownGracefully();
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void shutdown() {
+        if (channel != null && channel.isOpen())
+            channel.close();
+    }
+
+    @Override
+    public int getStatus() {
+        return 0;
+    }
+
+
+    @Override
+    public ChannelFuture sendMessage(Object message) {
+        return  null;
+
+    }
+
+    @Override
+    public ChannelFuture sendBytes(Byte[] bytes) {
+        return null;
+
+    }
+}

+ 114 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/iec102/IEC102TcpClientWorker.java

@@ -0,0 +1,114 @@
+package com.gyee.edge.gddlly.clientworker.iec102;
+
+import com.gyee.edge.gddlly.clientworker.EndPoint;
+import com.gyee.edge.gddlly.clientworker.ISlaveClientWorker;
+import com.gyee.edge.gddlly.exception.InitErrorException;
+import io.netty.bootstrap.Bootstrap;
+import io.netty.channel.*;
+import io.netty.channel.nio.NioEventLoopGroup;
+import io.netty.channel.socket.SocketChannel;
+import io.netty.channel.socket.nio.NioSocketChannel;
+import io.netty.util.concurrent.Future;
+import io.netty.util.concurrent.GenericFutureListener;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class IEC102TcpClientWorker implements ISlaveClientWorker, Runnable {
+
+    private EndPoint endPoint;
+    private Channel channel = null;
+    private EventLoop eventLoop = null;
+    private boolean isRunning = false;
+
+    public IEC102TcpClientWorker(EndPoint ep) {
+        endPoint = ep;
+    }
+
+    @Override
+    public EndPoint getEndPoint() {
+        return endPoint;
+    }
+
+    @Override
+    public void start() {
+        if (isRunning) {
+            log.warn("worker线程已经在运行中,endPoint = " +endPoint);
+            return;
+        }
+
+        this.run();
+    }
+
+    @Override
+    public void run() {
+        try {
+            isRunning = true;
+            EventLoopGroup bossGroup = new NioEventLoopGroup();
+            Bootstrap bs = new Bootstrap();
+            bs.group(bossGroup)
+                    .channel(NioSocketChannel.class)
+                    .option(ChannelOption.SO_KEEPALIVE, true)
+                    .option(ChannelOption.TCP_NODELAY, true)
+                    .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000)
+                    .handler( new IEC102TcpClientInitializer() );
+            //连接服务端(从站)
+            ChannelFuture connectFuture = bs.connect(endPoint.getHost(), endPoint.getPort());
+            connectFuture.addListener(new GenericFutureListener<Future<? super Void>>() {
+                @Override
+                public void operationComplete(Future<? super Void> future) throws Exception {
+                    if (future.isSuccess()) {
+                        log.info("Server have success connect to " + endPoint);
+                    } else {
+                        log.error("Server fail connect to " + endPoint);
+                        throw new InitErrorException("Server start fail !", future.cause());
+                    }
+                }
+            });
+            Channel channel  = connectFuture.sync().channel();
+
+            channel.closeFuture().sync();
+        } catch (Exception e) {
+
+        } finally {
+            isRunning = false;
+        }
+    }
+
+    @Override
+    public void stop() {
+
+    }
+
+    @Override
+    public int getState() {
+        return 0;
+    }
+
+    @Override
+    public ChannelFuture sendMessage(Object message) {
+        return null;
+    }
+
+    @Override
+    public ChannelFuture sendBytes(Byte[] bytes) {
+        return null;
+    }
+
+
+    class IEC102TcpClientInitializer extends ChannelInitializer<SocketChannel> {
+        /**
+         * 初始化处理链
+         */
+        @Override
+        public void initChannel(SocketChannel ch) throws Exception {
+
+            ChannelPipeline pipeline = ch.pipeline();
+            // 沾包拆包工具
+            pipeline.addLast("decoder", new IEC102Decoder());
+            pipeline.addLast("SysS", new SysSframeHandler());
+            pipeline.addLast("encoder", new IEC102Encoder());
+
+        }
+    }
+
+}

+ 31 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/iec102/SerialPortConfig.java

@@ -0,0 +1,31 @@
+package com.gyee.edge.gddlly.clientworker.iec102;
+
+import io.netty.channel.rxtx.RxtxChannelConfig;
+import lombok.Data;
+
+@Data
+public final class SerialPortConfig {
+    /**
+     * 串口名称,以COM开头(COM0、COM1、COM2等等)
+     */
+    private String serialPortName;
+    /**
+     * 波特率, 默认:115200
+     */
+    private int baudRate = 115200;
+    /**
+     * 数据位 默认8位
+     * 可以设置的值:SerialPort.DATABITS_5、SerialPort.DATABITS_6、SerialPort.DATABITS_7、SerialPort.DATABITS_8
+     */
+    private RxtxChannelConfig.Databits dataBits = RxtxChannelConfig.Databits.DATABITS_8;
+    /**
+     * 停止位
+     * 可以设置的值:SerialPort.STOPBITS_1、SerialPort.STOPBITS_2、SerialPort.STOPBITS_1_5
+     */
+    private RxtxChannelConfig.Stopbits stopBits = RxtxChannelConfig.Stopbits.STOPBITS_1;
+    /**
+     * 校验位
+     * 可以设置的值:SerialPort.PARITY_NONE、SerialPort.PARITY_ODD、SerialPort.PARITY_EVEN、SerialPort.PARITY_MARK、SerialPort.PARITY_SPACE
+     */
+    private RxtxChannelConfig.Paritybit parity = RxtxChannelConfig.Paritybit.ODD;
+}

+ 37 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/iec102/SysSframeHandler.java

@@ -0,0 +1,37 @@
+package com.gyee.edge.gddlly.clientworker.iec102;
+
+
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.ChannelInboundHandlerAdapter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 
+* @ClassName: SysSframeInboundHandler  
+* @Description: 处理S帧的问题 
+* @author sun 
+ */
+public class SysSframeHandler extends ChannelInboundHandlerAdapter {
+
+	private static final Logger LOGGER = LoggerFactory.getLogger(ChannelInboundHandlerAdapter.class);
+	
+	/**
+	 * 拦截系统消息 
+	 */
+	@Override
+	public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
+//		ByteBuf result = (ByteBuf) msg;
+//		byte[] bytes = new byte[result.readableBytes()];
+//		result.readBytes(bytes);
+//		if (isSysInstruction(bytes)) {
+//			LOGGER.info("收到S帧" + Iec104Util.getAccept(ByteUtil.getByte(bytes, 2, 4)));
+//			ReferenceCountUtil.release(result);
+//			return;
+//		}
+//		result.writeBytes(bytes);
+//		LOGGER.info("普通指令");
+//		ctx.fireChannelRead(result);
+	}
+
+}

+ 49 - 0
gateway/src/main/java/com/gyee/edge/gddlly/clientworker/rocketmq/RocketMQClientWorker.java

@@ -0,0 +1,49 @@
+package com.gyee.edge.gddlly.clientworker.rocketmq;
+
+import com.gyee.edge.gddlly.clientworker.EndPoint;
+import com.gyee.edge.gddlly.clientworker.IMasterClientWorker;
+import io.netty.channel.ChannelFuture;
+
+public class RocketMQClientWorker implements IMasterClientWorker, Runnable {
+
+    private EndPoint endPoint;
+
+    public RocketMQClientWorker(EndPoint ep) {
+        endPoint = ep;
+    }
+
+    @Override
+    public EndPoint getEndPoint() {
+        return null;
+    }
+
+    @Override
+    public void start() {
+
+    }
+
+    @Override
+    public void shutdown() {
+
+    }
+
+    @Override
+    public int getStatus() {
+        return 0;
+    }
+
+    @Override
+    public ChannelFuture sendMessage(Object message) {
+        return null;
+    }
+
+    @Override
+    public ChannelFuture sendBytes(Byte[] bytes) {
+        return null;
+    }
+
+    @Override
+    public void run() {
+
+    }
+}

+ 17 - 6
gateway/src/main/java/com/gyee/edge/gateway/config/cache/CacheService.java

@@ -1,8 +1,8 @@
-package com.gyee.edge.gateway.config.cache;
+package com.gyee.edge.gddlly.config.cache;
 
-import com.gyee.edge.gateway.client.EndPoint;
-import com.gyee.edge.gateway.config.point.*;
-import com.gyee.edge.gateway.config.sqlite.Database;
+import com.gyee.edge.gddlly.clientworker.EndPoint;
+import com.gyee.edge.gddlly.config.point.*;
+import com.gyee.edge.gddlly.config.sqlite.Database;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -32,6 +32,7 @@ public class CacheService {
 
     private List<GdupcPoint> gdupcPointList;
 
+
     public List<EndPoint> getEndPointList() {
         if (endPointList == null) {
             endPointList = loadEndPoints();
@@ -102,13 +103,14 @@ public class CacheService {
                 endPoint.setConnectionType(rs.getString("connectionType"));
                 endPoint.setDirection(rs.getInt("direction"));
                 endPoint.setProtocol(rs.getString("protocol"));
+                endPoint.setClassName(rs.getString("className"));
                 endPoint.setHost(rs.getString("host"));
                 endPoint.setPort(rs.getInt("port"));
                 endPoint.setSerialPort(rs.getString("serialPort"));
                 endPoint.setBaudRate(rs.getInt("baudRate"));
-                endPoint.setStartBit(rs.getInt("startBit"));
+                endPoint.setDataBit(rs.getInt("dataBit"));
                 endPoint.setStopBit(rs.getInt("stopBit"));
-                endPoint.setCheckBit(rs.getInt("checkBit"));
+                endPoint.setParityBit(rs.getInt("parityBit"));
                 endPoint.setUserName(rs.getString("username"));
                 endPoint.setPassword(rs.getString("password"));
                 endPoint.setToken(rs.getString("token"));
@@ -297,4 +299,13 @@ public class CacheService {
         return gdupcPointList;
     }
 
+    public void clearCache() {
+        this.endPointList = null;
+        this.iec102PointList = null;
+        this.iec104PointList = null;
+        this.modbusPointList = null;
+        this.bfPointList = null;
+        this.bachmanPointList = null;
+        this.gdupcPointList = null;
+    }
 }

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/config/point/BachmanPoint.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.config.point;
+package com.gyee.edge.gddlly.config.point;
 
 import lombok.Data;
 

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/config/point/BfPoint.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.config.point;
+package com.gyee.edge.gddlly.config.point;
 
 import lombok.Data;
 

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/config/point/DjlPoint.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.config.point;
+package com.gyee.edge.gddlly.config.point;
 
 import lombok.Data;
 

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/config/point/FglPoint.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.config.point;
+package com.gyee.edge.gddlly.config.point;
 
 import lombok.Data;
 

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/config/point/GdupcPoint.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.config.point;
+package com.gyee.edge.gddlly.config.point;
 
 import lombok.Data;
 

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/config/point/Iec102Point.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.config.point;
+package com.gyee.edge.gddlly.config.point;
 
 import lombok.Data;
 

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/config/point/Iec104Point.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.config.point;
+package com.gyee.edge.gddlly.config.point;
 
 import lombok.Data;
 

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/config/point/ModbusPoint.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.config.point;
+package com.gyee.edge.gddlly.config.point;
 
 import lombok.Data;
 

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/config/point/PointMapper.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.config.point;
+package com.gyee.edge.gddlly.config.point;
 
 import lombok.Data;
 

+ 1 - 1
gateway/src/main/java/com/gyee/edge/gateway/config/sqlite/Database.java

@@ -1,4 +1,4 @@
-package com.gyee.edge.gateway.config.sqlite;
+package com.gyee.edge.gddlly.config.sqlite;
 
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;

+ 62 - 0
gateway/src/main/java/com/gyee/edge/gddlly/exception/CommunicationException.java

@@ -0,0 +1,62 @@
+
+package com.gyee.edge.gddlly.exception;
+
+public class CommunicationException extends RuntimeException {
+
+    /**
+     * Constructs a new exception with <code>null</code> as its detail message.
+     * The cause is not initialized, and may subsequently be initialized by a
+     * call to {@link #initCause}.
+     */
+    public CommunicationException() {
+        super();
+    }
+
+    /**
+     * Constructs a new exception with the specified detail message.  The
+     * cause is not initialized, and may subsequently be initialized by
+     * a call to {@link #initCause}.
+     *
+     * @param message the detail message. The detail message is saved for
+     *                later retrieval by the {@link #getMessage()} method.
+     */
+    public CommunicationException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs a new exception with the specified detail message and
+     * cause.  <p>Note that the detail message associated with
+     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * this exception's detail message.
+     *
+     * @param message the detail message (which is saved for later retrieval
+     *                by the {@link #getMessage()} method).
+     * @param cause   the cause (which is saved for later retrieval by the
+     *                {@link #getCause()} method).  (A <tt>null</tt> value is
+     *                permitted, and indicates that the cause is nonexistent or
+     *                unknown.)
+     * @since 1.4
+     */
+    public CommunicationException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    /**
+     * Constructs a new exception with the specified cause and a detail
+     * message of <tt>(cause==null ? null : cause.toString())</tt> (which
+     * typically contains the class and detail message of <tt>cause</tt>).
+     * This constructor is useful for exceptions that are little more than
+     * wrappers for other throwables (for example, {@link
+     * java.security.PrivilegedActionException}).
+     *
+     * @param cause the cause (which is saved for later retrieval by the
+     *              {@link #getCause()} method).  (A <tt>null</tt> value is
+     *              permitted, and indicates that the cause is nonexistent or
+     *              unknown.)
+     * @since 1.4
+     */
+    public CommunicationException(Throwable cause) {
+        super(cause);
+    }
+}

+ 63 - 0
gateway/src/main/java/com/gyee/edge/gddlly/exception/DispatchException.java

@@ -0,0 +1,63 @@
+
+package com.gyee.edge.gddlly.exception;
+
+public class DispatchException extends Exception {
+
+    /**
+     * Constructs a new exception with <code>null</code> as its detail message.
+     * The cause is not initialized, and may subsequently be initialized by a
+     * call to {@link #initCause}.
+     */
+    public DispatchException() {
+        super();
+    }
+
+    /**
+     * Constructs a new exception with the specified detail message.  The
+     * cause is not initialized, and may subsequently be initialized by
+     * a call to {@link #initCause}.
+     *
+     * @param message the detail message. The detail message is saved for
+     *                later retrieval by the {@link #getMessage()} method.
+     */
+    public DispatchException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs a new exception with the specified detail message and
+     * cause.  <p>Note that the detail message associated with
+     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * this exception's detail message.
+     *
+     * @param message the detail message (which is saved for later retrieval
+     *                by the {@link #getMessage()} method).
+     * @param cause   the cause (which is saved for later retrieval by the
+     *                {@link #getCause()} method).  (A <tt>null</tt> value is
+     *                permitted, and indicates that the cause is nonexistent or
+     *                unknown.)
+     * @since 1.4
+     */
+    public DispatchException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    /**
+     * Constructs a new exception with the specified cause and a detail
+     * message of <tt>(cause==null ? null : cause.toString())</tt> (which
+     * typically contains the class and detail message of <tt>cause</tt>).
+     * This constructor is useful for exceptions that are little more than
+     * wrappers for other throwables (for example, {@link
+     * java.security.PrivilegedActionException}).
+     *
+     * @param cause the cause (which is saved for later retrieval by the
+     *              {@link #getCause()} method).  (A <tt>null</tt> value is
+     *              permitted, and indicates that the cause is nonexistent or
+     *              unknown.)
+     * @since 1.4
+     */
+    public DispatchException(Throwable cause) {
+        super(cause);
+    }
+
+}

+ 24 - 0
gateway/src/main/java/com/gyee/edge/gddlly/exception/InitErrorException.java

@@ -0,0 +1,24 @@
+package com.gyee.edge.gddlly.exception;
+
+public class InitErrorException extends RuntimeException {
+
+    private static final long serialVersionUID = 4401440531171871948L;
+
+    private int errorCode = 1;
+
+    private String errorMsg;
+
+    protected InitErrorException() {
+
+    }
+
+    public InitErrorException(String errorMsg, Throwable e) {
+        super(errorMsg, e);
+        this.errorMsg = errorMsg;
+    }
+
+    public InitErrorException(String errorMsg) {
+        super(errorMsg);
+        this.errorMsg = errorMsg;
+    }
+}

+ 62 - 0
gateway/src/main/java/com/gyee/edge/gddlly/exception/LostConnectException.java

@@ -0,0 +1,62 @@
+package com.gyee.edge.gddlly.exception;
+
+public class LostConnectException extends CommunicationException {
+
+    /**
+     * Constructs a new exception with <code>null</code> as its detail message.
+     * The cause is not initialized, and may subsequently be initialized by a
+     * call to {@link #initCause}.
+     */
+    public LostConnectException() {
+        super();
+    }
+
+    /**
+     * Constructs a new exception with the specified detail message.  The
+     * cause is not initialized, and may subsequently be initialized by
+     * a call to {@link #initCause}.
+     *
+     * @param message the detail message. The detail message is saved for
+     *                later retrieval by the {@link #getMessage()} method.
+     */
+    public LostConnectException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs a new exception with the specified detail message and
+     * cause.  <p>Note that the detail message associated with
+     * <code>cause</code> is <i>not</i> automatically incorporated in
+     * this exception's detail message.
+     *
+     * @param message the detail message (which is saved for later retrieval
+     *                by the {@link #getMessage()} method).
+     * @param cause   the cause (which is saved for later retrieval by the
+     *                {@link #getCause()} method).  (A <tt>null</tt> value is
+     *                permitted, and indicates that the cause is nonexistent or
+     *                unknown.)
+     * @since 1.4
+     */
+    public LostConnectException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    /**
+     * Constructs a new exception with the specified cause and a detail
+     * message of <tt>(cause==null ? null : cause.toString())</tt> (which
+     * typically contains the class and detail message of <tt>cause</tt>).
+     * This constructor is useful for exceptions that are little more than
+     * wrappers for other throwables (for example, {@link
+     * java.security.PrivilegedActionException}).
+     *
+     * @param cause the cause (which is saved for later retrieval by the
+     *              {@link #getCause()} method).  (A <tt>null</tt> value is
+     *              permitted, and indicates that the cause is nonexistent or
+     *              unknown.)
+     * @since 1.4
+     */
+    public LostConnectException(Throwable cause) {
+        super(cause);
+    }
+
+}

+ 22 - 0
gateway/src/main/java/com/gyee/edge/gddlly/exception/PushException.java

@@ -0,0 +1,22 @@
+package com.gyee.edge.gddlly.exception;
+
+public class PushException extends IllegalStateException {
+
+    private static final long serialVersionUID = -4953949710626671131L;
+
+    public PushException() {
+        super();
+    }
+
+    public PushException(String message) {
+        super(message);
+    }
+
+    public PushException(Throwable throwable) {
+        super(throwable);
+    }
+
+    public PushException(String message, Throwable throwable) {
+        super(message, throwable);
+    }
+}

+ 4 - 4
gateway/src/main/java/com/gyee/edge/gateway/restful/NettyHttpServer.java

@@ -1,9 +1,9 @@
-package com.gyee.edge.gateway.restful;
+package com.gyee.edge.gddlly.restful;
 
 
-import com.gyee.edge.gateway.restful.iohandler.FilterLogginglHandler;
-import com.gyee.edge.gateway.restful.iohandler.HttpServerHandler;
-import com.gyee.edge.gateway.restful.iohandler.InterceptorHandler;
+import com.gyee.edge.gddlly.restful.iohandler.FilterLogginglHandler;
+import com.gyee.edge.gddlly.restful.iohandler.HttpServerHandler;
+import com.gyee.edge.gddlly.restful.iohandler.InterceptorHandler;
 import io.netty.bootstrap.ServerBootstrap;
 import io.netty.channel.ChannelFuture;
 import io.netty.channel.ChannelInitializer;

+ 0 - 0
gateway/src/main/java/com/gyee/edge/gateway/restful/annotation/NettyHttpHandler.java


Some files were not shown because too many files changed in this diff