修复ConcurrentModificationException
This commit is contained in:
parent
f2759841f9
commit
f23c5eee17
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user