From 4abbf4df07f02c0c94baa2787fdcf4a14dcb3463 Mon Sep 17 00:00:00 2001
From: sc.dm <822878110@qq.com>
Date: 星期四, 10 三月 2022 17:42:02 +0800
Subject: [PATCH] Merge branch '648540858:wvp-28181-2.0' into wvp-28181-2.0
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java | 58 ++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 42 insertions(+), 16 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
index 9c5be8e..a765b3a 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
@@ -4,6 +4,7 @@
import com.genersoft.iot.vmp.conf.DynamicTask;
import com.genersoft.iot.vmp.conf.UserSetup;
import com.genersoft.iot.vmp.gb28181.bean.CmdType;
+import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
import com.genersoft.iot.vmp.gb28181.bean.SubscribeInfo;
import com.genersoft.iot.vmp.gb28181.task.GPSSubscribeTask;
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
@@ -26,9 +27,7 @@
import javax.sip.RequestEvent;
import javax.sip.ServerTransaction;
import javax.sip.SipException;
-import javax.sip.header.CallIdHeader;
import javax.sip.header.ExpiresHeader;
-import javax.sip.header.Header;
import javax.sip.header.ToHeader;
import javax.sip.message.Request;
import javax.sip.message.Response;
@@ -80,17 +79,14 @@
Element rootElement = getRootElement(evt);
String cmd = XmlUtil.getText(rootElement, "CmdType");
if (CmdType.MOBILE_POSITION.equals(cmd)) {
- logger.info("鎺ユ敹鍒癕obilePosition璁㈤槄");
processNotifyMobilePosition(evt, rootElement);
// } else if (CmdType.ALARM.equals(cmd)) {
// logger.info("鎺ユ敹鍒癆larm璁㈤槄");
// processNotifyAlarm(evt, rootElement);
-// } else if (CmdType.CATALOG.equals(cmd)) {
-// logger.info("鎺ユ敹鍒癈atalog璁㈤槄");
-// processNotifyCatalogList(evt, rootElement);
+ } else if (CmdType.CATALOG.equals(cmd)) {
+ processNotifyCatalogList(evt, rootElement);
} else {
logger.info("鎺ユ敹鍒版秷鎭細" + cmd);
-// responseAck(evt, Response.OK);
Response response = null;
response = getMessageFactory().createResponse(200, request);
@@ -108,9 +104,6 @@
logger.info("processRequest serverTransactionId is null.");
}
}
-
-
-
} catch (ParseException e) {
e.printStackTrace();
} catch (SipException e) {
@@ -132,7 +125,7 @@
SubscribeInfo subscribeInfo = new SubscribeInfo(evt, platformId);
String sn = XmlUtil.getText(rootElement, "SN");
String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() + "_MobilePosition_" + platformId;
-
+ logger.info("鎺ユ敹鍒皗}鐨凪obilePosition璁㈤槄", platformId);
StringBuilder resultXml = new StringBuilder(200);
resultXml.append("<?xml version=\"1.0\" ?>\r\n")
.append("<Response>\r\n")
@@ -144,21 +137,20 @@
if (subscribeInfo.getExpires() > 0) {
if (redisCatchStorage.getSubscribe(key) != null) {
- dynamicTask.stopCron(key);
+ dynamicTask.stop(key);
}
String interval = XmlUtil.getText(rootElement, "Interval"); // GPS涓婃姤鏃堕棿闂撮殧
dynamicTask.startCron(key, new GPSSubscribeTask(redisCatchStorage, sipCommanderForPlatform, storager, platformId, sn, key), Integer.parseInt(interval));
redisCatchStorage.updateSubscribe(key, subscribeInfo);
}else if (subscribeInfo.getExpires() == 0) {
- dynamicTask.stopCron(key);
+ dynamicTask.stop(key);
redisCatchStorage.delSubscribe(key);
}
-
-
try {
- Response response = responseXmlAck(evt, resultXml.toString());
+ ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
+ Response response = responseXmlAck(evt, resultXml.toString(), parentPlatform);
ToHeader toHeader = (ToHeader)response.getHeader(ToHeader.NAME);
subscribeInfo.setToTag(toHeader.getTag());
redisCatchStorage.updateSubscribe(key, subscribeInfo);
@@ -177,7 +169,41 @@
}
private void processNotifyCatalogList(RequestEvent evt, Element rootElement) {
+ String platformId = SipUtils.getUserIdFromFromHeader(evt.getRequest());
+ String deviceID = XmlUtil.getText(rootElement, "DeviceID");
+ SubscribeInfo subscribeInfo = new SubscribeInfo(evt, platformId);
+ String sn = XmlUtil.getText(rootElement, "SN");
+ String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() + "_Catalog_" + platformId;
+ logger.info("鎺ユ敹鍒皗}鐨凜atalog璁㈤槄", platformId);
+ StringBuilder resultXml = new StringBuilder(200);
+ resultXml.append("<?xml version=\"1.0\" ?>\r\n")
+ .append("<Response>\r\n")
+ .append("<CmdType>Catalog</CmdType>\r\n")
+ .append("<SN>" + sn + "</SN>\r\n")
+ .append("<DeviceID>" + deviceID + "</DeviceID>\r\n")
+ .append("<Result>OK</Result>\r\n")
+ .append("</Response>\r\n");
+ if (subscribeInfo.getExpires() > 0) {
+ redisCatchStorage.updateSubscribe(key, subscribeInfo);
+ }else if (subscribeInfo.getExpires() == 0) {
+ redisCatchStorage.delSubscribe(key);
+ }
+
+ try {
+ ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
+ Response response = responseXmlAck(evt, resultXml.toString(), parentPlatform);
+ ToHeader toHeader = (ToHeader)response.getHeader(ToHeader.NAME);
+ subscribeInfo.setToTag(toHeader.getTag());
+ redisCatchStorage.updateSubscribe(key, subscribeInfo);
+
+ } catch (SipException e) {
+ e.printStackTrace();
+ } catch (InvalidArgumentException e) {
+ e.printStackTrace();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
}
}
--
Gitblit v1.8.0