From 15df08964bb459d6d01ec5ef423eae094eac1c72 Mon Sep 17 00:00:00 2001
From: ‘sxh’ <1632740646@qq.com>
Date: 星期四, 15 六月 2023 11:00:29 +0800
Subject: [PATCH] 新增设备主子码流选择,默认为不开启

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java |   56 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 43 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java
index 3d5c294..9b57fb0 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java
@@ -1,6 +1,5 @@
 package com.genersoft.iot.vmp.gb28181.transmit.callback;
 
-import com.alibaba.fastjson2.JSON;
 import com.genersoft.iot.vmp.vmanager.bean.DeferredResultEx;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
@@ -51,6 +50,8 @@
 	public static final String CALLBACK_CMD_ALARM = "CALLBACK_ALARM";
 
 	public static final String CALLBACK_CMD_BROADCAST = "CALLBACK_BROADCAST";
+
+	public static final String CALLBACK_CMD_SNAP= "CALLBACK_SNAP";
 
 	private Map<String, Map<String, DeferredResultEx>> map = new ConcurrentHashMap<>();
 
@@ -130,23 +131,52 @@
 		if (deferredResultMap == null) {
 			return;
 		}
-		Set<String> ids = deferredResultMap.keySet();
-		for (String id : ids) {
-			DeferredResultEx result = deferredResultMap.get(id);
-			if (result == null) {
+		synchronized (this) {
+			deferredResultMap = map.get(msg.getKey());
+			if (deferredResultMap == null) {
 				return;
 			}
-			if (result.getFilter() != null) {
-				Object handler = result.getFilter().handler(msg.getData());
-				System.out.println(JSON.toJSONString(handler));
-				result.getDeferredResult().setResult(handler);
-			}else {
-				result.getDeferredResult().setResult(msg.getData());
-			}
+			Set<String> ids = deferredResultMap.keySet();
+			for (String id : ids) {
+				DeferredResultEx result = deferredResultMap.get(id);
+				if (result == null) {
+					return;
+				}
+				if (result.getFilter() != null) {
+					Object handler = result.getFilter().handler(msg.getData());
+					result.getDeferredResult().setResult(handler);
+				}else {
+					result.getDeferredResult().setResult(msg.getData());
+				}
 
+			}
+			map.remove(msg.getKey());
 		}
-		map.remove(msg.getKey());
 	}
 
+	/*============================璁惧涓诲瓙鐮佹祦閫昏緫START========================*/
+	public static String getPlayKey(String deviceId,String channelId,boolean deviceSwitchSubStream,boolean isSubStream){
+		String key = null;
+		if(deviceSwitchSubStream){
+			key = CALLBACK_CMD_PLAY + isSubStream + deviceId + channelId;
+		}else {
+			key = CALLBACK_CMD_PLAY +deviceId + channelId;
+		}
+		return key;
+	}
+
+	public static String getSnapKey(String deviceId,String channelId,boolean deviceSwitchSubStream,boolean isSubStream){
+		String key = null;
+		if(deviceSwitchSubStream){
+			key = CALLBACK_CMD_SNAP + isSubStream + deviceId + channelId;
+		}else {
+			key = CALLBACK_CMD_SNAP +deviceId + channelId;
+		}
+		return key;
+	}
+
+
+	/*============================璁惧涓诲瓙鐮佹祦閫昏緫END========================*/
+
 
 }

--
Gitblit v1.8.0