From 1b44ba33671e27c3d206d875306b226c770b7980 Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期五, 15 一月 2021 18:22:57 +0800
Subject: [PATCH] 完成向上级联->点播--002

---
 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