New file |
| | |
| | | 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<RequestTimeoutEvent> { |
| | | |
| | | @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()); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |