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