From 712b25fb6eea8e85fd2c43d2956529312afdd3dc Mon Sep 17 00:00:00 2001
From: lawrencehj <1934378145@qq.com>
Date: 星期日, 14 三月 2021 21:25:52 +0800
Subject: [PATCH] 增加上级远程启动TeleBoot功能的支持
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/ByeRequestProcessor.java | 37 ++++++++++++++++++++++++++++---------
1 files changed, 28 insertions(+), 9 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/ByeRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/ByeRequestProcessor.java
index a14a4cc..c9ea567 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/ByeRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/ByeRequestProcessor.java
@@ -1,16 +1,23 @@
package com.genersoft.iot.vmp.gb28181.transmit.request.impl;
+import javax.sip.address.SipURI;
import javax.sip.Dialog;
import javax.sip.DialogState;
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
import javax.sip.SipException;
+import javax.sip.header.FromHeader;
+import javax.sip.header.HeaderAddress;
+import javax.sip.header.ToHeader;
import javax.sip.message.Response;
import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
+import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.request.SIPRequestAbstractProcessor;
import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
+
+import org.apache.log4j.Logger;
import java.text.ParseException;
import java.util.HashMap;
@@ -18,12 +25,14 @@
/**
* @Description: BYE璇锋眰澶勭悊鍣�
- * @author: swwheihei
- * @date: 2020骞�5鏈�3鏃� 涓嬪崍5:32:05
+ * @author: lawrencehj
+ * @date: 2021骞�3鏈�9鏃�
*/
public class ByeRequestProcessor extends SIPRequestAbstractProcessor {
- private IRedisCatchStorage redisCatchStorage;
+ private ISIPCommander cmder;
+
+ private IRedisCatchStorage redisCatchStorage;
private ZLMRTPServerFactory zlmrtpServerFactory;
@@ -38,10 +47,8 @@
Dialog dialog = evt.getDialog();
if (dialog == null) return;
if (dialog.getState().equals(DialogState.TERMINATED)) {
- String remoteUri = dialog.getRemoteParty().getURI().toString();
- String localUri = dialog.getLocalParty().getURI().toString();
- String platformGbId = remoteUri.substring(remoteUri.indexOf(":") + 1, remoteUri.indexOf("@"));
- String channelId = localUri.substring(remoteUri.indexOf(":") + 1, remoteUri.indexOf("@"));
+ String platformGbId = ((SipURI) ((HeaderAddress) evt.getRequest().getHeader(FromHeader.NAME)).getAddress().getURI()).getUser();
+ String channelId = ((SipURI) ((HeaderAddress) evt.getRequest().getHeader(ToHeader.NAME)).getAddress().getURI()).getUser();
SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(platformGbId, channelId);
String streamId = sendRtpItem.getStreamId();
Map<String, Object> param = new HashMap<>();
@@ -50,6 +57,11 @@
param.put("stream",streamId);
System.out.println("鍋滄鍚戜笂绾ф帹娴侊細" + streamId);
zlmrtpServerFactory.stopSendRtpStream(param);
+ redisCatchStorage.deleteSendRTPServer(platformGbId, channelId);
+ if (zlmrtpServerFactory.totalReaderCount(streamId) == 0) {
+ System.out.println(streamId + "鏃犲叾瀹冭鐪嬭�咃紝閫氱煡璁惧鍋滄鎺ㄦ祦");
+ cmder.streamByeCmd(streamId);
+ }
}
} catch (SipException e) {
e.printStackTrace();
@@ -58,8 +70,6 @@
} catch (ParseException e) {
e.printStackTrace();
}
- // TODO 浼樺厛绾�99 Bye Request娑堟伅瀹炵幇锛屾娑堟伅涓�鑸负绾ц仈娑堟伅锛屼笂绾х粰涓嬬骇鍙戦�佽棰戝仠姝㈡寚浠�
-
}
/***
@@ -89,4 +99,13 @@
public void setZlmrtpServerFactory(ZLMRTPServerFactory zlmrtpServerFactory) {
this.zlmrtpServerFactory = zlmrtpServerFactory;
}
+
+ public ISIPCommander getSIPCommander() {
+ return cmder;
+ }
+
+ public void setSIPCommander(ISIPCommander cmder) {
+ this.cmder = cmder;
+ }
+
}
--
Gitblit v1.8.0