|
|
@@ -3,6 +3,7 @@ package com.genersoft.iot.vmp.media.zlm;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
@@ -39,12 +40,8 @@ public class ZLMHttpHookSubscribe {
|
|
|
private Map<HookType, Map<JSONObject, ZLMHttpHookSubscribe.Event>> allSubscribes = new ConcurrentHashMap<>();
|
|
|
|
|
|
public void addSubscribe(HookType type, JSONObject hookResponse, ZLMHttpHookSubscribe.Event event) {
|
|
|
- Map<JSONObject, Event> eventMap = allSubscribes.get(type);
|
|
|
- if (eventMap == null) {
|
|
|
- eventMap = new HashMap<JSONObject, Event>();
|
|
|
- allSubscribes.put(type,eventMap);
|
|
|
- }
|
|
|
- eventMap.put(hookResponse, event);
|
|
|
+ allSubscribes.computeIfAbsent(type, k -> new ConcurrentHashMap<>())
|
|
|
+ .put(hookResponse, event);
|
|
|
}
|
|
|
|
|
|
public ZLMHttpHookSubscribe.Event getSubscribe(HookType type, JSONObject hookResponse) {
|
|
|
@@ -81,7 +78,8 @@ public class ZLMHttpHookSubscribe {
|
|
|
|
|
|
Set<Map.Entry<JSONObject, Event>> entries = eventMap.entrySet();
|
|
|
if (entries.size() > 0) {
|
|
|
- for (Map.Entry<JSONObject, Event> entry : entries) {
|
|
|
+ List<Map.Entry<JSONObject, ZLMHttpHookSubscribe.Event>> entriesToRemove = new ArrayList<>();
|
|
|
+ for (Map.Entry<JSONObject, ZLMHttpHookSubscribe.Event> entry : entries) {
|
|
|
JSONObject key = entry.getKey();
|
|
|
Boolean result = null;
|
|
|
for (String s : key.keySet()) {
|
|
|
@@ -93,9 +91,16 @@ public class ZLMHttpHookSubscribe {
|
|
|
}
|
|
|
}
|
|
|
if (null != result && result){
|
|
|
+ entriesToRemove.add(entry);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!CollectionUtils.isEmpty(entriesToRemove)) {
|
|
|
+ for (Map.Entry<JSONObject, ZLMHttpHookSubscribe.Event> entry : entriesToRemove) {
|
|
|
entries.remove(entry);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|