package com.genersoft.iot.vmp.gb28181.event.device; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; import com.genersoft.iot.vmp.service.IDeviceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; import javax.sip.ClientTransaction; import javax.sip.address.SipURI; import javax.sip.header.CallIdHeader; import javax.sip.header.ToHeader; import javax.sip.message.Request; /** * @author lin */ @Component public class RequestTimeoutEventImpl implements ApplicationListener { @Autowired private IDeviceService deviceService; @Override public void onApplicationEvent(RequestTimeoutEvent event) { ClientTransaction clientTransaction = event.getTimeoutEvent().getClientTransaction(); if (clientTransaction != null) { Request request = clientTransaction.getRequest(); if (request != null) { String host = ((SipURI) request.getRequestURI()).getHost(); int port = ((SipURI) request.getRequestURI()).getPort(); Device device = deviceService.getDeviceByHostAndPort(host, port); if (device == null) { return; } deviceService.offline(device.getDeviceId()); } } } }