From 9b1af8ef1396de45884fe86c56844714045b82ec Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 07 十二月 2021 21:13:55 +0800
Subject: [PATCH] 适配zlm的hook保活

---
 src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java |   41 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
index 2820721..7c17c2a 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
@@ -5,6 +5,7 @@
 import com.alibaba.fastjson.TypeReference;
 import com.genersoft.iot.vmp.gb28181.bean.GbStream;
 import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
+import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
 import com.genersoft.iot.vmp.media.zlm.dto.MediaItem;
 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
 import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
@@ -12,6 +13,7 @@
 import com.genersoft.iot.vmp.service.IStreamPushService;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.dao.GbStreamMapper;
+import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper;
 import com.genersoft.iot.vmp.storager.dao.StreamPushMapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
@@ -31,6 +33,9 @@
 
     @Autowired
     private StreamPushMapper streamPushMapper;
+
+    @Autowired
+    private PlatformGbStreamMapper platformGbStreamMapper;
 
     @Autowired
     private ZLMRESTfulUtils zlmresTfulUtils;
@@ -80,6 +85,7 @@
         streamPushItem.setCreateStamp(item.getCreateStamp());
         streamPushItem.setAliveSecond(item.getAliveSecond());
         streamPushItem.setStatus(true);
+        streamPushItem.setStreamType("push");
         streamPushItem.setVhost(item.getVhost());
         return streamPushItem;
     }
@@ -109,4 +115,39 @@
         }
         return del > 0;
     }
+
+
+    @Override
+    public StreamPushItem getPush(String app, String streamId) {
+
+        return streamPushMapper.selectOne(app, streamId);
+    }
+
+    @Override
+    public boolean stop(String app, String streamId) {
+        StreamPushItem streamPushItem = streamPushMapper.selectOne(app, streamId);
+        int delStream = streamPushMapper.del(app, streamId);
+        gbStreamMapper.del(app, streamId);
+        platformGbStreamMapper.delByAppAndStream(app, streamId);
+        if (delStream > 0) {
+            MediaServerItem mediaServerItem = mediaServerService.getOne(streamPushItem.getMediaServerId());
+            zlmresTfulUtils.closeStreams(mediaServerItem,app, streamId);
+        }
+        return true;
+    }
+
+    @Override
+    public void zlmServerOnline(ZLMServerConfig zlmServerConfig) {
+        // 浼间箮娌″暐闇�瑕佸仛鐨�
+    }
+
+    @Override
+    public void zlmServerOffline(String mediaServerId) {
+        // 绉婚櫎娌℃湁serverId鐨勬帹娴�
+        streamPushMapper.deleteWithoutGBId(mediaServerId);
+        // 鍏朵粬鐨勬祦璁剧疆鏈惎鐢�
+        gbStreamMapper.updateStatusByMediaServerId(mediaServerId, false);
+        // 绉婚櫎redis鍐呮祦鐨勪俊鎭�
+        redisCatchStorage.removeStream(mediaServerId, "PUSH");
+    }
 }

--
Gitblit v1.8.0