From 87acd73efcde49cb5630c266db4ebd3f6b1b9dfd Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期二, 06 四月 2021 15:13:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wvp-28181-2.0' into wvp-28181-2.0
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/ByeRequestProcessor.java | 110 ++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 93 insertions(+), 17 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 0c17364..ec5f921 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,33 +1,109 @@
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.ServerTransaction;
+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 org.springframework.stereotype.Component;
+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 com.genersoft.iot.vmp.gb28181.SipLayer;
-import com.genersoft.iot.vmp.gb28181.transmit.request.ISIPRequestProcessor;
+import java.text.ParseException;
+import java.util.HashMap;
+import java.util.Map;
/**
* @Description: BYE璇锋眰澶勭悊鍣�
- * @author: swwheihei
- * @date: 2020骞�5鏈�3鏃� 涓嬪崍5:32:05
+ * @author: lawrencehj
+ * @date: 2021骞�3鏈�9鏃�
*/
-@Component
-public class ByeRequestProcessor implements ISIPRequestProcessor {
+public class ByeRequestProcessor extends SIPRequestAbstractProcessor {
- /**
+ private ISIPCommander cmder;
+
+ private IRedisCatchStorage redisCatchStorage;
+
+ private ZLMRTPServerFactory zlmrtpServerFactory;
+
+ /**
* 澶勭悊BYE璇锋眰
- *
* @param evt
- * @param layer
- * @param transaction
- * @param config
- */
+ */
@Override
- public void process(RequestEvent evt, SipLayer layer) {
- // TODO Auto-generated method stub
-
+ public void process(RequestEvent evt) {
+ try {
+ responseAck(evt);
+ Dialog dialog = evt.getDialog();
+ if (dialog == null) return;
+ if (dialog.getState().equals(DialogState.TERMINATED)) {
+ 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<>();
+ param.put("vhost","__defaultVhost__");
+ param.put("app",sendRtpItem.getApp());
+ param.put("stream",streamId);
+ System.out.println("鍋滄鍚戜笂绾ф帹娴侊細" + streamId);
+ zlmrtpServerFactory.stopSendRtpStream(param);
+ redisCatchStorage.deleteSendRTPServer(platformGbId, channelId);
+ if (zlmrtpServerFactory.totalReaderCount(sendRtpItem.getApp(), streamId) == 0) {
+ System.out.println(streamId + "鏃犲叾瀹冭鐪嬭�咃紝閫氱煡璁惧鍋滄鎺ㄦ祦");
+ cmder.streamByeCmd(streamId);
+ }
+ }
+ } catch (SipException e) {
+ e.printStackTrace();
+ } catch (InvalidArgumentException e) {
+ e.printStackTrace();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /***
+ * 鍥炲200 OK
+ * @param evt
+ * @throws SipException
+ * @throws InvalidArgumentException
+ * @throws ParseException
+ */
+ private void responseAck(RequestEvent evt) throws SipException, InvalidArgumentException, ParseException {
+ Response response = getMessageFactory().createResponse(Response.OK, evt.getRequest());
+ getServerTransaction(evt).sendResponse(response);
+ }
+
+ public IRedisCatchStorage getRedisCatchStorage() {
+ return redisCatchStorage;
+ }
+
+ public void setRedisCatchStorage(IRedisCatchStorage redisCatchStorage) {
+ this.redisCatchStorage = redisCatchStorage;
+ }
+
+ public ZLMRTPServerFactory getZlmrtpServerFactory() {
+ return zlmrtpServerFactory;
+ }
+
+ 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