From d6262acf6ab2a5083e62ea98299b378f61cd5421 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 20 四月 2023 16:42:44 +0800
Subject: [PATCH] 更新readme
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/callback/DeferredResultHolder.java | 88 +++++++++++++++++++++++++++++++------------
1 files changed, 63 insertions(+), 25 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 ee24376..a351445 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,14 +1,14 @@
package com.genersoft.iot.vmp.gb28181.transmit.callback;
-import java.util.HashMap;
+import com.genersoft.iot.vmp.vmanager.bean.DeferredResultEx;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.context.request.async.DeferredResult;
+
+import java.util.Collection;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.async.DeferredResult;
/**
* @description: 寮傛璇锋眰澶勭悊
@@ -35,7 +35,13 @@
public static final String CALLBACK_CMD_PLAY = "CALLBACK_PLAY";
+ public static final String CALLBACK_CMD_PLAYBACK = "CALLBACK_PLAYBACK";
+
+ public static final String CALLBACK_CMD_DOWNLOAD = "CALLBACK_DOWNLOAD";
+
public static final String CALLBACK_CMD_STOP = "CALLBACK_STOP";
+
+ public static final String UPLOAD_FILE_CHANNEL = "UPLOAD_FILE_CHANNEL";
public static final String CALLBACK_CMD_MOBILEPOSITION = "CALLBACK_MOBILEPOSITION";
@@ -45,27 +51,48 @@
public static final String CALLBACK_CMD_BROADCAST = "CALLBACK_BROADCAST";
- private Map<String, Map<String, DeferredResult>> map = new ConcurrentHashMap<>();
+ private Map<String, Map<String, DeferredResultEx>> map = new ConcurrentHashMap<>();
- public void put(String key, String id, DeferredResult result) {
- Map<String, DeferredResult> deferredResultMap = map.get(key);
+ public void put(String key, String id, DeferredResultEx result) {
+ Map<String, DeferredResultEx> deferredResultMap = map.get(key);
if (deferredResultMap == null) {
deferredResultMap = new ConcurrentHashMap<>();
map.put(key, deferredResultMap);
}
deferredResultMap.put(id, result);
}
+
+ public void put(String key, String id, DeferredResult result) {
+ Map<String, DeferredResultEx> deferredResultMap = map.get(key);
+ if (deferredResultMap == null) {
+ deferredResultMap = new ConcurrentHashMap<>();
+ map.put(key, deferredResultMap);
+ }
+ deferredResultMap.put(id, new DeferredResultEx(result));
+ }
- public DeferredResult get(String key, String id) {
- Map<String, DeferredResult> deferredResultMap = map.get(key);
- if (deferredResultMap == null) return null;
+ public DeferredResultEx get(String key, String id) {
+ Map<String, DeferredResultEx> deferredResultMap = map.get(key);
+ if (deferredResultMap == null || ObjectUtils.isEmpty(id)) {
+ return null;
+ }
return deferredResultMap.get(id);
}
+ public Collection<DeferredResultEx> getAllByKey(String key) {
+ Map<String, DeferredResultEx> deferredResultMap = map.get(key);
+ if (deferredResultMap == null) {
+ return null;
+ }
+ return deferredResultMap.values();
+ }
+
public boolean exist(String key, String id){
- if (key == null) return false;
- Map<String, DeferredResult> deferredResultMap = map.get(key);
+ if (key == null) {
+ return false;
+ }
+ Map<String, DeferredResultEx> deferredResultMap = map.get(key);
if (id == null) {
return deferredResultMap != null;
}else {
@@ -78,15 +105,15 @@
* @param msg
*/
public void invokeResult(RequestMessage msg) {
- Map<String, DeferredResult> deferredResultMap = map.get(msg.getKey());
+ Map<String, DeferredResultEx> deferredResultMap = map.get(msg.getKey());
if (deferredResultMap == null) {
return;
}
- DeferredResult result = deferredResultMap.get(msg.getId());
+ DeferredResultEx result = deferredResultMap.get(msg.getId());
if (result == null) {
return;
}
- result.setResult(new ResponseEntity<>(msg.getData(),HttpStatus.OK));
+ result.getDeferredResult().setResult(msg.getData());
deferredResultMap.remove(msg.getId());
if (deferredResultMap.size() == 0) {
map.remove(msg.getKey());
@@ -98,19 +125,30 @@
* @param msg
*/
public void invokeAllResult(RequestMessage msg) {
- Map<String, DeferredResult> deferredResultMap = map.get(msg.getKey());
+ Map<String, DeferredResultEx> 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) {
+ synchronized (this) {
+ deferredResultMap = map.get(msg.getKey());
+ if (deferredResultMap == null) {
return;
}
- result.setResult(ResponseEntity.ok().body(msg.getData()));
- }
- map.remove(msg.getKey());
+ 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());
+ }
}
}
--
Gitblit v1.8.0