From c5ddf5985892f052263240a02e21215027e6ee05 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 19 一月 2022 17:40:03 +0800
Subject: [PATCH] 修改readme
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java | 77 +++++++++++++++++++++++++++++++++-----
1 files changed, 66 insertions(+), 11 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 f21895c..48c4939 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,8 @@
package com.genersoft.iot.vmp.gb28181.transmit.callback;
+import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import org.springframework.http.HttpStatus;
@@ -9,7 +11,7 @@
import org.springframework.web.context.request.async.DeferredResult;
/**
- * @Description: 寮傛璇锋眰澶勭悊
+ * @description: 寮傛璇锋眰澶勭悊
* @author: swwheihei
* @date: 2020骞�5鏈�8鏃� 涓嬪崍7:59:05
*/
@@ -31,11 +33,13 @@
public static final String CALLBACK_CMD_RECORDINFO = "CALLBACK_RECORDINFO";
- public static final String CALLBACK_CMD_PlAY = "CALLBACK_PLAY";
+ public static final String CALLBACK_CMD_PLAY = "CALLBACK_PLAY";
+
+ public static final String CALLBACK_CMD_PLAYBACK = "CALLBACK_PLAY";
+
+ public static final String CALLBACK_CMD_DOWNLOAD = "CALLBACK_DOWNLOAD";
public static final String CALLBACK_CMD_STOP = "CALLBACK_STOP";
-
- public static final String CALLBACK_ONVIF = "CALLBACK_ONVIF";
public static final String CALLBACK_CMD_MOBILEPOSITION = "CALLBACK_MOBILEPOSITION";
@@ -45,21 +49,72 @@
public static final String CALLBACK_CMD_BROADCAST = "CALLBACK_BROADCAST";
- private Map<String, DeferredResult> map = new ConcurrentHashMap<String, DeferredResult>();
+ private Map<String, Map<String, DeferredResult>> map = new ConcurrentHashMap<>();
- public void put(String key, DeferredResult result) {
- map.put(key, result);
+
+ public void put(String key, String id, DeferredResult result) {
+ Map<String, DeferredResult> deferredResultMap = map.get(key);
+ if (deferredResultMap == null) {
+ deferredResultMap = new ConcurrentHashMap<>();
+ map.put(key, deferredResultMap);
+ }
+ deferredResultMap.put(id, result);
}
- public DeferredResult get(String key) {
- return map.get(key);
+ public DeferredResult get(String key, String id) {
+ Map<String, DeferredResult> deferredResultMap = map.get(key);
+ if (deferredResultMap == null) return null;
+ return deferredResultMap.get(id);
}
-
+
+ public boolean exist(String key, String id){
+ if (key == null) return false;
+ Map<String, DeferredResult> deferredResultMap = map.get(key);
+ if (id == null) {
+ return deferredResultMap != null;
+ }else {
+ return deferredResultMap != null && deferredResultMap.get(id) != null;
+ }
+ }
+
+ /**
+ * 閲婃斁鍗曚釜璇锋眰
+ * @param msg
+ */
public void invokeResult(RequestMessage msg) {
- DeferredResult result = map.get(msg.getId());
+ Map<String, DeferredResult> deferredResultMap = map.get(msg.getKey());
+ if (deferredResultMap == null) {
+ return;
+ }
+ DeferredResult result = deferredResultMap.get(msg.getId());
if (result == null) {
return;
}
result.setResult(new ResponseEntity<>(msg.getData(),HttpStatus.OK));
+ deferredResultMap.remove(msg.getId());
+ if (deferredResultMap.size() == 0) {
+ map.remove(msg.getKey());
+ }
+ }
+
+ /**
+ * 閲婃斁鎵�鏈夌殑璇锋眰
+ * @param msg
+ */
+ public void invokeAllResult(RequestMessage msg) {
+ Map<String, DeferredResult> deferredResultMap = map.get(msg.getKey());
+ if (deferredResultMap == null) {
+ return;
+ }
+ Set<String> ids = deferredResultMap.keySet();
+ for (String id : ids) {
+ DeferredResult result = deferredResultMap.get(id);
+ if (result == null) {
+ return;
+ }
+ result.setResult(ResponseEntity.ok().body(msg.getData()));
+ }
+ map.remove(msg.getKey());
+
}
}
--
Gitblit v1.8.0