From 43e38e768360ac8ced4f31fb4a423f2badda5587 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期一, 13 十二月 2021 15:49:05 +0800
Subject: [PATCH] 2021-12-13 1.优化udp发送

---
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java |  118 ++++++++++++++++++++++++++---------------------------------
 1 files changed, 52 insertions(+), 66 deletions(-)

diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
index e5679af..7776163 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
@@ -4,6 +4,7 @@
 
 import com.hdl.sdk.common.event.EventDispatcher;
 import com.hdl.sdk.common.event.EventListener;
+import com.hdl.sdk.common.utils.LogUtils;
 import com.hdl.sdk.common.utils.ThreadToolUtils;
 import com.hdl.sdk.connect.bean.LinkRequest;
 import com.hdl.sdk.socket.SocketBoot;
@@ -48,37 +49,16 @@
 
     private ScheduledExecutorService sendThread;
 
+    private String observeTopic;
+
     public interface HdlSocketListener {
         void onSucceed(Object msg);
 
         void onFailure();
     }
 
-    private HdlSocketHelper(Long sendAwaitTime, int maxRetry, SocketBoot boot, LinkRequest linkRequest, String observeTopic, HdlSocketListener listener) {
-        this.sendAwaitTime = sendAwaitTime;
-        this.maxRetry = maxRetry;
-        this.boot = boot;
-        this.linkRequest = linkRequest;
-        this.listener = listener;
-        this.sendNumber = new AtomicInteger(0);
-        eventListener = new EventListener() {
-            @Override
-            public void onMessage(Object msg) {
-                isSend.set(true);
-                if (listener != null) {
-                    listener.onSucceed(msg);
-                }
-                if (sendThread != null) {
-                    sendThread.shutdownNow();
-                }
-                EventDispatcher.getInstance().remove(eventListener);
-            }
-        };
-        EventDispatcher.getInstance().register(observeTopic, eventListener);
-    }
-
     private HdlSocketHelper(Long sendAwaitTime, int maxRetry, UdpSocketBoot udpSocketBoot,
-                            String ipAddress,int port , LinkRequest linkRequest, String observeTopic, HdlSocketListener listener) {
+                            String ipAddress, int port, LinkRequest linkRequest, String observeTopic, HdlSocketListener listener) {
         this.sendAwaitTime = sendAwaitTime;
         this.maxRetry = maxRetry;
         this.udpSocketBoot = udpSocketBoot;
@@ -86,6 +66,7 @@
         this.port = port;
         this.linkRequest = linkRequest;
         this.listener = listener;
+        this.observeTopic = observeTopic;
         this.sendNumber = new AtomicInteger(0);
         eventListener = new EventListener() {
             @Override
@@ -97,75 +78,79 @@
                 if (sendThread != null) {
                     sendThread.shutdownNow();
                 }
-                EventDispatcher.getInstance().remove(eventListener);
+                //绉婚櫎鐩戝惉
+                removeListener();
             }
         };
-        EventDispatcher.getInstance().register(observeTopic, eventListener);
+        //娉ㄥ唽鐩戝惉
+        registerListener();
     }
 
