| 
					
				 | 
			
			
				@@ -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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |