From 39078225f1104eeaed21b24a024457b892fa7f7a Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期一, 26 四月 2021 18:38:57 +0800
Subject: [PATCH] 优化级联时的异常处理

---
 src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java |   41 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java
index b9b0089..a53583b 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformNotRegister/PlatformNotRegisterEventLister.java
@@ -1,13 +1,20 @@
 package com.genersoft.iot.vmp.gb28181.event.platformNotRegister;
 
 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform;
+import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
+import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 骞冲彴鏈敞鍐屼簨浠�,鏉ユ簮鏈変簩:
@@ -23,9 +30,14 @@
 
     @Autowired
     private IVideoManagerStorager storager;
+    @Autowired
+    private IRedisCatchStorage redisCatchStorage;
 
     @Autowired
     private SIPCommanderFroPlatform sipCommanderFroPlatform;
+
+    @Autowired
+    private ZLMRTPServerFactory zlmrtpServerFactory;
 
     // @Autowired
     // private RedisUtil redis;
@@ -33,13 +45,38 @@
     @Override
     public void onApplicationEvent(PlatformNotRegisterEvent event) {
 
-        logger.debug("骞冲彴鏈敞鍐屼簨浠惰Е鍙戯紝骞冲彴鍥芥爣ID锛�" + event.getPlatformGbID());
+        logger.info("骞冲彴鏈敞鍐屼簨浠惰Е鍙戯紝骞冲彴鍥芥爣ID锛�" + event.getPlatformGbID());
 
         ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(event.getPlatformGbID());
         if (parentPlatform == null) {
-            logger.debug("骞冲彴鏈敞鍐屼簨浠惰Е鍙戯紝浣嗗钩鍙板凡缁忓垹闄�!!! 骞冲彴鍥芥爣ID锛�" + event.getPlatformGbID());
+            logger.info("骞冲彴鏈敞鍐屼簨浠惰Е鍙戯紝浣嗗钩鍙板凡缁忓垹闄�!!! 骞冲彴鍥芥爣ID锛�" + event.getPlatformGbID());
             return;
         }
+        // 鏌ヨ鏄惁鏈夋帹娴侊紝 濡傛灉鏈夊垯閮藉仠姝�
+        List<SendRtpItem> sendRtpItems = redisCatchStorage.querySendRTPServer(event.getPlatformGbID());
+        logger.info("鍋滄[ {} ]鐨勬墍鏈夋帹娴乻ize", sendRtpItems.size());
+        if (sendRtpItems != null && sendRtpItems.size() > 0) {
+            logger.info("鍋滄[ {} ]鐨勬墍鏈夋帹娴�", event.getPlatformGbID());
+            StringBuilder app = new StringBuilder();
+            StringBuilder stream = new StringBuilder();
+            for (int i = 0; i < sendRtpItems.size(); i++) {
+                if (app.length() != 0) {
+                    app.append(",");
+                }
+                app.append(sendRtpItems.get(i).getApp());
+                if (stream.length() != 0) {
+                    stream.append(",");
+                }
+                stream.append(sendRtpItems.get(i).getStreamId());
+                redisCatchStorage.deleteSendRTPServer(event.getPlatformGbID(), sendRtpItems.get(i).getChannelId());
+            }
+            Map<String, Object> param = new HashMap<>();
+            param.put("vhost","__defaultVhost__");
+            param.put("app", app.toString());
+            param.put("stream", stream.toString());
+            zlmrtpServerFactory.stopSendRtpStream(param);
+
+        }
         sipCommanderFroPlatform.register(parentPlatform);
     }
 }

--
Gitblit v1.8.0