From 14de918a79943e4961b09fa01ed320c6cad41f2e Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期三, 28 六月 2023 17:14:51 +0800
Subject: [PATCH] Revert "Revert "Merge branch 'hxb' into wjc""

---
 HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/socket/SocketPool.java |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/socket/SocketPool.java b/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/socket/SocketPool.java
new file mode 100644
index 0000000..79e11f6
--- /dev/null
+++ b/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/socket/SocketPool.java
@@ -0,0 +1,54 @@
+package com.hdl.sdk.link.socket;
+
+import com.hdl.sdk.link.socket.client.IClient;
+
+import java.net.DatagramSocket;
+import java.net.InetSocketAddress;
+import java.net.SocketException;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by Tong on 2021/10/19.
+ * 璁″垝鍙傝�僩eneric-pool銆丆ommons Pool杩涜瀹屽杽
+ */
+public class SocketPool {
+
+    private final ConcurrentHashMap<String, IClient> mPool;
+    private final ConcurrentHashMap<String, DatagramSocket> mUdpClientPool;
+
+    private SocketPool() {
+        mPool = new ConcurrentHashMap<>();
+        mUdpClientPool = new ConcurrentHashMap<>();
+    }
+
+
+    private static class SingletonInstance {
+        private static final SocketPool INSTANCE = new SocketPool();
+    }
+
+    public static SocketPool getInstance() {
+        return SingletonInstance.INSTANCE;
+    }
+
+    public void clear() {
+        mPool.clear();
+        mUdpClientPool.clear();
+    }
+
+    public synchronized DatagramSocket getUdpSocket(InetSocketAddress address) throws SocketException {
+        DatagramSocket socket = null;
+        final String key = address.getPort() + "";
+        if (mUdpClientPool.containsKey(key)) {
+            socket = mUdpClientPool.get(key);
+            if (socket != null && socket.isClosed()) {
+                mUdpClientPool.remove(key);
+                socket = null;
+            }
+        }
+        if (socket == null) {
+            socket = new DatagramSocket(address);
+            mUdpClientPool.put(key, socket);
+        }
+        return socket;
+    }
+}

--
Gitblit v1.8.0