From 1ab73f69ebdb30cdf8aeb5437c307df34bc0f6a6 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 26 十月 2022 17:15:29 +0800
Subject: [PATCH] 支持多网卡

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java |   46 ++++++++++++++++++++++++----------------------
 1 files changed, 24 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
index cd70dd0..f072224 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
@@ -11,6 +11,7 @@
 import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
 import com.genersoft.iot.vmp.utils.SpringBeanFactory;
 import gov.nist.javax.sip.SipStackImpl;
+import gov.nist.javax.sip.message.SIPRequest;
 import org.dom4j.Element;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -67,10 +68,10 @@
     @Override
     public void handForPlatform(RequestEvent evt, ParentPlatform parentPlatform, Element rootElement) {
 
-        ServerTransaction serverTransaction = getServerTransaction(evt);
+        SIPRequest request = (SIPRequest) evt.getRequest();
 
         // 姝ゅ鏄笂绾у彂鍑虹殑DeviceControl鎸囦护
-        String targetGBId = ((SipURI) ((HeaderAddress) evt.getRequest().getHeader(ToHeader.NAME)).getAddress().getURI()).getUser();
+        String targetGBId = ((SipURI) request.getToHeader().getAddress().getURI()).getUser();
         String channelId = getText(rootElement, "DeviceID");
         // 杩滅▼鍚姩鍔熻兘
         if (!ObjectUtils.isEmpty(getText(rootElement, "TeleBoot"))) {
@@ -83,23 +84,24 @@
                     logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 娉ㄩ攢: {}", e.getMessage());
                 }
                 taskExecutor.execute(()->{
-                    try {
-                        Thread.sleep(3000);
-                        SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider");
-                        SipStackImpl stack = (SipStackImpl)up.getSipStack();
-                        stack.stop();
-                        Iterator listener = stack.getListeningPoints();
-                        while (listener.hasNext()) {
-                            stack.deleteListeningPoint((ListeningPoint) listener.next());
-                        }
-                        Iterator providers = stack.getSipProviders();
-                        while (providers.hasNext()) {
-                            stack.deleteSipProvider((SipProvider) providers.next());
-                        }
-                        VManageBootstrap.restart();
-                    } catch (InterruptedException | ObjectInUseException e) {
-                        logger.error("[浠诲姟鎵ц澶辫触] 鏈嶅姟閲嶅惎: {}", e.getMessage());
-                    }
+                    // 杩滅▼鍚姩
+//                    try {
+//                        Thread.sleep(3000);
+//                        SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider");
+//                        SipStackImpl stack = (SipStackImpl)up.getSipStack();
+//                        stack.stop();
+//                        Iterator listener = stack.getListeningPoints();
+//                        while (listener.hasNext()) {
+//                            stack.deleteListeningPoint((ListeningPoint) listener.next());
+//                        }
+//                        Iterator providers = stack.getSipProviders();
+//                        while (providers.hasNext()) {
+//                            stack.deleteSipProvider((SipProvider) providers.next());
+//                        }
+//                        VManageBootstrap.restart();
+//                    } catch (InterruptedException | ObjectInUseException e) {
+//                        logger.error("[浠诲姟鎵ц澶辫触] 鏈嶅姟閲嶅惎: {}", e.getMessage());
+//                    }
                 });
             } else {
                 // 杩滅▼鍚姩鎸囧畾璁惧
@@ -111,7 +113,7 @@
             Device deviceForPlatform = storager.queryVideoDeviceByPlatformIdAndChannelId(parentPlatform.getServerGBId(), channelId);
             if (deviceForPlatform == null) {
                 try {
-                    responseAck(serverTransaction, Response.NOT_FOUND);
+                    responseAck(request, Response.NOT_FOUND);
                 } catch (SipException | InvalidArgumentException | ParseException e) {
                     logger.error("[鍛戒护鍙戦�佸け璐 閿欒淇℃伅: {}", e.getMessage());
                 }
@@ -121,14 +123,14 @@
                 cmder.fronEndCmd(deviceForPlatform, channelId, cmdString, eventResult -> {
                     // 澶辫触鐨勫洖澶�
                     try {
-                        responseAck(serverTransaction, eventResult.statusCode, eventResult.msg);
+                        responseAck(request, eventResult.statusCode, eventResult.msg);
                     } catch (SipException | InvalidArgumentException | ParseException e) {
                         logger.error("[鍛戒护鍙戦�佸け璐 浜戝彴/鍓嶇鍥炲: {}", e.getMessage());
                     }
                 }, eventResult -> {
                     // 鎴愬姛鐨勫洖澶�
                     try {
-                        responseAck(serverTransaction, eventResult.statusCode);
+                        responseAck(request, eventResult.statusCode);
                     } catch (SipException | InvalidArgumentException | ParseException e) {
                         logger.error("[鍛戒护鍙戦�佸け璐 浜戝彴/鍓嶇鍥炲: {}", e.getMessage());
                     }

--
Gitblit v1.8.0