From 8da6906e40c8a96a94624b468833bebc2c3a3d5c Mon Sep 17 00:00:00 2001
From: Lawrence <1934378145@qq.com>
Date: 星期三, 20 一月 2021 20:43:40 +0800
Subject: [PATCH] 修改功能说明
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java | 80 ++++++++++++++++++++++++++++++++++++----
1 files changed, 72 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
index 4dea5d4..58e11ad 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
@@ -10,19 +10,26 @@
import javax.sip.message.Request;
import javax.sip.message.Response;
+import com.alibaba.fastjson.JSONObject;
+import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.sdp.Codec;
import com.genersoft.iot.vmp.gb28181.sdp.MediaDescription;
import com.genersoft.iot.vmp.gb28181.sdp.SdpParser;
import com.genersoft.iot.vmp.gb28181.sdp.SessionDescription;
+import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
+import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform;
import com.genersoft.iot.vmp.gb28181.transmit.request.SIPRequestAbstractProcessor;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
+import com.genersoft.iot.vmp.vmanager.play.bean.PlayResult;
+import com.genersoft.iot.vmp.vmanager.service.IPlayService;
import gov.nist.javax.sip.address.AddressImpl;
import gov.nist.javax.sip.address.SipUri;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import java.io.IOException;
import java.text.ParseException;
@@ -40,6 +47,10 @@
private SIPCommanderFroPlatform cmderFroPlatform;
private IVideoManagerStorager storager;
+
+ private SIPCommander cmder;
+
+ private IPlayService playService;
/**
* 澶勭悊invite璇锋眰
@@ -119,7 +130,30 @@
String ssrc = sdp.getSsrc();
+
+ Device device = storager.queryVideoDeviceByPlatformIdAndChannelId(platformId, channelId);
+ if (device == null) {
+ logger.warn("鐐规挱骞冲彴{}鐨勯�氶亾{}鏃舵湭鎵惧埌璁惧淇℃伅", platformId, channel);
+ response500Ack(evt);
+ return;
+ }
+
// 閫氱煡涓嬬骇鎺ㄦ祦锛�
+ PlayResult playResult = playService.play(device.getDeviceId(), channelId, (response)->{
+ // 鏀跺埌鎺ㄦ祦锛� 鍥炲200OK
+
+ },(event -> {
+ // 鏈煡閿欒銆傜洿鎺ヨ浆鍙戣澶囩偣鎾殑閿欒
+ Response response = null;
+ try {
+ response = getMessageFactory().createResponse(event.getResponse().getStatusCode(), evt.getRequest());
+ getServerTransaction(evt).sendResponse(response);
+
+ } catch (ParseException | SipException | InvalidArgumentException e) {
+ e.printStackTrace();
+ }
+ }));
+ playResult.getResult();
// 鏌ユ壘鍚堥�傜殑绔彛鎺ㄦ祦锛�
// 鍙戦�� 200ok
// 鏀跺埌ack鍚庤皟鐢ㄦ帹娴佹帴鍙�
@@ -149,14 +183,16 @@
}
/***
- * 鍥炲404
+ * 鍥炲200 OK
* @param evt
* @throws SipException
* @throws InvalidArgumentException
* @throws ParseException
*/
- private void response404Ack(RequestEvent evt) throws SipException, InvalidArgumentException, ParseException {
- Response response = getMessageFactory().createResponse(Response.NOT_FOUND, evt.getRequest());
+ private void responseAck(RequestEvent evt, String sdp) throws SipException, InvalidArgumentException, ParseException {
+ Response response = getMessageFactory().createResponse(Response.OK, evt.getRequest());
+ ContentTypeHeader contentTypeHeader = getHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
+ response.setContent(sdp, contentTypeHeader);
getServerTransaction(evt).sendResponse(response);
}
@@ -173,6 +209,18 @@
}
/***
+ * 鍥炲404
+ * @param evt
+ * @throws SipException
+ * @throws InvalidArgumentException
+ * @throws ParseException
+ */
+ private void response404Ack(RequestEvent evt) throws SipException, InvalidArgumentException, ParseException {
+ Response response = getMessageFactory().createResponse(Response.NOT_FOUND, evt.getRequest());
+ getServerTransaction(evt).sendResponse(response);
+ }
+
+ /***
* 鍥炲488
* @param evt
* @throws SipException
@@ -185,18 +233,18 @@
}
/***
- * 鍥炲200 OK
+ * 鍥炲500
* @param evt
* @throws SipException
* @throws InvalidArgumentException
* @throws ParseException
*/
- private void responseAck(RequestEvent evt, String sdp) throws SipException, InvalidArgumentException, ParseException {
- Response response = getMessageFactory().createResponse(Response.OK, evt.getRequest());
- ContentTypeHeader contentTypeHeader = getHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
- response.setContent(sdp, contentTypeHeader);
+ private void response500Ack(RequestEvent evt) throws SipException, InvalidArgumentException, ParseException {
+ Response response = getMessageFactory().createResponse(Response.SERVER_INTERNAL_ERROR, evt.getRequest());
getServerTransaction(evt).sendResponse(response);
}
+
+
@@ -222,4 +270,20 @@
public void setStorager(IVideoManagerStorager storager) {
this.storager = storager;
}
+
+ public SIPCommander getCmder() {
+ return cmder;
+ }
+
+ public void setCmder(SIPCommander cmder) {
+ this.cmder = cmder;
+ }
+
+ public IPlayService getPlayService() {
+ return playService;
+ }
+
+ public void setPlayService(IPlayService playService) {
+ this.playService = playService;
+ }
}
--
Gitblit v1.8.0