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