From 2e98b20bea4463e4465e3c19059d0744a09aec06 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 27 Jun 2023 14:34:41 +0800
Subject: [PATCH] gb28181版本升级-补充

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/timeout/impl/TimeoutProcessorImpl.java |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/timeout/impl/TimeoutProcessorImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/timeout/impl/TimeoutProcessorImpl.java
new file mode 100644
index 0000000..531505d
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/timeout/impl/TimeoutProcessorImpl.java
@@ -0,0 +1,47 @@
+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());
+        }
+    }
+}

--
Gitblit v1.9.3