From 0209dc89c9d5a65aaa1c6e3ae8140dfdb5020dcb Mon Sep 17 00:00:00 2001
From: SaltFish <42058801+SaltFish001@users.noreply.github.com>
Date: 星期四, 10 二月 2022 10:29:36 +0800
Subject: [PATCH] Update MediaServiceImpl.java
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java | 42 ++++++++++++++++++++++++++++++++++++------
1 files changed, 36 insertions(+), 6 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..8d0bdd2 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
@@ -80,17 +80,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);
@@ -132,7 +129,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")
@@ -177,7 +174,40 @@
}
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 {
+ Response response = responseXmlAck(evt, resultXml.toString());
+ 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