| 
					
				 | 
			
			
				@@ -7,6 +7,8 @@ import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderPlarformProvider; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.storager.IRedisCatchStorage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Qualifier; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -20,12 +22,16 @@ import javax.sip.header.CallIdHeader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.sip.header.WWWAuthenticateHeader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.sip.message.Request; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.text.ParseException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Timer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.TimerTask; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.UUID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Component 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @DependsOn("sipLayer") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private final Logger logger = LoggerFactory.getLogger(SIPCommanderFroPlatform.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // private SipConfig sipConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -61,8 +67,8 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private boolean rtpEnable; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public boolean register(ParentPlatform parentPlatform) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return register(parentPlatform, null, null, null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public boolean register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return register(parentPlatform, null, null, errorEvent, okEvent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -95,13 +101,17 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 将 callid 写入缓存, 等注册成功可以更新状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 redisCatchStorage.updatePlatformRegisterInfo(callIdHeader.getCallId(), parentPlatform.getServerGBId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                CallIdHeader finalCallIdHeader = callIdHeader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sipSubscribe.addErrorSubscribe(callIdHeader.getCallId(), (event)->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    redisCatchStorage.delPlatformRegisterInfo(finalCallIdHeader.getCallId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (errorEvent != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (event != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        logger.info("向上级平台 [ {} ] 注册发上错误: {} ", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                parentPlatform.getServerGBId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                event.getResponse().getReasonPhrase()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (errorEvent != null ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         errorEvent.response(event); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         : udpSipProvider.getNewCallId(); 
			 |