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