From 098dd8a04515c9dbb143ab39678c2a71a03ec427 Mon Sep 17 00:00:00 2001
From: lin <18010473990@163.com>
Date: 星期六, 08 一月 2022 18:00:31 +0800
Subject: [PATCH] 优化推流结束时流类型的获取
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java | 58 ++++++++++++++++++++++++++++++----------------------------
1 files changed, 30 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
index de97c12..67bb56c 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
@@ -1,6 +1,7 @@
package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl;
import com.genersoft.iot.vmp.common.VideoManagerConstants;
+import com.genersoft.iot.vmp.conf.SipConfig;
import com.genersoft.iot.vmp.conf.UserSetup;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.event.DeviceOffLineDetector;
@@ -35,9 +36,7 @@
import java.util.Iterator;
/**
- * @description: Notify璇锋眰澶勭悊鍣�
- * @author: lawrencehj
- * @date: 2021骞�1鏈�27鏃�
+ * SIP鍛戒护绫诲瀷锛� NOTIFY璇锋眰
*/
@Component
public class NotifyRequestProcessor extends SIPRequestProcessorParent implements InitializingBean, ISIPRequestProcessor {
@@ -52,6 +51,9 @@
private IVideoManagerStorager storager;
@Autowired
+ private SipConfig sipConfig;
+
+ @Autowired
private IRedisCatchStorage redisCatchStorage;
@Autowired
@@ -60,9 +62,7 @@
@Autowired
private DeviceOffLineDetector offLineDetector;
- private static final String NOTIFY_CATALOG = "Catalog";
- private static final String NOTIFY_ALARM = "Alarm";
- private static final String NOTIFY_MOBILE_POSITION = "MobilePosition";
+
private String method = "NOTIFY";
@Autowired
@@ -80,13 +80,13 @@
Element rootElement = getRootElement(evt);
String cmd = XmlUtil.getText(rootElement, "CmdType");
- if (NOTIFY_CATALOG.equals(cmd)) {
+ if (CmdType.CATALOG.equals(cmd)) {
logger.info("鎺ユ敹鍒癈atalog閫氱煡");
processNotifyCatalogList(evt);
- } else if (NOTIFY_ALARM.equals(cmd)) {
+ } else if (CmdType.ALARM.equals(cmd)) {
logger.info("鎺ユ敹鍒癆larm閫氱煡");
processNotifyAlarm(evt);
- } else if (NOTIFY_MOBILE_POSITION.equals(cmd)) {
+ } else if (CmdType.MOBILE_POSITION.equals(cmd)) {
logger.info("鎺ユ敹鍒癕obilePosition閫氱煡");
processNotifyMobilePosition(evt);
} else {
@@ -110,7 +110,7 @@
MobilePosition mobilePosition = new MobilePosition();
Element deviceIdElement = rootElement.element("DeviceID");
String deviceId = deviceIdElement.getTextTrim().toString();
- Device device = storager.queryVideoDevice(deviceId);
+ Device device = redisCatchStorage.getDevice(deviceId);
if (device != null) {
if (!StringUtils.isEmpty(device.getName())) {
mobilePosition.setDeviceName(device.getName());
@@ -158,12 +158,15 @@
* @param evt
*/
private void processNotifyAlarm(RequestEvent evt) {
+ if (!sipConfig.isAlarm()) {
+ return;
+ }
try {
Element rootElement = getRootElement(evt);
Element deviceIdElement = rootElement.element("DeviceID");
String deviceId = deviceIdElement.getText().toString();
- Device device = storager.queryVideoDevice(deviceId);
+ Device device = redisCatchStorage.getDevice(deviceId);
if (device == null) {
return;
}
@@ -230,9 +233,7 @@
String deviceId = SipUtils.getUserIdFromFromHeader(fromHeader);
Element rootElement = getRootElement(evt);
- Element deviceIdElement = rootElement.element("DeviceID");
- String channelId = deviceIdElement.getText();
- Device device = storager.queryVideoDevice(deviceId);
+ Device device = redisCatchStorage.getDevice(deviceId);
if (device == null) {
return;
}
@@ -254,22 +255,23 @@
continue;
}
Element eventElement = itemDevice.element("Event");
+ DeviceChannel channel = channelContentHander(itemDevice);
switch (eventElement.getText().toUpperCase()) {
case "ON" : // 涓婄嚎
- logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾涓婄嚎銆恵}銆戦�氱煡", device.getDeviceId(), channelId);
- storager.deviceChannelOnline(deviceId, channelId);
+ logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾銆恵}銆戜笂绾块�氱煡", device.getDeviceId(), channel.getChannelId());
+ storager.deviceChannelOnline(deviceId, channel.getChannelId());
// 鍥炲200 OK
responseAck(evt, Response.OK);
break;
case "OFF" : // 绂荤嚎
- logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾绂荤嚎銆恵}銆戦�氱煡", device.getDeviceId(), channelId);
- storager.deviceChannelOffline(deviceId, channelId);
+ logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾銆恵}銆戠绾块�氱煡", device.getDeviceId(), channel.getChannelId());
+ storager.deviceChannelOffline(deviceId, channel.getChannelId());
// 鍥炲200 OK
responseAck(evt, Response.OK);
break;
case "VLOST" : // 瑙嗛涓㈠け
- logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾瑙嗛涓㈠け銆恵}銆戦�氱煡", device.getDeviceId(), channelId);
- storager.deviceChannelOffline(deviceId, channelId);
+ logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾銆恵}銆戣棰戜涪澶遍�氱煡", device.getDeviceId(), channel.getChannelId());
+ storager.deviceChannelOffline(deviceId, channel.getChannelId());
// 鍥炲200 OK
responseAck(evt, Response.OK);
break;
@@ -278,19 +280,17 @@
responseAck(evt, Response.OK);
break;
case "ADD" : // 澧炲姞
- logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑澧炲姞閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channelId);
- DeviceChannel deviceChannel = channelContentHander(itemDevice, channelId);
- storager.updateChannel(deviceId, deviceChannel);
+ logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑澧炲姞閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channel.getChannelId());
+ storager.updateChannel(deviceId, channel);
responseAck(evt, Response.OK);
break;
case "DEL" : // 鍒犻櫎
- logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑鍒犻櫎閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channelId);
- storager.delChannel(deviceId, channelId);
+ logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑鍒犻櫎閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channel.getChannelId());
+ storager.delChannel(deviceId, channel.getChannelId());
responseAck(evt, Response.OK);
break;
case "UPDATE" : // 鏇存柊
- logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑鏇存柊閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channelId);
- DeviceChannel channel = channelContentHander(itemDevice, channelId);
+ logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑鏇存柊閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channel.getChannelId());
storager.updateChannel(deviceId, channel);
responseAck(evt, Response.OK);
break;
@@ -316,13 +316,15 @@
}
}
- public DeviceChannel channelContentHander(Element itemDevice, String channelId){
+ public DeviceChannel channelContentHander(Element itemDevice){
Element channdelNameElement = itemDevice.element("Name");
String channelName = channdelNameElement != null ? channdelNameElement.getTextTrim().toString() : "";
Element statusElement = itemDevice.element("Status");
String status = statusElement != null ? statusElement.getTextTrim().toString() : "ON";
DeviceChannel deviceChannel = new DeviceChannel();
deviceChannel.setName(channelName);
+ Element channdelIdElement = itemDevice.element("DeviceID");
+ String channelId = channdelIdElement != null ? channdelIdElement.getTextTrim().toString() : "";
deviceChannel.setChannelId(channelId);
// ONLINE OFFLINE HIKVISION DS-7716N-E4 NVR鐨勫吋瀹规�у鐞�
if (status.equals("ON") || status.equals("On") || status.equals("ONLINE")) {
--
Gitblit v1.8.0