From 8adb5e06a5fcfad9a634944c0d65fc70c5c2527f Mon Sep 17 00:00:00 2001
From: Tong <1025782220@qq.com>
Date: 星期二, 19 四月 2022 10:12:57 +0800
Subject: [PATCH] 去掉依赖库

---
 HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java |   69 ++++++++++++++++++++++------------
 1 files changed, 45 insertions(+), 24 deletions(-)

diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java
index 5e87c6b..2d37ac5 100644
--- a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java
+++ b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java
@@ -2,23 +2,15 @@
 
 import android.text.TextUtils;
 
-import androidx.collection.ArrayMap;
-
 import com.hdl.sdk.common.utils.LogUtils;
 import com.hdl.sdk.common.utils.ThreadToolUtils;
 import com.hdl.sdk.socket.SocketRequest;
-import com.hdl.sdk.socket.annotation.ConnectStatus;
-import com.hdl.sdk.socket.client.IClient;
 import com.hdl.sdk.socket.client.IUdpClient;
 import com.hdl.sdk.socket.listener.SendListener;
 
-import java.net.ConnectException;
-import java.net.InetSocketAddress;
-import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingDeque;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -33,7 +25,9 @@
 
     private final AtomicInteger resendCount = new AtomicInteger(0);
 
-    private final ArrayMap<String, SendListener> sendMap = new ArrayMap<>();
+    private ExecutorService receiveThread;
+
+    private final ConcurrentMap<String, SendListener> sendMap = new ConcurrentHashMap<>();
 
     public UdpSocketBoot(IUdpClient client) {
         this.client = client;
@@ -44,38 +38,63 @@
      * @throws Exception 鍙兘绔彛鍐茬獊
      */
     public void bind() throws Exception {
-        if (null != client) {
-            client.bind();
-        }
+        client.bind();
+        initReceiveThread();
     }
 
     /**
+     * 鍒濆鍖栨帴鏀剁嚎绋�
+     */
+    private void initReceiveThread() {
+        if(null!=receiveThread){
+            return;
+        }
+        receiveThread = ThreadToolUtils.getInstance().newFixedThreadPool(1);
+        receiveThread.execute(new Runnable() {
+            @Override
+            public void run() {
+                while (true) {
+                    try {
+                        client.onHandleResponse();
+                    } catch (Exception e) {
+                       LogUtils.i("鎺ユ敹绾跨▼寮傚父锛�"+e.getMessage());
+                    }
+                }
+            }
+        });
+    }
+
+
+    /**
      * 鍙戦�佹暟鎹�
-     * @param inetSocketAddress 鐩殑鐨処P鍦板潃
+     * @param ipAddress 鐩殑鐨処P鍦板潃
+     * @param port 绔彛
      * @param msg 鍙戦�佹暟鎹�
      * @param listener 鍙戦�佸洖璋�
      */
-    public void sendMsg(InetSocketAddress inetSocketAddress,byte[] msg, SendListener listener) {
-        sendMsg(inetSocketAddress, msg, true, listener);
+    public void sendMsg(String ipAddress,int port,byte[] msg, SendListener listener) {
+        sendMsg(ipAddress,port, msg, true, listener);
     }
 
     /**
      * 鍙戦�佹暟鎹�
-     * @param inetSocketAddress 鐩殑鐨処P鍦板潃
+     * @param ipAddress 鐩殑鐨処P鍦板潃
+     * @param port 绔彛
      * @param msg 鍙戦�佹暟鎹�
      */
-    public void sendMsg(InetSocketAddress inetSocketAddress,byte[] msg) {
-        sendMsg(inetSocketAddress, msg, true, null);
+    public void sendMsg(String ipAddress,int port,byte[] msg) {
+        sendMsg(ipAddress,port, msg, true, null);
     }
 
     /**
      * 鍙戦�佹暟鎹�
-     * @param inetSocketAddress 鐩殑IP鍦板潃
+     * @param ipAddress 鐩殑IP鍦板潃
+     * @param port 绔彛
      * @param msg 鍙戦�佺殑鏁版嵁
      * @param isRefreshRetry 鏄惁瑕侀噸鍙�
      * @param listener 鍙戦�佸洖璋�
      */
-    public void sendMsg(InetSocketAddress inetSocketAddress, byte[] msg, boolean isRefreshRetry, SendListener listener) {
+    public void sendMsg(String ipAddress,int port, byte[] msg, boolean isRefreshRetry, SendListener listener) {
         if (isRefreshRetry) {
             //閲嶇疆杩炴帴娆℃暟
             resendCount.set(0);
@@ -85,7 +104,8 @@
             if (listener != null && !TextUtils.isEmpty(request.getAction())) {
                 sendMap.put(request.getAction(), listener);
             }
-            client.sendMsg(inetSocketAddress, msg);
+            LogUtils.i("鍙戦�佺洰鏍嘔P鍜岀鍙�", ipAddress + ":" + port);
+            client.sendMsg(ipAddress, port, msg);
         } catch (Exception e) {
             LogUtils.i("鍙戦�佸け璐�:" + e.getMessage());
         }
@@ -96,8 +116,9 @@
      */
     public synchronized void close() {
         isOpenRetry.set(false);
-
         sendMap.clear();
+        receiveThread.shutdown();
+        receiveThread=null;
         client.close();
     }
 }

--
Gitblit v1.8.0