package com.genersoft.iot.vmp.gb28181.transmit.event.timeout.impl; 
 | 
  
 | 
import com.genersoft.iot.vmp.conf.SystemInfoTimerTask; 
 | 
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; 
 | 
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver; 
 | 
import com.genersoft.iot.vmp.gb28181.transmit.event.timeout.ITimeoutProcessor; 
 | 
import org.slf4j.Logger; 
 | 
import org.slf4j.LoggerFactory; 
 | 
import org.springframework.beans.factory.InitializingBean; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Component; 
 | 
  
 | 
import javax.sip.TimeoutEvent; 
 | 
import javax.sip.header.CallIdHeader; 
 | 
  
 | 
@Component 
 | 
public class TimeoutProcessorImpl implements InitializingBean, ITimeoutProcessor { 
 | 
  
 | 
    private Logger logger = LoggerFactory.getLogger(TimeoutProcessorImpl.class); 
 | 
  
 | 
    @Autowired 
 | 
    private SIPProcessorObserver processorObserver; 
 | 
  
 | 
    @Autowired 
 | 
    private SipSubscribe sipSubscribe; 
 | 
  
 | 
    @Override 
 | 
    public void afterPropertiesSet() throws Exception { 
 | 
        processorObserver.addTimeoutProcessor(this); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void process(TimeoutEvent event) { 
 | 
        try { 
 | 
            // TODO Auto-generated method stub 
 | 
            CallIdHeader callIdHeader = event.getClientTransaction().getDialog().getCallId(); 
 | 
            String callId = callIdHeader.getCallId(); 
 | 
            SipSubscribe.Event errorSubscribe = sipSubscribe.getErrorSubscribe(callId); 
 | 
            SipSubscribe.EventResult<TimeoutEvent> timeoutEventEventResult = new SipSubscribe.EventResult<>(event); 
 | 
            errorSubscribe.response(timeoutEventEventResult); 
 | 
            sipSubscribe.removeErrorSubscribe(callId); 
 | 
            sipSubscribe.removeOkSubscribe(callId); 
 | 
        } catch (Exception e) { 
 | 
            logger.error("[超时事件失败]: {}", e.getMessage()); 
 | 
        } 
 | 
    } 
 | 
} 
 |