-    public static void send(SocketBoot boot, LinkRequest linkRequest, String observeTopic, HdlSocketListener listener, Long sendAwaitTime, int maxRetry) {
-        if (TextUtils.isEmpty(observeTopic)) {
-            observeTopic = linkRequest.getTopic() + "_reply";
+
+    /**
+     * 娉ㄥ唽鐩戝惉
+     */
+    void registerListener() {
+        if (!TextUtils.isEmpty(observeTopic)) {
+            EventDispatcher.getInstance().register(observeTopic, eventListener);
+//            LogUtils.i("HdlSocketHelper", "register event");
         }
-        HdlSocketHelper socketHelper = new HdlSocketHelper(sendAwaitTime, maxRetry, boot, linkRequest, observeTopic, listener);
-        socketHelper.send();
     }
 
-    public static void send(SocketBoot boot, LinkRequest linkRequest, String observeTopic, HdlSocketListener listener) {
-        send(boot, linkRequest, observeTopic, listener, DEF_SEND_TIMEOUT, DEF_MAX_RETRY);
-    }
-
-
-    public static void send(SocketBoot boot, LinkRequest linkRequest, HdlSocketListener listener) {
-        send(boot, linkRequest, "", listener, DEF_SEND_TIMEOUT, DEF_MAX_RETRY);
-    }
-
-    public static void sendOne(SocketBoot boot, LinkRequest linkRequest, HdlSocketListener listener) {
-        send(boot, linkRequest, "", listener, DEF_SEND_TIMEOUT, DEF_SEND_ONE);
+    /**
+     * 绉婚櫎鐩戝惉
+     */
+    void removeListener() {
+        if (!TextUtils.isEmpty(observeTopic)) {
+            EventDispatcher.getInstance().remove(observeTopic, eventListener);
+//            LogUtils.i("HdlSocketHelper", "remove event");
+        }
     }
 
     /**
      * Udp鐨勫彂閫佹柟娉�
      *
-     * @param udpSocketBoot     Udp褰撳墠瀵规帴
-     * @param ipAddress 鍙戦�佺殑鐩爣IP鍦板潃
-     * @param port 鐩殑绔彛
-     * @param linkRequest       鍙戦�佺殑鏁版嵁
-     * @param observeTopic      鍙戦�佺殑涓婚
-     * @param retry 閲嶅彂鏁版
-     * @param listener          鍥炶皟
+     * @param udpSocketBoot Udp褰撳墠瀵规帴
+     * @param ipAddress     鍙戦�佺殑鐩爣IP鍦板潃
+     * @param port          鐩殑绔彛
+     * @param linkRequest   鍙戦�佺殑鏁版嵁
+     * @param observeTopic  鍙戦�佺殑涓婚
+     * @param retry         閲嶅彂鏁版
+     * @param listener      鍥炶皟
      */
-    public static void sendUdp(UdpSocketBoot udpSocketBoot, String  ipAddress ,int port, LinkRequest linkRequest, String observeTopic, int retry,HdlSocketListener listener) {
+    public static void sendUdp(UdpSocketBoot udpSocketBoot, String ipAddress, int port, LinkRequest linkRequest, String observeTopic, int retry, HdlSocketListener listener) {
         if (TextUtils.isEmpty(observeTopic)) {
             observeTopic = linkRequest.getTopic() + "_reply";
         }
-        HdlSocketHelper socketHelper = new HdlSocketHelper(DEF_SEND_TIMEOUT, retry, udpSocketBoot, ipAddress,port, linkRequest, observeTopic, listener);
+        HdlSocketHelper socketHelper = new HdlSocketHelper(DEF_SEND_TIMEOUT, retry, udpSocketBoot, ipAddress, port, linkRequest, observeTopic, listener);
         socketHelper.send();
     }
 
     /**
      * Udp鐨勫彂閫佹柟娉�
      *
-     * @param udpSocketBoot     Udp褰撳墠瀵规帴
-     * @param ipAddress 鍙戦�佺殑鐩爣IP鍦板潃
-     * @param port 鐩殑绔彛
-     * @param linkRequest       鍙戦�佺殑鏁版嵁
-     * @param listener          鍥炶皟
+     * @param udpSocketBoot Udp褰撳墠瀵规帴
+     * @param ipAddress     鍙戦�佺殑鐩爣IP鍦板潃
+     * @param port          鐩殑绔彛
+     * @param linkRequest   鍙戦�佺殑鏁版嵁
+     * @param listener      鍥炶皟
      */
-    public static void sendUdp(UdpSocketBoot udpSocketBoot, String  ipAddress ,int port, LinkRequest linkRequest, HdlSocketListener listener) {
-        sendUdp(udpSocketBoot,ipAddress,port,linkRequest,null,DEF_MAX_RETRY,listener);
+    public static void sendUdp(UdpSocketBoot udpSocketBoot, String ipAddress, int port, LinkRequest linkRequest, HdlSocketListener listener) {
+        sendUdp(udpSocketBoot, ipAddress, port, linkRequest, "", DEF_MAX_RETRY, listener);
     }
+
 
     /**
      * Udp鐨勫彂閫佹柟娉�
      *
-     * @param udpSocketBoot     Udp褰撳墠瀵规帴
-     * @param ipAddress 鍙戦�佺殑鐩爣IP鍦板潃
-     * @param port 鐩殑绔彛
-     * @param linkRequest       鍙戦�佺殑鏁版嵁
+     * @param udpSocketBoot Udp褰撳墠瀵规帴
+     * @param ipAddress     鍙戦�佺殑鐩爣IP鍦板潃
+     * @param port          鐩殑绔彛
+     * @param linkRequest   鍙戦�佺殑鏁版嵁
      */
-    public static void sendUdpOne(UdpSocketBoot udpSocketBoot, String  ipAddress ,int port, LinkRequest linkRequest) {
-        sendUdp(udpSocketBoot, ipAddress, port, linkRequest, null, DEF_SEND_ONE, null);
+    public static void sendUdpOne(UdpSocketBoot udpSocketBoot, String ipAddress, int port, LinkRequest linkRequest) {
+        HdlSocketHelper socketHelper = new HdlSocketHelper(DEF_SEND_TIMEOUT, DEF_SEND_ONE, udpSocketBoot, ipAddress, port, linkRequest, null, null);
+        socketHelper.send();
     }
 
     private void send() {
@@ -184,7 +169,7 @@
                             }
                             //濡傛灉鏄痷dp
                             if (null != udpSocketBoot) {
-                                udpSocketBoot.sendMsg(ipAddress,port, linkRequest.getSendBytes());
+                                udpSocketBoot.sendMsg(ipAddress, port, linkRequest.getSendBytes());
                             }
                         }
                     } catch (Exception e) {
@@ -219,7 +204,8 @@
      * 鍙戦�佸け璐�
      */
     private void notifyFailure() {
-        EventDispatcher.getInstance().remove(eventListener);
+        //绉婚櫎鐩戝惉
+        removeListener();
         if (sendThread != null) {
             sendThread.shutdownNow();
             sendThread = null;

--
Gitblit v1.8.0