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());
|
}
|
}
|
}
|