From 80d2edeef25f752e0a80a6cff99e38f61c2d2cb2 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 18 十月 2022 13:07:38 +0800
Subject: [PATCH] 优化sip消息构建,去除ServerTransaction的使用
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java | 10
src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeInfo.java | 4
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java | 5
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 282 ++++++-----------
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/BroadcastResponseMessageHandler.java | 5
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java | 5
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceControlResponseMessageHandler.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java | 47 +-
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java | 6
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java | 17
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java | 143 ++++----
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java | 17
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/ByeRequestProcessor.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java | 11
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java | 106 ++++++
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceInfoResponseMessageHandler.java | 11
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/PresetQueryResponseMessageHandler.java | 10
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/ConfigDownloadResponseMessageHandler.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceInfoQueryMessageHandler.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/info/InfoRequestProcessor.java | 16
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceStatusResponseMessageHandler.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MediaStatusNotifyMessageHandler.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java | 34 -
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java | 5
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java | 123 +++----
src/main/java/com/genersoft/iot/vmp/utils/GitUtil.java | 14
src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java | 14
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java | 5
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java | 16
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/AlarmQueryMessageHandler.java | 3
34 files changed, 458 insertions(+), 481 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeInfo.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeInfo.java
index e971c7a..07176f2 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeInfo.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeInfo.java
@@ -3,15 +3,13 @@
import gov.nist.javax.sip.message.SIPRequest;
import gov.nist.javax.sip.message.SIPResponse;
-import javax.sip.ServerTransaction;
import javax.sip.header.*;
public class SubscribeInfo {
- public SubscribeInfo(ServerTransaction serverTransaction, String id) {
+ public SubscribeInfo(SIPRequest request, String id) {
this.id = id;
- SIPRequest request = (SIPRequest)serverTransaction.getRequest();
this.request = request;
this.expires = request.getExpires().getExpires();
EventHeader eventHeader = (EventHeader)request.getHeader(EventHeader.NAME);
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
new file mode 100644
index 0000000..a1077e5
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
@@ -0,0 +1,106 @@
+package com.genersoft.iot.vmp.gb28181.transmit;
+
+import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
+import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
+import com.genersoft.iot.vmp.utils.GitUtil;
+import gov.nist.javax.sip.SipProviderImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import javax.sip.SipException;
+import javax.sip.SipFactory;
+import javax.sip.header.CallIdHeader;
+import javax.sip.header.UserAgentHeader;
+import javax.sip.header.ViaHeader;
+import javax.sip.message.Message;
+import javax.sip.message.Request;
+import javax.sip.message.Response;
+import java.text.ParseException;
+
+@Component
+public class SIPSender {
+
+ private final Logger logger = LoggerFactory.getLogger(SIPSender.class);
+
+ @Autowired
+ @Qualifier(value = "tcpSipProvider")
+ private SipProviderImpl tcpSipProvider;
+
+ @Autowired
+ @Qualifier(value = "udpSipProvider")
+ private SipProviderImpl udpSipProvider;
+
+ @Autowired
+ private SipFactory sipFactory;
+
+ @Autowired
+ private GitUtil gitUtil;
+
+ @Autowired
+ private SipSubscribe sipSubscribe;
+
+ public void transmitRequest(Message message) throws SipException, ParseException {
+ transmitRequest(message, null, null);
+ }
+
+ public void transmitRequest(Message message, SipSubscribe.Event errorEvent) throws SipException, ParseException {
+ transmitRequest(message, errorEvent, null);
+ }
+
+ public void transmitRequest(Message message, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws SipException, ParseException {
+ ViaHeader viaHeader = (ViaHeader)message.getHeader(ViaHeader.NAME);
+ String transport = "UDP";
+ if (viaHeader == null) {
+ logger.warn("[娑堟伅澶寸己澶盷锛� ViaHeader");
+ }else {
+ transport = viaHeader.getTransport();
+ }
+ if (message.getHeader(UserAgentHeader.NAME) == null) {
+ try {
+ message.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
+ } catch (ParseException e) {
+ logger.error("娣诲姞UserAgentHeader澶辫触", e);
+ }
+ }
+
+ CallIdHeader callIdHeader = (CallIdHeader) message.getHeader(CallIdHeader.NAME);
+ // 娣诲姞閿欒璁㈤槄
+ if (errorEvent != null) {
+ sipSubscribe.addErrorSubscribe(callIdHeader.getCallId(), (eventResult -> {
+ errorEvent.response(eventResult);
+ sipSubscribe.removeErrorSubscribe(eventResult.callId);
+ sipSubscribe.removeOkSubscribe(eventResult.callId);
+ }));
+ }
+ // 娣诲姞璁㈤槄
+ if (okEvent != null) {
+ sipSubscribe.addOkSubscribe(callIdHeader.getCallId(), eventResult -> {
+ okEvent.response(eventResult);
+ sipSubscribe.removeOkSubscribe(eventResult.callId);
+ sipSubscribe.removeErrorSubscribe(eventResult.callId);
+ });
+ }
+ if ("TCP".equals(transport)) {
+ if (message instanceof Request) {
+ tcpSipProvider.sendRequest((Request)message);
+ }else if (message instanceof Response) {
+ tcpSipProvider.sendResponse((Response)message);
+ }
+
+ } else if ("UDP".equals(transport)) {
+ if (message instanceof Request) {
+ udpSipProvider.sendRequest((Request)message);
+ }else if (message instanceof Response) {
+ udpSipProvider.sendResponse((Response)message);
+ }
+ }
+ }
+
+ public CallIdHeader getNewCallIdHeader(String transport){
+ return transport.equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
+ : udpSipProvider.getNewCallId();
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
index 9eaf52a..b99286e 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommander.java
@@ -13,6 +13,7 @@
import javax.sip.InvalidArgumentException;
import javax.sip.PeerUnavailableException;
import javax.sip.SipException;
+import javax.sip.message.Message;
import javax.sip.message.Request;
import java.text.ParseException;
@@ -362,9 +363,4 @@
*/
void sendAlarmMessage(Device device, DeviceAlarm deviceAlarm) throws InvalidArgumentException, SipException, ParseException;
- void transmitRequest(String transport, Request request) throws SipException, ParseException ;
-
- void transmitRequest(String transport, Request request, SipSubscribe.Event errorEvent) throws SipException, ParseException;
-
- void transmitRequest(String transport, Request request, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws SipException, ParseException;
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
index 8b5692a..b374461 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -9,6 +9,7 @@
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
+import com.genersoft.iot.vmp.gb28181.transmit.SIPSender;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderProvider;
import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
@@ -44,6 +45,7 @@
import javax.sip.address.Address;
import javax.sip.address.SipURI;
import javax.sip.header.*;
+import javax.sip.message.Message;
import javax.sip.message.Request;
import javax.sip.message.Response;
import java.lang.reflect.Field;
@@ -68,16 +70,8 @@
private SipFactory sipFactory;
@Autowired
- private GitUtil gitUtil;
-
- @Autowired
- @Qualifier(value = "tcpSipProvider")
- private SipProviderImpl tcpSipProvider;
-
- @Autowired
- @Qualifier(value = "udpSipProvider")
- private SipProviderImpl udpSipProvider;
-
+ private SIPSender sipSender;
+
@Autowired
private SIPRequestHeaderProvider headerProvider;
@@ -90,8 +84,7 @@
@Autowired
private ZlmHttpHookSubscribe subscribe;
- @Autowired
- private SipSubscribe sipSubscribe;
+
@Autowired
private IMediaServerService mediaServerService;
@@ -202,13 +195,10 @@
ptzXml.append("<ControlPriority>5</ControlPriority>\r\n");
ptzXml.append("</Info>\r\n");
ptzXml.append("</Control>\r\n");
+
+ Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, sipSender.getNewCallIdHeader(device.getTransport()));
- CallIdHeader callIdHeader = device.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
-
- Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
-
- transmitRequest(device.getTransport(), request);
+ sipSender.transmitRequest( request);
}
/**
@@ -239,11 +229,10 @@
ptzXml.append("</Control>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
- SIPRequest request = (SIPRequest) headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request);
+
+ SIPRequest request = (SIPRequest) headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest(request);
}
@@ -269,13 +258,10 @@
ptzXml.append("<ControlPriority>5</ControlPriority>\r\n");
ptzXml.append("</Info>\r\n");
ptzXml.append("</Control>\r\n");
-
-
- CallIdHeader callIdHeader = device.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
-
- Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request, errorEvent, okEvent);
+
+
+ Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest(request, errorEvent, okEvent);
}
@@ -362,11 +348,10 @@
// f瀛楁:f= v/缂栫爜鏍煎紡/鍒嗚鲸鐜�/甯х巼/鐮佺巼绫诲瀷/鐮佺巼澶у皬a/缂栫爜鏍煎紡/鐮佺巼澶у皬/閲囨牱鐜�
// content.append("f=v/2/5/25/1/4000a/1/8/1" + "\r\n"); // 鏈彂鐜版敮鎸佹鐗规�х殑璁惧
- CallIdHeader callIdHeader = device.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
- Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, ssrcInfo.getSsrc(), callIdHeader);
- transmitRequest(device.getTransport(), request, (e -> {
+
+ Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, ssrcInfo.getSsrc(),sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request, (e -> {
streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream());
mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
errorEvent.response(e);
@@ -454,27 +439,25 @@
content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, "rtsp", mediaServerItem.getId());
// 娣诲姞璁㈤槄
subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) -> {
if (hookEvent != null) {
- InviteStreamInfo inviteStreamInfo = new InviteStreamInfo(mediaServerItemInUse, json, callIdHeader.getCallId(), "rtp", ssrcInfo.getStream());
+ InviteStreamInfo inviteStreamInfo = new InviteStreamInfo(mediaServerItemInUse, json,sipSender.getNewCallIdHeader(device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream());
hookEvent.call(inviteStreamInfo);
}
subscribe.removeSubscribe(hookSubscribe);
});
- Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader, ssrcInfo.getSsrc());
+ Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()), ssrcInfo.getSsrc());
- transmitRequest(device.getTransport(), request, errorEvent, event -> {
+ sipSender.transmitRequest( request, errorEvent, event -> {
ResponseEvent responseEvent = (ResponseEvent) event.event;
SIPResponse response = (SIPResponse) responseEvent.getResponse();
- streamSession.put(device.getDeviceId(), channelId, callIdHeader.getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.playback);
+ streamSession.put(device.getDeviceId(), channelId,sipSender.getNewCallIdHeader(device.getTransport()).getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.playback);
okEvent.response(event);
});
if (inviteStreamCallback != null) {
- inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null, callIdHeader.getCallId(), "rtp", ssrcInfo.getStream()));
+ inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null,sipSender.getNewCallIdHeader(device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()));
}
}
@@ -554,14 +537,11 @@
content.append("a=downloadspeed:" + downloadSpeed + "\r\n");
content.append("y=" + ssrcInfo.getSsrc() + "\r\n");//ssrc
-
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
-
+
HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, null, mediaServerItem.getId());
// 娣诲姞璁㈤槄
subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject json) -> {
- hookEvent.call(new InviteStreamInfo(mediaServerItem, json, callIdHeader.getCallId(), "rtp", ssrcInfo.getStream()));
+ hookEvent.call(new InviteStreamInfo(mediaServerItem, json,sipSender.getNewCallIdHeader(device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()));
subscribe.removeSubscribe(hookSubscribe);
hookSubscribe.getContent().put("regist", false);
hookSubscribe.getContent().put("schema", "rtsp");
@@ -570,7 +550,7 @@
(MediaServerItem mediaServerItemForEnd, JSONObject jsonForEnd) -> {
logger.info("[褰曞儚]涓嬭浇缁撴潫锛� 鍙戦�丅YE");
try {
- streamByeCmd(device, channelId, ssrcInfo.getStream(), callIdHeader.getCallId());
+ streamByeCmd(device, channelId, ssrcInfo.getStream(),sipSender.getNewCallIdHeader(device.getTransport()).getCallId());
} catch (InvalidArgumentException | ParseException | SipException |
SsrcTransactionNotFoundException e) {
logger.error("[褰曞儚]涓嬭浇缁撴潫锛� 鍙戦�丅YE澶辫触 {}", e.getMessage());
@@ -578,14 +558,14 @@
});
});
- Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader, ssrcInfo.getSsrc());
+ Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()), ssrcInfo.getSsrc());
if (inviteStreamCallback != null) {
- inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null, callIdHeader.getCallId(), "rtp", ssrcInfo.getStream()));
+ inviteStreamCallback.call(new InviteStreamInfo(mediaServerItem, null,sipSender.getNewCallIdHeader(device.getTransport()).getCallId(), "rtp", ssrcInfo.getStream()));
}
- transmitRequest(device.getTransport(), request, errorEvent, okEvent -> {
+ sipSender.transmitRequest( request, errorEvent, okEvent -> {
ResponseEvent responseEvent = (ResponseEvent) okEvent.event;
SIPResponse response = (SIPResponse) responseEvent.getResponse();
- streamSession.put(device.getDeviceId(), channelId, callIdHeader.getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.download);
+ streamSession.put(device.getDeviceId(), channelId,sipSender.getNewCallIdHeader(device.getTransport()).getCallId(), ssrcInfo.getStream(), ssrcInfo.getSsrc(), mediaServerItem.getId(), response, VideoStreamSessionManager.SessionType.download);
});
}
@@ -612,7 +592,7 @@
streamSession.remove(ssrcTransaction.getDeviceId(), ssrcTransaction.getChannelId(), ssrcTransaction.getStream());
Request byteRequest = headerProvider.createByteRequest(device, channelId, ssrcTransaction.getSipTransactionInfo());
- transmitRequest(device.getTransport(), byteRequest, null, okEvent);
+ sipSender.transmitRequest( byteRequest, null, okEvent);
}
/**
@@ -643,11 +623,10 @@
broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n");
broadcastXml.append("</Notify>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request);
+ Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request);
}
@@ -664,11 +643,10 @@
broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n");
broadcastXml.append("</Notify>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request, errorEvent);
+ Request request = headerProvider.createMessageRequest(device, broadcastXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request, errorEvent);
}
@@ -696,11 +674,10 @@
cmdXml.append("<RecordCmd>" + recordCmdStr + "</RecordCmd>\r\n");
cmdXml.append("</Control>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request, errorEvent);
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request, errorEvent);
}
/**
@@ -721,11 +698,10 @@
cmdXml.append("<TeleBoot>Boot</TeleBoot>\r\n");
cmdXml.append("</Control>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request);
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request);
}
/**
@@ -747,11 +723,10 @@
cmdXml.append("<GuardCmd>" + guardCmdStr + "</GuardCmd>\r\n");
cmdXml.append("</Control>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request, errorEvent);
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request, errorEvent);
}
/**
@@ -784,11 +759,10 @@
}
cmdXml.append("</Control>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request, errorEvent);
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request, errorEvent);
}
/**
@@ -814,11 +788,10 @@
cmdXml.append("<IFameCmd>Send</IFameCmd>\r\n");
cmdXml.append("</Control>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request);
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request);
}
/**
@@ -862,11 +835,10 @@
cmdXml.append("</HomePosition>\r\n");
cmdXml.append("</Control>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request, errorEvent);
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request, errorEvent);
}
/**
@@ -926,11 +898,10 @@
cmdXml.append("</BasicParam>\r\n");
cmdXml.append("</Control>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request, errorEvent);
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request, errorEvent);
}
/**
@@ -950,12 +921,11 @@
catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
catalogXml.append("</Query>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
+ Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
- transmitRequest(device.getTransport(), request, errorEvent);
+ sipSender.transmitRequest( request, errorEvent);
}
/**
@@ -975,12 +945,11 @@
catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
catalogXml.append("</Query>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
+ Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
- transmitRequest(device.getTransport(), request);
+ sipSender.transmitRequest( request);
}
@@ -1001,12 +970,11 @@
catalogXml.append(" <DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
catalogXml.append("</Query>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
+ Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
- transmitRequest(device.getTransport(), request, errorEvent);
+ sipSender.transmitRequest( request, errorEvent);
}
/**
@@ -1047,13 +1015,12 @@
}
recordInfoXml.append("</Query>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(),
- SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
+ SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
- transmitRequest(device.getTransport(), request, errorEvent, okEvent);
+ sipSender.transmitRequest( request, errorEvent, okEvent);
}
/**
@@ -1099,11 +1066,10 @@
}
cmdXml.append("</Query>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request, errorEvent);
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request, errorEvent);
}
/**
@@ -1130,11 +1096,10 @@
cmdXml.append("<ConfigType>" + configType + "</ConfigType>\r\n");
cmdXml.append("</Query>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request, errorEvent);
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request, errorEvent);
}
/**
@@ -1158,11 +1123,10 @@
}
cmdXml.append("</Query>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request, errorEvent);
+ Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request, errorEvent);
}
/**
@@ -1183,12 +1147,11 @@
mobilePostitionXml.append("<Interval>60</Interval>\r\n");
mobilePostitionXml.append("</Query>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
+ Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
- transmitRequest(device.getTransport(), request, errorEvent);
+ sipSender.transmitRequest( request, errorEvent);
}
@@ -1218,12 +1181,11 @@
if (requestOld != null) {
callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(requestOld.getCallIdHeader().getCallId());
} else {
- callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+ callIdHeader = sipSender.getNewCallIdHeader(device.getTransport());
}
- SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), requestOld, device.getSubscribeCycleForMobilePosition(), "presence", callIdHeader); //Position;id=" + tm.substring(tm.length() - 4));
+ SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), requestOld, device.getSubscribeCycleForMobilePosition(), "presence",callIdHeader); //Position;id=" + tm.substring(tm.length() - 4));
- transmitRequest(device.getTransport(), request, errorEvent, okEvent);
+ sipSender.transmitRequest( request, errorEvent, okEvent);
return request;
}
@@ -1270,11 +1232,10 @@
}
cmdXml.append("</Query>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+
- Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), null, expires, "presence", callIdHeader);
- transmitRequest(device.getTransport(), request);
+ Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), null, expires, "presence",sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest( request);
}
@@ -1295,14 +1256,13 @@
if (requestOld != null) {
callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(requestOld.getCallIdHeader().getCallId());
} else {
- callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
+ callIdHeader = sipSender.getNewCallIdHeader(device.getTransport());
}
// 鏈夋晥鏃堕棿榛樿涓�60绉掍互涓�
SIPRequest request = (SIPRequest) headerProvider.createSubscribeRequest(device, cmdXml.toString(), requestOld, device.getSubscribeCycleForCatalog(), "Catalog",
callIdHeader);
- transmitRequest(device.getTransport(), request, errorEvent, okEvent);
+ sipSender.transmitRequest( request, errorEvent, okEvent);
return request;
}
@@ -1322,59 +1282,14 @@
}
dragXml.append(cmdString);
dragXml.append("</Control>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
- Request request = headerProvider.createMessageRequest(device, dragXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
+
+ Request request = headerProvider.createMessageRequest(device, dragXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
logger.debug("鎷夋淇′护锛� " + request.toString());
- transmitRequest(device.getTransport(), request);
+ sipSender.transmitRequest(request);
}
- @Override
- public void transmitRequest(String transport, Request request) throws SipException, ParseException {
- transmitRequest(transport, request, null, null);
- }
-
- @Override
- public void transmitRequest(String transport, Request request, SipSubscribe.Event errorEvent) throws SipException, ParseException {
- transmitRequest(transport, request, errorEvent, null);
- }
-
- @Override
- public void transmitRequest(String transport, Request request, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws SipException, ParseException {
-
- if (request.getHeader(UserAgentHeader.NAME) == null) {
- try {
- request.addHeader(SipUtils.createUserAgentHeader(sipFactory, gitUtil));
- } catch (ParseException e) {
- logger.error("娣诲姞UserAgentHeader澶辫触", e);
- }
- }
-
- CallIdHeader callIdHeader = (CallIdHeader) request.getHeader(CallIdHeader.NAME);
- // 娣诲姞閿欒璁㈤槄
- if (errorEvent != null) {
- sipSubscribe.addErrorSubscribe(callIdHeader.getCallId(), (eventResult -> {
- errorEvent.response(eventResult);
- sipSubscribe.removeErrorSubscribe(eventResult.callId);
- sipSubscribe.removeOkSubscribe(eventResult.callId);
- }));
- }
- // 娣诲姞璁㈤槄
- if (okEvent != null) {
- sipSubscribe.addOkSubscribe(callIdHeader.getCallId(), eventResult -> {
- okEvent.response(eventResult);
- sipSubscribe.removeOkSubscribe(eventResult.callId);
- sipSubscribe.removeErrorSubscribe(eventResult.callId);
- });
- }
- if ("TCP".equals(transport)) {
- tcpSipProvider.sendRequest(request);
- } else if ("UDP".equals(transport)) {
- udpSipProvider.sendRequest(request);
- }
-
- }
+
/**
@@ -1449,7 +1364,7 @@
return;
}
- transmitRequest(device.getTransport(), request, errorEvent, okEvent);
+ sipSender.transmitRequest( request, errorEvent, okEvent);
}
@Override
@@ -1478,10 +1393,9 @@
deviceStatusXml.append("</info>\r\n");
deviceStatusXml.append("</Notify>\r\n");
- CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
- Request request = headerProvider.createMessageRequest(device, deviceStatusXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null, callIdHeader);
- transmitRequest(device.getTransport(), request);
+
+ Request request = headerProvider.createMessageRequest(device, deviceStatusXml.toString(), SipUtils.getNewViaTag(), SipUtils.getNewFromTag(), null,sipSender.getNewCallIdHeader(device.getTransport()));
+ sipSender.transmitRequest(request);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java
index 8c6ab99..a274814 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java
@@ -1,13 +1,11 @@
package com.genersoft.iot.vmp.gb28181.transmit.event.request;
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.gb28181.transmit.SIPSender;
import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
import gov.nist.javax.sip.SipProviderImpl;
-import gov.nist.javax.sip.SipStackImpl;
import gov.nist.javax.sip.message.SIPRequest;
import gov.nist.javax.sip.message.SIPResponse;
-import gov.nist.javax.sip.stack.SIPServerTransaction;
-import gov.nist.javax.sip.stack.SIPServerTransactionImpl;
import org.apache.commons.lang3.ArrayUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
@@ -51,48 +49,9 @@
@Qualifier(value="udpSipProvider")
private SipProviderImpl udpSipProvider;
- /**
- * 鏍规嵁 RequestEvent 鑾峰彇 ServerTransaction
- * @param evt
- * @return
- */
- public ServerTransaction getServerTransaction(RequestEvent evt) {
- Request request = evt.getRequest();
- SIPServerTransactionImpl serverTransaction = (SIPServerTransactionImpl)evt.getServerTransaction();
- // 鍒ゆ柇TCP杩樻槸UDP
- boolean isTcp = false;
- ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);
- String transport = reqViaHeader.getTransport();
- if (transport.equalsIgnoreCase("TCP")) {
- isTcp = true;
- }
- if (serverTransaction != null && serverTransaction.getOriginalRequest() == null) {
- serverTransaction.setOriginalRequest((SIPRequest) evt.getRequest());
- }
- if (serverTransaction == null) {
- try {
- if (isTcp) {
- SipStackImpl stack = (SipStackImpl)tcpSipProvider.getSipStack();
- serverTransaction = (SIPServerTransactionImpl) stack.findTransaction((SIPRequest)request, true);
- if (serverTransaction == null) {
- serverTransaction = (SIPServerTransactionImpl)tcpSipProvider.getNewServerTransaction(request);
- }
- } else {
- SipStackImpl stack = (SipStackImpl)udpSipProvider.getSipStack();
- serverTransaction = (SIPServerTransactionImpl) stack.findTransaction((SIPRequest)request, true);
- if (serverTransaction == null) {
- serverTransaction = (SIPServerTransactionImpl)udpSipProvider.getNewServerTransaction(request);
- }
- }
- } catch (TransactionAlreadyExistsException e) {
- logger.error(e.getMessage());
- } catch (TransactionUnavailableException e) {
- logger.error(e.getMessage());
- }
- }
- return serverTransaction;
- }
-
+ @Autowired
+ private SIPSender sipSender;
+
public AddressFactory getAddressFactory() {
try {
return SipFactory.getInstance().createAddressFactory();
@@ -134,25 +93,73 @@
* 400
* 404
*/
- public SIPResponse responseAck(ServerTransaction serverTransaction, int statusCode) throws SipException, InvalidArgumentException, ParseException {
- return responseAck(serverTransaction, statusCode, null);
+ public SIPResponse responseAck(SIPRequest sipRequest, int statusCode) throws SipException, InvalidArgumentException, ParseException {
+ return responseAck(sipRequest, statusCode, null);
}
- public SIPResponse responseAck(ServerTransaction serverTransaction, int statusCode, String msg) throws SipException, InvalidArgumentException, ParseException {
- return responseAck(serverTransaction, statusCode, msg, null);
+ public SIPResponse responseAck(SIPRequest sipRequest, int statusCode, String msg) throws SipException, InvalidArgumentException, ParseException {
+ return responseAck(sipRequest, statusCode, msg, null);
}
- public SIPResponse responseAck(ServerTransaction serverTransaction, int statusCode, String msg, ResponseAckExtraParam responseAckExtraParam) throws SipException, InvalidArgumentException, ParseException {
- ToHeader toHeader = (ToHeader) serverTransaction.getRequest().getHeader(ToHeader.NAME);
- if (toHeader.getTag() == null) {
- toHeader.setTag(SipUtils.getNewTag());
+// public SIPResponse responseAck(ServerTransaction serverTransaction, int statusCode, String msg, ResponseAckExtraParam responseAckExtraParam) throws SipException, InvalidArgumentException, ParseException {
+// if (serverTransaction == null) {
+// logger.warn("[鍥炲娑堟伅] ServerTransaction 涓簄ull");
+// return null;
+// }
+// ToHeader toHeader = (ToHeader) serverTransaction.getRequest().getHeader(ToHeader.NAME);
+// if (toHeader.getTag() == null) {
+// toHeader.setTag(SipUtils.getNewTag());
+// }
+// SIPResponse response = (SIPResponse)getMessageFactory().createResponse(statusCode, serverTransaction.getRequest());
+// if (msg != null) {
+// response.setReasonPhrase(msg);
+// }
+// if (responseAckExtraParam != null) {
+// if (responseAckExtraParam.sipURI != null && serverTransaction.getRequest().getMethod().equals(Request.INVITE)) {
+// logger.debug("responseSdpAck SipURI: {}:{}", responseAckExtraParam.sipURI.getHost(), responseAckExtraParam.sipURI.getPort());
+// Address concatAddress = SipFactory.getInstance().createAddressFactory().createAddress(
+// SipFactory.getInstance().createAddressFactory().createSipURI(responseAckExtraParam.sipURI.getUser(), responseAckExtraParam.sipURI.getHost()+":"+responseAckExtraParam.sipURI.getPort()
+// ));
+// response.addHeader(SipFactory.getInstance().createHeaderFactory().createContactHeader(concatAddress));
+// }
+// if (responseAckExtraParam.contentTypeHeader != null) {
+// response.setContent(responseAckExtraParam.content, responseAckExtraParam.contentTypeHeader);
+// }
+//
+// if (serverTransaction.getRequest().getMethod().equals(Request.SUBSCRIBE)) {
+// if (responseAckExtraParam.expires == -1) {
+// logger.error("[鍙傛暟涓嶅叏] 2xx鐨凷UBSCRIBE鍥炲锛屽繀椤昏缃瓻xpires header");
+// }else {
+// ExpiresHeader expiresHeader = SipFactory.getInstance().createHeaderFactory().createExpiresHeader(responseAckExtraParam.expires);
+// response.addHeader(expiresHeader);
+// }
+// }
+// }else {
+// if (serverTransaction.getRequest().getMethod().equals(Request.SUBSCRIBE)) {
+// logger.error("[鍙傛暟涓嶅叏] 2xx鐨凷UBSCRIBE鍥炲锛屽繀椤昏缃瓻xpires header");
+// }
+// }
+// serverTransaction.sendResponse(response);
+// if (statusCode >= 200 && !"NOTIFY".equalsIgnoreCase(serverTransaction.getRequest().getMethod())) {
+// if (serverTransaction.getDialog() != null) {
+// serverTransaction.getDialog().delete();
+// }
+// }
+// return response;
+// }
+
+ public SIPResponse responseAck(SIPRequest sipRequest, int statusCode, String msg, ResponseAckExtraParam responseAckExtraParam) throws SipException, InvalidArgumentException, ParseException {
+ if (sipRequest.getToHeader().getTag() == null) {
+ sipRequest.getToHeader().setTag(SipUtils.getNewTag());
}
- SIPResponse response = (SIPResponse)getMessageFactory().createResponse(statusCode, serverTransaction.getRequest());
+ SIPResponse response = (SIPResponse)getMessageFactory().createResponse(statusCode, sipRequest);
+ response.setStatusCode(statusCode);
if (msg != null) {
response.setReasonPhrase(msg);
}
+
if (responseAckExtraParam != null) {
- if (responseAckExtraParam.sipURI != null && serverTransaction.getRequest().getMethod().equals(Request.INVITE)) {
+ if (responseAckExtraParam.sipURI != null && sipRequest.getMethod().equals(Request.INVITE)) {
logger.debug("responseSdpAck SipURI: {}:{}", responseAckExtraParam.sipURI.getHost(), responseAckExtraParam.sipURI.getPort());
Address concatAddress = SipFactory.getInstance().createAddressFactory().createAddress(
SipFactory.getInstance().createAddressFactory().createSipURI(responseAckExtraParam.sipURI.getUser(), responseAckExtraParam.sipURI.getHost()+":"+responseAckExtraParam.sipURI.getPort()
@@ -163,7 +170,7 @@
response.setContent(responseAckExtraParam.content, responseAckExtraParam.contentTypeHeader);
}
- if (serverTransaction.getRequest().getMethod().equals(Request.SUBSCRIBE)) {
+ if (sipRequest.getMethod().equals(Request.SUBSCRIBE)) {
if (responseAckExtraParam.expires == -1) {
logger.error("[鍙傛暟涓嶅叏] 2xx鐨凷UBSCRIBE鍥炲锛屽繀椤昏缃瓻xpires header");
}else {
@@ -172,28 +179,26 @@
}
}
}else {
- if (serverTransaction.getRequest().getMethod().equals(Request.SUBSCRIBE)) {
+ if (sipRequest.getMethod().equals(Request.SUBSCRIBE)) {
logger.error("[鍙傛暟涓嶅叏] 2xx鐨凷UBSCRIBE鍥炲锛屽繀椤昏缃瓻xpires header");
}
}
- serverTransaction.sendResponse(response);
- if (statusCode >= 200 && !"NOTIFY".equalsIgnoreCase(serverTransaction.getRequest().getMethod())) {
- if (serverTransaction.getDialog() != null) {
- serverTransaction.getDialog().delete();
- }
- }
+
+ // 鍙戦�乺esponse
+ sipSender.transmitRequest(response);
+
return response;
}
/**
* 鍥炲甯dp鐨�200
*/
- public SIPResponse responseSdpAck(ServerTransaction serverTransaction, String sdp, ParentPlatform platform) throws SipException, InvalidArgumentException, ParseException {
+ public SIPResponse responseSdpAck(SIPRequest request, String sdp, ParentPlatform platform) throws SipException, InvalidArgumentException, ParseException {
ContentTypeHeader contentTypeHeader = SipFactory.getInstance().createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
// 鍏煎鍥芥爣涓殑浣跨敤缂栫爜@鍩熷悕浣滀负RequestURI鐨勬儏鍐�
- SipURI sipURI = (SipURI)serverTransaction.getRequest().getRequestURI();
+ SipURI sipURI = (SipURI)request.getRequestURI();
if (sipURI.getPort() == -1) {
sipURI = SipFactory.getInstance().createAddressFactory().createSipURI(platform.getServerGBId(), platform.getServerIP()+":"+platform.getServerPort());
}
@@ -202,16 +207,16 @@
responseAckExtraParam.content = sdp;
responseAckExtraParam.sipURI = sipURI;
- return responseAck(serverTransaction, Response.OK, null, responseAckExtraParam);
+ return responseAck(request, Response.OK, null, responseAckExtraParam);
}
/**
* 鍥炲甯ml鐨�200
*/
- public SIPResponse responseXmlAck(ServerTransaction serverTransaction, String xml, ParentPlatform platform, Integer expires) throws SipException, InvalidArgumentException, ParseException {
+ public SIPResponse responseXmlAck(SIPRequest request, String xml, ParentPlatform platform, Integer expires) throws SipException, InvalidArgumentException, ParseException {
ContentTypeHeader contentTypeHeader = SipFactory.getInstance().createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
- SipURI sipURI = (SipURI)serverTransaction.getRequest().getRequestURI();
+ SipURI sipURI = (SipURI)request.getRequestURI();
if (sipURI.getPort() == -1) {
sipURI = SipFactory.getInstance().createAddressFactory().createSipURI(platform.getServerGBId(), platform.getServerIP()+":"+platform.getServerPort());
}
@@ -220,7 +225,7 @@
responseAckExtraParam.content = xml;
responseAckExtraParam.sipURI = sipURI;
responseAckExtraParam.expires = expires;
- return responseAck(serverTransaction, Response.OK, null, responseAckExtraParam);
+ return responseAck(request, Response.OK, null, responseAckExtraParam);
}
public Element getRootElement(RequestEvent evt) throws DocumentException {
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/ByeRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/ByeRequestProcessor.java
index 8bf4931..66eebe6 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/ByeRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/ByeRequestProcessor.java
@@ -18,6 +18,7 @@
import com.genersoft.iot.vmp.service.bean.MessageForPushChannel;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import gov.nist.javax.sip.message.SIPRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
@@ -82,7 +83,7 @@
public void process(RequestEvent evt) {
try {
- responseAck(getServerTransaction(evt), Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍥炲BYE淇℃伅澶辫触]锛寋}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
index 42ae826..e110712 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
@@ -7,6 +7,7 @@
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
+import com.genersoft.iot.vmp.gb28181.transmit.SIPSender;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
@@ -81,7 +82,7 @@
private IPlayService playService;
@Autowired
- private ISIPCommander commander;
+ private SIPSender sipSender;
@Autowired
private ZLMRTPServerFactory zlmrtpServerFactory;
@@ -124,16 +125,15 @@
public void process(RequestEvent evt) {
// Invite Request娑堟伅瀹炵幇锛屾娑堟伅涓�鑸负绾ц仈娑堟伅锛屼笂绾х粰涓嬬骇鍙戦�佽姹傝棰戞寚浠�
try {
- Request request = evt.getRequest();
+ SIPRequest request = (SIPRequest)evt.getRequest();
String channelId = SipUtils.getChannelIdFromRequest(request);
String requesterId = SipUtils.getUserIdFromFromHeader(request);
CallIdHeader callIdHeader = (CallIdHeader) request.getHeader(CallIdHeader.NAME);
- ServerTransaction serverTransaction = getServerTransaction(evt);
if (requesterId == null || channelId == null) {
logger.info("鏃犳硶浠嶧romHeader鐨凙ddress涓幏鍙栧埌骞冲彴id锛岃繑鍥�400");
// 鍙傛暟涓嶅叏锛� 鍙�400锛岃姹傞敊璇�
try {
- responseAck(serverTransaction, Response.BAD_REQUEST);
+ responseAck(request, Response.BAD_REQUEST);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite BAD_REQUEST: {}", e.getMessage());
}
@@ -144,7 +144,7 @@
// 鏌ヨ璇锋眰鏄惁鏉ヨ嚜涓婄骇骞冲彴\璁惧
ParentPlatform platform = storager.queryParentPlatByServerGBId(requesterId);
if (platform == null) {
- inviteFromDeviceHandle(serverTransaction, requesterId);
+ inviteFromDeviceHandle(request, requesterId);
} else {
// 鏌ヨ骞冲彴涓嬫槸鍚︽湁璇ラ�氶亾
@@ -159,12 +159,12 @@
if (channel != null && gbStream == null) {
// if (channel.getStatus() == 0) {
// logger.info("閫氶亾绂荤嚎锛岃繑鍥�400");
-// responseAck(serverTransaction, Response.BAD_REQUEST, "channel [" + channel.getChannelId() + "] offline");
+// responseAck(request, Response.BAD_REQUEST, "channel [" + channel.getChannelId() + "] offline");
// return;
// }
// 閫氶亾瀛樺湪锛屽彂100锛孴RYING
try {
- responseAck(serverTransaction, Response.TRYING);
+ responseAck(request, Response.TRYING);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite TRYING: {}", e.getMessage());
}
@@ -176,7 +176,7 @@
if ("proxy".equals(gbStream.getStreamType())) {
logger.info("[ app={}, stream={} ]鎵句笉鍒皕lm {}锛岃繑鍥�410", gbStream.getApp(), gbStream.getStream(), mediaServerId);
try {
- responseAck(serverTransaction, Response.GONE);
+ responseAck(request, Response.GONE);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite GONE: {}", e.getMessage());
}
@@ -186,7 +186,7 @@
if (streamPushItem == null || streamPushItem.getServerId().equals(userSetting.getServerId())) {
logger.info("[ app={}, stream={} ]鎵句笉鍒皕lm {}锛岃繑鍥�410", gbStream.getApp(), gbStream.getStream(), mediaServerId);
try {
- responseAck(serverTransaction, Response.GONE);
+ responseAck(request, Response.GONE);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite GONE: {}", e.getMessage());
}
@@ -199,7 +199,7 @@
if (streamPushItem == null) {
logger.info("[ app={}, stream={} ]鎵句笉鍒皕lm {}锛岃繑鍥�410", gbStream.getApp(), gbStream.getStream(), mediaServerId);
try {
- responseAck(serverTransaction, Response.GONE);
+ responseAck(request, Response.GONE);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite GONE: {}", e.getMessage());
}
@@ -210,7 +210,7 @@
if (proxyByAppAndStream == null) {
logger.info("[ app={}, stream={} ]鎵句笉鍒皕lm {}锛岃繑鍥�410", gbStream.getApp(), gbStream.getStream(), mediaServerId);
try {
- responseAck(serverTransaction, Response.GONE);
+ responseAck(request, Response.GONE);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite GONE: {}", e.getMessage());
}
@@ -219,14 +219,14 @@
}
}
try {
- responseAck(serverTransaction, Response.CALL_IS_BEING_FORWARDED);
+ responseAck(request, Response.CALL_IS_BEING_FORWARDED);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite CALL_IS_BEING_FORWARDED: {}", e.getMessage());
}
} else if (catalog != null) {
try {
// 鐩綍涓嶆敮鎸佺偣鎾�
- responseAck(serverTransaction, Response.BAD_REQUEST, "catalog channel can not play");
+ responseAck(request, Response.BAD_REQUEST, "catalog channel can not play");
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite 鐩綍涓嶆敮鎸佺偣鎾�: {}", e.getMessage());
}
@@ -235,7 +235,7 @@
logger.info("閫氶亾涓嶅瓨鍦紝杩斿洖404");
try {
// 閫氶亾涓嶅瓨鍦紝鍙�404锛岃祫婧愪笉瀛樺湪
- responseAck(serverTransaction, Response.NOT_FOUND);
+ responseAck(request, Response.NOT_FOUND);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite 閫氶亾涓嶅瓨鍦�: {}", e.getMessage());
}
@@ -311,7 +311,7 @@
// 鍥炲涓嶆敮鎸佺殑鏍煎紡
try {
// 涓嶆敮鎸佺殑鏍煎紡锛屽彂415
- responseAck(serverTransaction, Response.UNSUPPORTED_MEDIA_TYPE);
+ responseAck(request, Response.UNSUPPORTED_MEDIA_TYPE);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite 涓嶆敮鎸佺殑鏍煎紡: {}", e.getMessage());
}
@@ -328,7 +328,7 @@
if (device == null) {
logger.warn("鐐规挱骞冲彴{}鐨勯�氶亾{}鏃舵湭鎵惧埌璁惧淇℃伅", requesterId, channel);
try {
- responseAck(serverTransaction, Response.SERVER_INTERNAL_ERROR);
+ responseAck(request, Response.SERVER_INTERNAL_ERROR);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite 鏈壘鍒拌澶囦俊鎭�: {}", e.getMessage());
}
@@ -338,7 +338,7 @@
if (mediaServerItem == null) {
logger.warn("鏈壘鍒板彲鐢ㄧ殑zlm");
try {
- responseAck(serverTransaction, Response.BUSY_HERE);
+ responseAck(request, Response.BUSY_HERE);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite BUSY_HERE: {}", e.getMessage());
}
@@ -354,7 +354,7 @@
if (sendRtpItem == null) {
logger.warn("鏈嶅姟鍣ㄧ鍙h祫婧愪笉瓒�");
try {
- responseAck(serverTransaction, Response.BUSY_HERE);
+ responseAck(request, Response.BUSY_HERE);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite 鏈嶅姟鍣ㄧ鍙h祫婧愪笉瓒�: {}", e.getMessage());
}
@@ -403,7 +403,7 @@
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鍙戦�丅YE: {}", e.getMessage());
}
}, 60 * 1000);
- responseSdpAck(serverTransaction, content.toString(), platform);
+ responseSdpAck(request, content.toString(), platform);
} catch (SipException e) {
e.printStackTrace();
@@ -415,15 +415,10 @@
};
SipSubscribe.Event errorEvent = ((event) -> {
// 鏈煡閿欒銆傜洿鎺ヨ浆鍙戣澶囩偣鎾殑閿欒
- Response response = null;
try {
- response = getMessageFactory().createResponse(event.statusCode, evt.getRequest());
- serverTransaction.sendResponse(response);
- System.out.println("鏈煡閿欒銆傜洿鎺ヨ浆鍙戣澶囩偣鎾殑閿欒");
- if (serverTransaction.getDialog() != null) {
- serverTransaction.getDialog().delete();
- }
- } catch (ParseException | SipException | InvalidArgumentException e) {
+ Response response = getMessageFactory().createResponse(event.statusCode, evt.getRequest());
+ sipSender.transmitRequest(response);
+ } catch (ParseException | SipException e) {
e.printStackTrace();
}
});
@@ -443,7 +438,7 @@
}
redisCatchStorage.deleteSendRTPServer(platform.getServerGBId(), channelId, callIdHeader.getCallId(), null);
try {
- responseAck(serverTransaction, Response.REQUEST_TIMEOUT);
+ responseAck(request, Response.REQUEST_TIMEOUT);
} catch (SipException e) {
e.printStackTrace();
} catch (InvalidArgumentException e) {
@@ -503,26 +498,26 @@
if("push".equals(gbStream.getStreamType())) {
if (streamPushItem != null && streamPushItem.isPushIng()) {
// 鎺ㄦ祦鐘舵��
- pushStream(evt, serverTransaction, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
+ pushStream(evt, request, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId);
} else {
// 鏈帹娴� 鎷夎捣
- notifyStreamOnline(evt, serverTransaction,gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
+ notifyStreamOnline(evt, request,gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId);
}
}else if ("proxy".equals(gbStream.getStreamType())){
if(null != proxyByAppAndStream &&proxyByAppAndStream.isStatus()){
- pushProxyStream(evt, serverTransaction, gbStream, platform, callIdHeader, mediaServerItem, port, tcpActive,
+ pushProxyStream(evt, request, gbStream, platform, callIdHeader, mediaServerItem, port, tcpActive,
mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId);
}else{
//寮�鍚唬鐞嗘媺娴�
boolean start1 = streamProxyService.start(gbStream.getApp(), gbStream.getStream());
if(start1) {
- pushProxyStream(evt, serverTransaction, gbStream, platform, callIdHeader, mediaServerItem, port, tcpActive,
+ pushProxyStream(evt, request, gbStream, platform, callIdHeader, mediaServerItem, port, tcpActive,
mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId);
}else{
//澶辫触鍚庨�氱煡
- notifyStreamOnline(evt, serverTransaction,gbStream, null, platform, callIdHeader, mediaServerItem, port, tcpActive,
+ notifyStreamOnline(evt, request,gbStream, null, platform, callIdHeader, mediaServerItem, port, tcpActive,
mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId);
}
}
@@ -540,7 +535,7 @@
/**
* 瀹夋帓鎺ㄦ祦
*/
- private void pushProxyStream(RequestEvent evt, ServerTransaction serverTransaction, GbStream gbStream, ParentPlatform platform,
+ private void pushProxyStream(RequestEvent evt, SIPRequest request, GbStream gbStream, ParentPlatform platform,
CallIdHeader callIdHeader, MediaServerItem mediaServerItem,
int port, Boolean tcpActive, boolean mediaTransmissionTCP,
String channelId, String addressStr, String ssrc, String requesterId) {
@@ -554,7 +549,7 @@
if (sendRtpItem == null) {
logger.warn("鏈嶅姟鍣ㄧ鍙h祫婧愪笉瓒�");
try {
- responseAck(serverTransaction, Response.BUSY_HERE);
+ responseAck(request, Response.BUSY_HERE);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite 鏈嶅姟鍣ㄧ鍙h祫婧愪笉瓒�: {}", e.getMessage());
}
@@ -567,10 +562,9 @@
// 鍐欏叆redis锛� 瓒呮椂鏃跺洖澶�
sendRtpItem.setStatus(1);
sendRtpItem.setCallId(callIdHeader.getCallId());
- SIPRequest request = (SIPRequest) evt.getRequest();
sendRtpItem.setFromTag(request.getFromTag());
- SIPResponse response = sendStreamAck(mediaServerItem, serverTransaction, sendRtpItem, platform, evt);
+ SIPResponse response = sendStreamAck(mediaServerItem, request, sendRtpItem, platform, evt);
if (response != null) {
sendRtpItem.setToTag(response.getToTag());
}
@@ -579,7 +573,7 @@
}
}
- private void pushStream(RequestEvent evt, ServerTransaction serverTransaction, GbStream gbStream, StreamPushItem streamPushItem, ParentPlatform platform,
+ private void pushStream(RequestEvent evt, SIPRequest request, GbStream gbStream, StreamPushItem streamPushItem, ParentPlatform platform,
CallIdHeader callIdHeader, MediaServerItem mediaServerItem,
int port, Boolean tcpActive, boolean mediaTransmissionTCP,
String channelId, String addressStr, String ssrc, String requesterId) {
@@ -595,7 +589,7 @@
if (sendRtpItem == null) {
logger.warn("鏈嶅姟鍣ㄧ鍙h祫婧愪笉瓒�");
try {
- responseAck(serverTransaction, Response.BUSY_HERE);
+ responseAck(request, Response.BUSY_HERE);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite 鏈嶅姟鍣ㄧ鍙h祫婧愪笉瓒�: {}", e.getMessage());
}
@@ -609,9 +603,8 @@
sendRtpItem.setStatus(1);
sendRtpItem.setCallId(callIdHeader.getCallId());
- SIPRequest request = (SIPRequest) evt.getRequest();
sendRtpItem.setFromTag(request.getFromTag());
- SIPResponse response = sendStreamAck(mediaServerItem, serverTransaction, sendRtpItem, platform, evt);
+ SIPResponse response = sendStreamAck(mediaServerItem, request, sendRtpItem, platform, evt);
if (response != null) {
sendRtpItem.setToTag(response.getToTag());
}
@@ -620,20 +613,20 @@
} else {
// 涓嶅湪绾� 鎷夎捣
- notifyStreamOnline(evt, serverTransaction,gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
+ notifyStreamOnline(evt, request,gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId);
}
} else {
// 鍏朵粬骞冲彴鍐呭
- otherWvpPushStream(evt, serverTransaction, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
+ otherWvpPushStream(evt, request, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId);
}
}
/**
* 閫氱煡娴佷笂绾�
*/
- private void notifyStreamOnline(RequestEvent evt, ServerTransaction serverTransaction, GbStream gbStream, StreamPushItem streamPushItem, ParentPlatform platform,
+ private void notifyStreamOnline(RequestEvent evt, SIPRequest request, GbStream gbStream, StreamPushItem streamPushItem, ParentPlatform platform,
CallIdHeader callIdHeader, MediaServerItem mediaServerItem,
int port, Boolean tcpActive, boolean mediaTransmissionTCP,
String channelId, String addressStr, String ssrc, String requesterId) {
@@ -641,7 +634,7 @@
// TODO 鎺у埗鍚敤浠ヤ娇璁惧涓婄嚎
logger.info("[ app={}, stream={} ]閫氶亾鏈帹娴侊紝鍚敤娴佸悗寮�濮嬫帹娴�", gbStream.getApp(), gbStream.getStream());
try {
- responseAck(serverTransaction, Response.BAD_REQUEST, "channel [" + gbStream.getGbId() + "] offline");
+ responseAck(request, Response.BAD_REQUEST, "channel [" + gbStream.getGbId() + "] offline");
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite 閫氶亾鏈帹娴�: {}", e.getMessage());
}
@@ -649,7 +642,7 @@
if (!platform.isStartOfflinePush()) {
// 骞冲彴璁剧疆涓叧闂簡鎷夎捣绂荤嚎鐨勬帹娴佸垯鐩存帴鍥炲
try {
- responseAck(serverTransaction, Response.TEMPORARILY_UNAVAILABLE, "channel stream not pushing");
+ responseAck(request, Response.TEMPORARILY_UNAVAILABLE, "channel stream not pushing");
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite 閫氶亾鏈帹娴�: {}", e.getMessage());
}
@@ -667,7 +660,7 @@
logger.info("[ app={}, stream={} ] 绛夊緟璁惧寮�濮嬫帹娴佽秴鏃�", gbStream.getApp(), gbStream.getStream());
try {
mediaListManager.removedChannelOnlineEventLister(gbStream.getApp(), gbStream.getStream());
- responseAck(serverTransaction, Response.REQUEST_TIMEOUT); // 瓒呮椂
+ responseAck(request, Response.REQUEST_TIMEOUT); // 瓒呮椂
} catch (SipException e) {
e.printStackTrace();
} catch (InvalidArgumentException e) {
@@ -690,7 +683,7 @@
if (sendRtpItem == null) {
logger.warn("涓婄骇鐐规椂鍒涘缓sendRTPItem澶辫触锛屽彲鑳芥槸鏈嶅姟鍣ㄧ鍙h祫婧愪笉瓒�");
try {
- responseAck(serverTransaction, Response.BUSY_HERE);
+ responseAck(request, Response.BUSY_HERE);
} catch (SipException e) {
e.printStackTrace();
} catch (InvalidArgumentException e) {
@@ -708,16 +701,15 @@
sendRtpItem.setStatus(1);
sendRtpItem.setCallId(callIdHeader.getCallId());
- SIPRequest request = (SIPRequest) evt.getRequest();
sendRtpItem.setFromTag(request.getFromTag());
- SIPResponse response = sendStreamAck(mediaServerItem, serverTransaction, sendRtpItem, platform, evt);
+ SIPResponse response = sendStreamAck(mediaServerItem, request, sendRtpItem, platform, evt);
if (response != null) {
sendRtpItem.setToTag(response.getToTag());
}
redisCatchStorage.updateSendRTPSever(sendRtpItem);
} else {
// 鍏朵粬骞冲彴鍐呭
- otherWvpPushStream(evt, serverTransaction, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
+ otherWvpPushStream(evt, request, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId);
}
});
@@ -728,7 +720,7 @@
dynamicTask.stop(callIdHeader.getCallId());
mediaListManager.removedChannelOnlineEventLister(gbStream.getApp(), gbStream.getStream());
try {
- responseAck(serverTransaction, Response.TEMPORARILY_UNAVAILABLE, response.getMsg());
+ responseAck(request, Response.TEMPORARILY_UNAVAILABLE, response.getMsg());
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鐐规挱鍥炲: {}", e.getMessage());
}
@@ -740,7 +732,7 @@
/**
* 鏉ヨ嚜鍏朵粬wvp鐨勬帹娴�
*/
- private void otherWvpPushStream(RequestEvent evt, ServerTransaction serverTransaction, GbStream gbStream, StreamPushItem streamPushItem, ParentPlatform platform,
+ private void otherWvpPushStream(RequestEvent evt, SIPRequest request, GbStream gbStream, StreamPushItem streamPushItem, ParentPlatform platform,
CallIdHeader callIdHeader, MediaServerItem mediaServerItem,
int port, Boolean tcpActive, boolean mediaTransmissionTCP,
String channelId, String addressStr, String ssrc, String requesterId) {
@@ -753,7 +745,7 @@
if (sendRtpItem == null || responseSendItemMsg.getMediaServerItem() == null) {
logger.warn("鏈嶅姟鍣ㄧ鍙h祫婧愪笉瓒�");
try {
- responseAck(serverTransaction, Response.BUSY_HERE);
+ responseAck(request, Response.BUSY_HERE);
} catch (SipException e) {
e.printStackTrace();
} catch (InvalidArgumentException e) {
@@ -772,9 +764,8 @@
sendRtpItem.setStatus(1);
sendRtpItem.setCallId(callIdHeader.getCallId());
- SIPRequest request = (SIPRequest) evt.getRequest();
sendRtpItem.setFromTag(request.getFromTag());
- SIPResponse response = sendStreamAck(responseSendItemMsg.getMediaServerItem(), serverTransaction,sendRtpItem, platform, evt);
+ SIPResponse response = sendStreamAck(responseSendItemMsg.getMediaServerItem(), request,sendRtpItem, platform, evt);
if (response != null) {
sendRtpItem.setToTag(response.getToTag());
}
@@ -788,24 +779,24 @@
StreamPushItem currentStreamPushItem = streamPushService.getPush(streamPushItem.getApp(), streamPushItem.getStream());
if (currentStreamPushItem.isPushIng()) {
// 鍦ㄧ嚎鐘舵��
- pushStream(evt, serverTransaction, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
+ pushStream(evt, request, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId);
} else {
// 涓嶅湪绾� 鎷夎捣
- notifyStreamOnline(evt, serverTransaction, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
+ notifyStreamOnline(evt, request, gbStream, streamPushItem, platform, callIdHeader, mediaServerItem, port, tcpActive,
mediaTransmissionTCP, channelId, addressStr, ssrc, requesterId);
}
}
try {
- responseAck(serverTransaction, Response.BUSY_HERE);
+ responseAck(request, Response.BUSY_HERE);
} catch (InvalidArgumentException | ParseException | SipException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鐐规挱鍥炲 BUSY_HERE: {}", e.getMessage());
}
});
}
- public SIPResponse sendStreamAck(MediaServerItem mediaServerItem, ServerTransaction serverTransaction, SendRtpItem sendRtpItem, ParentPlatform platform, RequestEvent evt) {
+ public SIPResponse sendStreamAck(MediaServerItem mediaServerItem, SIPRequest request, SendRtpItem sendRtpItem, ParentPlatform platform, RequestEvent evt) {
StringBuffer content = new StringBuffer(200);
content.append("v=0\r\n");
@@ -828,7 +819,7 @@
content.append("f=\r\n");
try {
- return responseSdpAck(serverTransaction, content.toString(), platform);
+ return responseSdpAck(request, content.toString(), platform);
} catch (SipException e) {
e.printStackTrace();
} catch (InvalidArgumentException e) {
@@ -839,18 +830,18 @@
return null;
}
- public void inviteFromDeviceHandle(ServerTransaction serverTransaction, String requesterId) {
+ public void inviteFromDeviceHandle(SIPRequest request, String requesterId) {
// 闈炰笂绾у钩鍙拌姹傦紝鏌ヨ鏄惁璁惧璇锋眰锛堥�氬父涓烘帴鏀惰闊冲箍鎾殑璁惧锛�
Device device = redisCatchStorage.getDevice(requesterId);
if (device != null) {
logger.info("鏀跺埌璁惧" + requesterId + "鐨勮闊冲箍鎾璉nvite璇锋眰");
try {
- responseAck(serverTransaction, Response.TRYING);
+ responseAck(request, Response.TRYING);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite BAD_REQUEST: {}", e.getMessage());
}
- String contentString = new String(serverTransaction.getRequest().getRawContent());
+ String contentString = new String(request.getRawContent());
// jainSip涓嶆敮鎸亂=瀛楁锛� 绉婚櫎绉婚櫎浠ヨВ鏋愩��
String substring = contentString;
String ssrc = "0000000404";
@@ -900,7 +891,7 @@
logger.info("涓嶆敮鎸佺殑濯掍綋鏍煎紡锛岃繑鍥�415");
// 鍥炲涓嶆敮鎸佺殑鏍煎紡
try {
- responseAck(serverTransaction, Response.UNSUPPORTED_MEDIA_TYPE); // 涓嶆敮鎸佺殑鏍煎紡锛屽彂415
+ responseAck(request, Response.UNSUPPORTED_MEDIA_TYPE); // 涓嶆敮鎸佺殑鏍煎紡锛屽彂415
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite 涓嶆敮鎸佺殑濯掍綋鏍煎紡锛岃繑鍥�415锛� {}", e.getMessage());
}
@@ -918,7 +909,7 @@
} else {
logger.warn("鏉ヨ嚜鏃犳晥璁惧/骞冲彴鐨勮姹�");
try {
- responseAck(serverTransaction, Response.BAD_REQUEST);; // 涓嶆敮鎸佺殑鏍煎紡锛屽彂415
+ responseAck(request, Response.BAD_REQUEST);; // 涓嶆敮鎸佺殑鏍煎紡锛屽彂415
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 invite 鏉ヨ嚜鏃犳晥璁惧/骞冲彴鐨勮姹傦紝 {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
index 930ddb5..33e42ab 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
@@ -20,6 +20,7 @@
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.slf4j.Logger;
@@ -34,7 +35,6 @@
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
-import javax.sip.ServerTransaction;
import javax.sip.SipException;
import javax.sip.header.FromHeader;
import javax.sip.message.Response;
@@ -93,9 +93,8 @@
@Override
public void process(RequestEvent evt) {
- ServerTransaction serverTransaction = getServerTransaction(evt);
try {
- responseAck(serverTransaction, Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK, null, null);
}catch (SipException | InvalidArgumentException | ParseException e) {
e.printStackTrace();
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
index 8bab8f5..99aabcf 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
@@ -4,6 +4,7 @@
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.WvpSipDate;
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
+import com.genersoft.iot.vmp.gb28181.transmit.SIPSender;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper;
@@ -22,9 +23,7 @@
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
-import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
-import javax.sip.ServerTransaction;
import javax.sip.SipException;
import javax.sip.header.*;
import javax.sip.message.Request;
@@ -52,6 +51,9 @@
@Autowired
private IDeviceService deviceService;
+
+ @Autowired
+ private SIPSender sipSender;
@Override
public void afterPropertiesSet() throws Exception {
@@ -86,7 +88,7 @@
logger.info("[娉ㄥ唽璇锋眰] 鏈惡甯︽巿鏉冨ご 鍥炲401: {}", requestAddress);
response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request);
new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getDomain());
- sendResponse(evt, response);
+ sipSender.transmitRequest(response);
return;
}
@@ -99,7 +101,7 @@
response = getMessageFactory().createResponse(Response.FORBIDDEN, request);
response.setReasonPhrase("wrong password");
logger.info("[娉ㄥ唽璇锋眰] 瀵嗙爜/SIP鏈嶅姟鍣↖D閿欒, 鍥炲403: {}", requestAddress);
- sendResponse(evt, response);
+ sipSender.transmitRequest(response);
return;
}
@@ -116,11 +118,7 @@
if (expiresHeader == null) {
response = getMessageFactory().createResponse(Response.BAD_REQUEST, request);
- ServerTransaction serverTransaction = getServerTransaction(evt);
- serverTransaction.sendResponse(response);
- if (serverTransaction.getDialog() != null) {
- serverTransaction.getDialog().delete();
- }
+ sipSender.transmitRequest(response);
return;
}
// 娣诲姞Contact澶�
@@ -162,7 +160,7 @@
device.setTransport("TCP".equalsIgnoreCase(transport) ? "TCP" : "UDP");
}
- sendResponse(evt, response);
+ sipSender.transmitRequest(response);
// 娉ㄥ唽鎴愬姛
// 淇濆瓨鍒皉edis
if (registerFlag) {
@@ -173,22 +171,8 @@
logger.info("[娉ㄩ攢鎴愬姛] deviceId: {}->{}" ,deviceId, requestAddress);
deviceService.offline(deviceId);
}
- } catch (SipException | InvalidArgumentException | NoSuchAlgorithmException | ParseException e) {
+ } catch (SipException | NoSuchAlgorithmException | ParseException e) {
e.printStackTrace();
}
-
}
-
- private void sendResponse(RequestEvent evt, Response response) throws InvalidArgumentException, SipException {
- ServerTransaction serverTransaction = getServerTransaction(evt);
- if (serverTransaction == null) {
- logger.warn("[鍥炲澶辫触]锛歿}", response);
- return;
- }
- serverTransaction.sendResponse(response);
- if (serverTransaction.getDialog() != null) {
- serverTransaction.getDialog().delete();
- }
- }
-
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
index 2ec4023..502b4e7 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
@@ -9,6 +9,8 @@
import com.genersoft.iot.vmp.gb28181.bean.SubscribeInfo;
import com.genersoft.iot.vmp.gb28181.task.impl.MobilePositionSubscribeHandlerTask;
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
+import com.genersoft.iot.vmp.gb28181.transmit.SIPSender;
+import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
@@ -19,23 +21,16 @@
import gov.nist.javax.sip.SipProviderImpl;
import gov.nist.javax.sip.message.SIPRequest;
import gov.nist.javax.sip.message.SIPResponse;
-import gov.nist.javax.sip.stack.SIPClientTransaction;
-import gov.nist.javax.sip.stack.SIPDialog;
-import gov.nist.javax.sip.stack.SIPServerTransaction;
-import gov.nist.javax.sip.stack.SIPServerTransactionImpl;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import javax.sip.*;
import javax.sip.header.ExpiresHeader;
-import javax.sip.message.Request;
import javax.sip.message.Response;
import java.text.ParseException;
@@ -58,6 +53,9 @@
@Autowired
private SubscribeHolder subscribeHolder;
+ @Autowired
+ private SIPSender sipSender;
+
@Override
public void afterPropertiesSet() throws Exception {
// 娣诲姞娑堟伅澶勭悊鐨勮闃�
@@ -71,8 +69,7 @@
*/
@Override
public void process(RequestEvent evt) {
- ServerTransaction serverTransaction = getServerTransaction(evt);
- Request request = evt.getRequest();
+ SIPRequest request = (SIPRequest) evt.getRequest();
try {
Element rootElement = getRootElement(evt);
if (rootElement == null) {
@@ -81,12 +78,12 @@
}
String cmd = XmlUtil.getText(rootElement, "CmdType");
if (CmdType.MOBILE_POSITION.equals(cmd)) {
- processNotifyMobilePosition(serverTransaction, rootElement);
+ processNotifyMobilePosition(request, rootElement);
// } else if (CmdType.ALARM.equals(cmd)) {
// logger.info("鎺ユ敹鍒癆larm璁㈤槄");
// processNotifyAlarm(serverTransaction, rootElement);
} else if (CmdType.CATALOG.equals(cmd)) {
- processNotifyCatalogList(serverTransaction, rootElement);
+ processNotifyCatalogList(request, rootElement);
} else {
logger.info("鎺ユ敹鍒版秷鎭細" + cmd);
@@ -96,13 +93,7 @@
response.setExpires(expireHeader);
}
logger.info("response : " + response);
- ServerTransaction transaction = getServerTransaction(evt);
- if (transaction != null) {
- transaction.sendResponse(response);
- transaction.terminate();
- } else {
- logger.info("processRequest serverTransactionId is null.");
- }
+ sipSender.transmitRequest(response);
}
} catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
e.printStackTrace();
@@ -113,14 +104,14 @@
/**
* 澶勭悊绉诲姩浣嶇疆璁㈤槄娑堟伅
*/
- private void processNotifyMobilePosition(ServerTransaction serverTransaction, Element rootElement) throws SipException {
- if (serverTransaction == null) {
+ private void processNotifyMobilePosition(SIPRequest request, Element rootElement) throws SipException {
+ if (request == null) {
return;
}
- String platformId = SipUtils.getUserIdFromFromHeader(serverTransaction.getRequest());
+ String platformId = SipUtils.getUserIdFromFromHeader(request);
String deviceId = XmlUtil.getText(rootElement, "DeviceID");
ParentPlatform platform = storager.queryParentPlatByServerGBId(platformId);
- SubscribeInfo subscribeInfo = new SubscribeInfo(serverTransaction, platformId);
+ SubscribeInfo subscribeInfo = new SubscribeInfo(request, platformId);
if (platform == null) {
return;
}
@@ -149,7 +140,7 @@
try {
ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
- SIPResponse response = responseXmlAck(serverTransaction, resultXml.toString(), parentPlatform, subscribeInfo.getExpires());
+ SIPResponse response = responseXmlAck(request, resultXml.toString(), parentPlatform, subscribeInfo.getExpires());
if (subscribeInfo.getExpires() == 0) {
subscribeHolder.removeMobilePositionSubscribe(platformId);
}else {
@@ -166,17 +157,17 @@
}
- private void processNotifyCatalogList(ServerTransaction serverTransaction, Element rootElement) throws SipException {
- if (serverTransaction == null) {
+ private void processNotifyCatalogList(SIPRequest request, Element rootElement) throws SipException {
+ if (request == null) {
return;
}
- String platformId = SipUtils.getUserIdFromFromHeader(serverTransaction.getRequest());
+ String platformId = SipUtils.getUserIdFromFromHeader(request);
String deviceId = XmlUtil.getText(rootElement, "DeviceID");
ParentPlatform platform = storager.queryParentPlatByServerGBId(platformId);
if (platform == null){
return;
}
- SubscribeInfo subscribeInfo = new SubscribeInfo(serverTransaction, platformId);
+ SubscribeInfo subscribeInfo = new SubscribeInfo(request, platformId);
String sn = XmlUtil.getText(rootElement, "SN");
logger.info("[鍥炲涓婄骇鐨勭洰褰曡闃呰姹俔: {}/{}", platformId, deviceId);
@@ -196,7 +187,7 @@
}
try {
ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
- SIPResponse response = responseXmlAck(serverTransaction, resultXml.toString(), parentPlatform, subscribeInfo.getExpires());
+ SIPResponse response = responseXmlAck(request, resultXml.toString(), parentPlatform, subscribeInfo.getExpires());
if (subscribeInfo.getExpires() == 0) {
subscribeHolder.removeCatalogSubscribe(platformId);
}else {
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/info/InfoRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/info/InfoRequestProcessor.java
index 66f5442..a4d49d5 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/info/InfoRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/info/InfoRequestProcessor.java
@@ -19,7 +19,6 @@
import org.springframework.stereotype.Component;
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
-import javax.sip.ServerTransaction;
import javax.sip.SipException;
import javax.sip.header.*;
import javax.sip.message.Response;
@@ -62,8 +61,9 @@
@Override
public void process(RequestEvent evt) {
logger.debug("鎺ユ敹鍒版秷鎭細" + evt.getRequest());
- String deviceId = SipUtils.getUserIdFromFromHeader(evt.getRequest());
- CallIdHeader callIdHeader = (CallIdHeader)evt.getRequest().getHeader(CallIdHeader.NAME);
+ SIPRequest request = (SIPRequest) evt.getRequest();
+ String deviceId = SipUtils.getUserIdFromFromHeader(request);
+ CallIdHeader callIdHeader = request.getCallIdHeader();
// 鍏堜粠浼氳瘽鍐呮煡鎵�
SsrcTransaction ssrcTransaction = sessionManager.getSsrcTransaction(null, null, callIdHeader.getCallId(), null);
@@ -71,7 +71,6 @@
if (ssrcTransaction != null) {
deviceId = ssrcTransaction.getDeviceId();
}
- ServerTransaction serverTransaction = getServerTransaction(evt);
// 鏌ヨ璁惧鏄惁瀛樺湪
Device device = redisCatchStorage.getDevice(deviceId);
// 鏌ヨ涓婄骇骞冲彴鏄惁瀛樺湪
@@ -79,7 +78,6 @@
try {
if (device != null && parentPlatform != null) {
logger.warn("[閲嶅]骞冲彴涓庤澶囩紪鍙烽噸澶嶏細{}", deviceId);
- SIPRequest request = (SIPRequest) evt.getRequest();
String hostAddress = request.getRemoteAddress().getHostAddress();
int remotePort = request.getRemotePort();
if (device.getHostAddress().equals(hostAddress + ":" + remotePort)) {
@@ -90,7 +88,7 @@
}
if (device == null && parentPlatform == null) {
// 涓嶅瓨鍦ㄥ垯鍥炲404
- responseAck(serverTransaction, Response.NOT_FOUND, "device "+ deviceId +" not found");
+ responseAck(request, Response.NOT_FOUND, "device "+ deviceId +" not found");
logger.warn("[璁惧鏈壘鍒� ]锛� {}", deviceId);
if (sipSubscribe.getErrorSubscribe(callIdHeader.getCallId()) != null){
DeviceNotFoundEvent deviceNotFoundEvent = new DeviceNotFoundEvent(evt.getDialog());
@@ -107,21 +105,21 @@
String streamId = sendRtpItem.getStreamId();
StreamInfo streamInfo = redisCatchStorage.queryPlayback(null, null, streamId, null);
if (null == streamInfo) {
- responseAck(serverTransaction, Response.NOT_FOUND, "stream " + streamId + " not found");
+ responseAck(request, Response.NOT_FOUND, "stream " + streamId + " not found");
return;
}
Device device1 = storager.queryVideoDevice(streamInfo.getDeviceID());
cmder.playbackControlCmd(device1,streamInfo,new String(evt.getRequest().getRawContent()),eventResult -> {
// 澶辫触鐨勫洖澶�
try {
- responseAck(serverTransaction, eventResult.statusCode, eventResult.msg);
+ responseAck(request, eventResult.statusCode, eventResult.msg);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 褰曞儚鎺у埗: {}", e.getMessage());
}
}, eventResult -> {
// 鎴愬姛鐨勫洖澶�
try {
- responseAck(serverTransaction, eventResult.statusCode);
+ responseAck(request, eventResult.statusCode);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 褰曞儚鎺у埗: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java
index f74c250..1f4513e 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java
@@ -23,12 +23,8 @@
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
-import javax.sip.ServerTransaction;
import javax.sip.SipException;
-import javax.sip.address.SipURI;
-import javax.sip.header.CSeqHeader;
import javax.sip.header.CallIdHeader;
-import javax.sip.message.Request;
import javax.sip.message.Response;
import java.text.ParseException;
import java.util.Map;
@@ -80,16 +76,13 @@
if (ssrcTransaction != null) {
deviceId = ssrcTransaction.getDeviceId();
}
-
- ServerTransaction serverTransaction = getServerTransaction(evt);
-
+ SIPRequest request = (SIPRequest) evt.getRequest();
// 鏌ヨ璁惧鏄惁瀛樺湪
Device device = redisCatchStorage.getDevice(deviceId);
// 鏌ヨ涓婄骇骞冲彴鏄惁瀛樺湪
ParentPlatform parentPlatform = storage.queryParentPlatByServerGBId(deviceId);
try {
if (device != null && parentPlatform != null) {
- SIPRequest request = (SIPRequest) evt.getRequest();
String hostAddress = request.getRemoteAddress().getHostAddress();
int remotePort = request.getRemotePort();
if (device.getHostAddress().equals(hostAddress + ":" + remotePort)) {
@@ -100,7 +93,7 @@
}
if (device == null && parentPlatform == null) {
// 涓嶅瓨鍦ㄥ垯鍥炲404
- responseAck(serverTransaction, Response.NOT_FOUND, "device "+ deviceId +" not found");
+ responseAck(request, Response.NOT_FOUND, "device "+ deviceId +" not found");
logger.warn("[璁惧鏈壘鍒� ]锛� {}", deviceId);
if (sipSubscribe.getErrorSubscribe(callIdHeader.getCallId()) != null){
DeviceNotFoundEvent deviceNotFoundEvent = new DeviceNotFoundEvent(evt.getDialog());
@@ -114,13 +107,13 @@
rootElement = getRootElement(evt);
if (rootElement == null) {
logger.error("澶勭悊MESSAGE璇锋眰 鏈幏鍙栧埌娑堟伅浣搟}", evt.getRequest());
- responseAck(serverTransaction, Response.BAD_REQUEST, "content is null");
+ responseAck(request, Response.BAD_REQUEST, "content is null");
return;
}
} catch (DocumentException e) {
logger.warn("瑙f瀽XML娑堟伅鍐呭寮傚父", e);
// 涓嶅瓨鍦ㄥ垯鍥炲404
- responseAck(serverTransaction, Response.BAD_REQUEST, e.getMessage());
+ responseAck(request, Response.BAD_REQUEST, e.getMessage());
}
String name = rootElement.getName();
IMessageHandler messageHandler = messageHandlerMap.get(name);
@@ -133,7 +126,7 @@
}else {
// 涓嶆敮鎸佺殑message
// 涓嶅瓨鍦ㄥ垯鍥炲415
- responseAck(serverTransaction, Response.UNSUPPORTED_MEDIA_TYPE, "Unsupported message type, must Control/Notify/Query/Response");
+ responseAck(request, Response.UNSUPPORTED_MEDIA_TYPE, "Unsupported message type, must Control/Notify/Query/Response");
}
}
} catch (SipException e) {
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
index cd70dd0..7ddb1be 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/control/cmd/DeviceControlQueryMessageHandler.java
@@ -11,6 +11,7 @@
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.SpringBeanFactory;
import gov.nist.javax.sip.SipStackImpl;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -67,10 +68,10 @@
@Override
public void handForPlatform(RequestEvent evt, ParentPlatform parentPlatform, Element rootElement) {
- ServerTransaction serverTransaction = getServerTransaction(evt);
+ SIPRequest request = (SIPRequest) evt.getRequest();
// 姝ゅ鏄笂绾у彂鍑虹殑DeviceControl鎸囦护
- String targetGBId = ((SipURI) ((HeaderAddress) evt.getRequest().getHeader(ToHeader.NAME)).getAddress().getURI()).getUser();
+ String targetGBId = ((SipURI) request.getToHeader().getAddress().getURI()).getUser();
String channelId = getText(rootElement, "DeviceID");
// 杩滅▼鍚姩鍔熻兘
if (!ObjectUtils.isEmpty(getText(rootElement, "TeleBoot"))) {
@@ -111,7 +112,7 @@
Device deviceForPlatform = storager.queryVideoDeviceByPlatformIdAndChannelId(parentPlatform.getServerGBId(), channelId);
if (deviceForPlatform == null) {
try {
- responseAck(serverTransaction, Response.NOT_FOUND);
+ responseAck(request, Response.NOT_FOUND);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 閿欒淇℃伅: {}", e.getMessage());
}
@@ -121,14 +122,14 @@
cmder.fronEndCmd(deviceForPlatform, channelId, cmdString, eventResult -> {
// 澶辫触鐨勫洖澶�
try {
- responseAck(serverTransaction, eventResult.statusCode, eventResult.msg);
+ responseAck(request, eventResult.statusCode, eventResult.msg);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 浜戝彴/鍓嶇鍥炲: {}", e.getMessage());
}
}, eventResult -> {
// 鎴愬姛鐨勫洖澶�
try {
- responseAck(serverTransaction, eventResult.statusCode);
+ responseAck(request, eventResult.statusCode);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 浜戝彴/鍓嶇鍥炲: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java
index 1e09ae0..3bc5c37 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java
@@ -16,6 +16,7 @@
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -97,7 +98,7 @@
SipMsgInfo sipMsgInfo = taskQueue.poll();
// 鍥炲200 OK
try {
- responseAck(getServerTransaction(sipMsgInfo.getEvt()), Response.OK);
+ responseAck((SIPRequest) sipMsgInfo.getEvt().getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[澶勭悊鎶ヨ閫氱煡], 鍥炲200OK澶辫触", e);
}
@@ -216,7 +217,7 @@
logger.info("鏀跺埌鏉ヨ嚜骞冲彴[{}]鐨勬姤璀﹂�氱煡", parentPlatform.getServerGBId());
// 鍥炲200 OK
try {
- responseAck(getServerTransaction(evt), Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鎶ヨ閫氱煡鍥炲: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java
index cd0dcd1..2846903 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java
@@ -10,6 +10,7 @@
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -54,7 +55,7 @@
}
// 鍥炲200 OK
try {
- responseAck(getServerTransaction(evt), Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 蹇冭烦鍥炲: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MediaStatusNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MediaStatusNotifyMessageHandler.java
index 041f739..b15003c 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MediaStatusNotifyMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MediaStatusNotifyMessageHandler.java
@@ -14,6 +14,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify.NotifyMessageHandler;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -67,7 +68,7 @@
// 鍥炲200 OK
try {
- responseAck(getServerTransaction(evt), Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 褰曞儚娴佹帹閫佸畬姣曪紝鍥炲200OK: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java
index 82cd552..991636e 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java
@@ -11,6 +11,7 @@
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.slf4j.Logger;
@@ -83,7 +84,7 @@
if (rootElementAfterCharset == null) {
try {
logger.warn("[ 绉诲姩璁惧浣嶇疆鏁版嵁閫氱煡 ] content cannot be null, {}", sipMsgInfo.getEvt().getRequest());
- responseAck(getServerTransaction(sipMsgInfo.getEvt()), Response.BAD_REQUEST);
+ responseAck((SIPRequest) sipMsgInfo.getEvt().getRequest(), Response.BAD_REQUEST);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 绉诲姩璁惧浣嶇疆鏁版嵁閫氱煡 鍐呭涓虹┖: {}", e.getMessage());
}
@@ -138,7 +139,7 @@
storager.updateChannelPosition(deviceChannel);
//鍥炲 200 OK
try {
- responseAck(getServerTransaction(sipMsgInfo.getEvt()), Response.OK);
+ responseAck((SIPRequest) sipMsgInfo.getEvt().getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 绉诲姩璁惧浣嶇疆鏁版嵁鍥炲200: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/AlarmQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/AlarmQueryMessageHandler.java
index be24faa..ce8c939 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/AlarmQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/AlarmQueryMessageHandler.java
@@ -9,6 +9,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.query.QueryMessageHandler;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -58,7 +59,7 @@
logger.info("涓嶆敮鎸乤larm鏌ヨ");
try {
- responseAck(getServerTransaction(evt), Response.NOT_FOUND, "not support alarm query");
+ responseAck((SIPRequest) evt.getRequest(), Response.NOT_FOUND, "not support alarm query");
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 alarm鏌ヨ鍥炲200OK: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java
index 9e79f3f..cb1e7ae 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java
@@ -9,6 +9,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.query.QueryMessageHandler;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -66,7 +67,7 @@
FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME);
try {
// 鍥炲200 OK
- responseAck(getServerTransaction(evt), Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鐩綍鏌ヨ鍥炲200OK: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceInfoQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceInfoQueryMessageHandler.java
index 3567939..df6e056 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceInfoQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceInfoQueryMessageHandler.java
@@ -6,6 +6,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.query.QueryMessageHandler;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,7 +49,7 @@
FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME);
try {
// 鍥炲200 OK
- responseAck(getServerTransaction(evt), Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 DeviceInfo鏌ヨ鍥炲: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java
index bb6ff78..7f0e6af 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java
@@ -9,6 +9,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.query.QueryMessageHandler;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -61,7 +62,7 @@
FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME);
// 鍥炲200 OK
try {
- responseAck(getServerTransaction(evt), Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 DeviceStatus鏌ヨ鍥炲200OK: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java
index 8c1365a..f3170a5 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/RecordInfoQueryMessageHandler.java
@@ -12,6 +12,7 @@
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.storager.dao.dto.ChannelSourceInfo;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -21,9 +22,7 @@
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
-import javax.sip.ServerTransaction;
import javax.sip.SipException;
-import javax.sip.header.FromHeader;
import javax.sip.message.Response;
import java.text.ParseException;
import java.util.List;
@@ -68,8 +67,7 @@
@Override
public void handForPlatform(RequestEvent evt, ParentPlatform parentPlatform, Element rootElement) {
- FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME);
- ServerTransaction serverTransaction = getServerTransaction(evt);
+ SIPRequest request = (SIPRequest) evt.getRequest();
Element snElement = rootElement.element("SN");
int sn = Integer.parseInt(snElement.getText());
Element deviceIDElement = rootElement.element("DeviceID");
@@ -104,7 +102,7 @@
// 鎺ユ敹褰曞儚鏁版嵁
recordEndEventListener.addEndEventHandler(deviceChannel.getDeviceId(), channelId, (recordInfo)->{
try {
- cmderFroPlatform.recordInfo(deviceChannel, parentPlatform, fromHeader.getTag(), recordInfo);
+ cmderFroPlatform.recordInfo(deviceChannel, parentPlatform, request.getFromTag(), recordInfo);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鍥炲褰曞儚鏁版嵁: {}", e.getMessage());
}
@@ -114,14 +112,14 @@
DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(endTime), sn, secrecy, type, (eventResult -> {
// 鍥炲200 OK
try {
- responseAck(serverTransaction, Response.OK);
+ responseAck(request, Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 褰曞儚鏌ヨ鍥炲: {}", e.getMessage());
}
}),(eventResult -> {
// 鏌ヨ澶辫触
try {
- responseAck(serverTransaction, eventResult.statusCode, eventResult.msg);
+ responseAck(request, eventResult.statusCode, eventResult.msg);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 褰曞儚鏌ヨ鍥炲: {}", e.getMessage());
}
@@ -133,13 +131,13 @@
}else if (channelSources.get(1).getCount() > 0) { // 鐩存挱娴�
// TODO
try {
- responseAck(serverTransaction, Response.NOT_IMPLEMENTED); // 鍥炲鏈疄鐜�
+ responseAck(request, Response.NOT_IMPLEMENTED); // 鍥炲鏈疄鐜�
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 褰曞儚鏌ヨ: {}", e.getMessage());
}
}else { // 閿欒鐨勮姹�
try {
- responseAck(serverTransaction, Response.BAD_REQUEST);
+ responseAck(request, Response.BAD_REQUEST);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 褰曞儚鏌ヨ: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/BroadcastResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/BroadcastResponseMessageHandler.java
index 8192043..9ee6ba9 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/BroadcastResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/BroadcastResponseMessageHandler.java
@@ -9,6 +9,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -18,7 +19,6 @@
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
-import javax.sip.ServerTransaction;
import javax.sip.SipException;
import javax.sip.message.Response;
import java.text.ParseException;
@@ -47,9 +47,8 @@
try {
String channelId = getText(rootElement, "DeviceID");
String key = DeferredResultHolder.CALLBACK_CMD_BROADCAST + device.getDeviceId() + channelId;
- ServerTransaction serverTransaction = getServerTransaction(evt);
// 鍥炲200 OK
- responseAck(serverTransaction, Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
// 姝ゅ鏄鏈钩鍙板彂鍑築roadcast鎸囦护鐨勫簲绛�
JSONObject json = new JSONObject();
XmlUtil.node2Json(rootElement, json);
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java
index 0df4610..52e0b7f 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java
@@ -14,6 +14,7 @@
import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.slf4j.Logger;
@@ -27,7 +28,6 @@
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
-import javax.sip.ServerTransaction;
import javax.sip.SipException;
import javax.sip.message.Response;
import java.text.ParseException;
@@ -71,9 +71,8 @@
public void handForDevice(RequestEvent evt, Device device, Element element) {
taskQueue.offer(new HandlerCatchData(evt, device, element));
// 鍥炲200 OK
- ServerTransaction serverTransaction = getServerTransaction(evt);
try {
- responseAck(serverTransaction, Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鐩綍鏌ヨ鍥炲: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/ConfigDownloadResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/ConfigDownloadResponseMessageHandler.java
index 175b89b..1710405 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/ConfigDownloadResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/ConfigDownloadResponseMessageHandler.java
@@ -10,6 +10,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,7 +53,7 @@
String key = DeferredResultHolder.CALLBACK_CMD_CONFIGDOWNLOAD + device.getDeviceId() + channelId;
try {
// 鍥炲200 OK
- responseAck(getServerTransaction(evt), Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 璁惧閰嶇疆鏌ヨ: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceControlResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceControlResponseMessageHandler.java
index d068aef..1eb95cc 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceControlResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceControlResponseMessageHandler.java
@@ -9,6 +9,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,7 +47,7 @@
public void handForDevice(RequestEvent evt, Device device, Element element) {
// 姝ゅ鏄鏈钩鍙板彂鍑篋eviceControl鎸囦护鐨勫簲绛�
try {
- responseAck(getServerTransaction(evt), Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 璁惧鎺у埗: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceInfoResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceInfoResponseMessageHandler.java
index 1544289..38bd939 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceInfoResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceInfoResponseMessageHandler.java
@@ -13,6 +13,7 @@
import com.genersoft.iot.vmp.service.IDeviceService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.slf4j.Logger;
@@ -21,11 +22,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
-import javax.sip.ServerTransaction;
import javax.sip.SipException;
import javax.sip.message.Response;
import java.text.ParseException;
@@ -75,14 +74,14 @@
logger.warn("[鎺ユ敹鍒癉eviceInfo搴旂瓟娑堟伅,浣嗘槸璁惧宸茬粡绂荤嚎]锛�" + (device != null ? device.getDeviceId():"" ));
return;
}
- ServerTransaction serverTransaction = getServerTransaction(evt);
+ SIPRequest request = (SIPRequest) evt.getRequest();
try {
rootElement = getRootElement(evt, device.getCharset());
- if (rootElement == null) {
+ if (rootElement == null) {
logger.warn("[ 鎺ユ敹鍒癉eviceInfo搴旂瓟娑堟伅 ] content cannot be null, {}", evt.getRequest());
try {
- responseAck(serverTransaction, Response.BAD_REQUEST);
+ responseAck((SIPRequest) evt.getRequest(), Response.BAD_REQUEST);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 DeviceInfo搴旂瓟娑堟伅 BAD_REQUEST: {}", e.getMessage());
}
@@ -110,7 +109,7 @@
}
try {
// 鍥炲200 OK
- responseAck(serverTransaction, Response.OK);
+ responseAck(request, Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 DeviceInfo搴旂瓟娑堟伅 200: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceStatusResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceStatusResponseMessageHandler.java
index e96ecec..494b8c9 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceStatusResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceStatusResponseMessageHandler.java
@@ -13,6 +13,7 @@
import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
import com.genersoft.iot.vmp.service.IDeviceService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -59,7 +60,7 @@
}
// 鍥炲200 OK
try {
- responseAck(getServerTransaction(evt), Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 璁惧鐘舵�佸簲绛斿洖澶�200OK: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java
index 5e6c39d..98b4429 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java
@@ -13,6 +13,7 @@
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.utils.GpsUtil;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.slf4j.Logger;
@@ -21,11 +22,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
-import javax.sip.ServerTransaction;
import javax.sip.SipException;
import javax.sip.message.Response;
import java.text.ParseException;
@@ -64,15 +63,14 @@
@Override
public void handForDevice(RequestEvent evt, Device device, Element rootElement) {
-
- ServerTransaction serverTransaction = getServerTransaction(evt);
+ SIPRequest request = (SIPRequest) evt.getRequest();
try {
rootElement = getRootElement(evt, device.getCharset());
if (rootElement == null) {
logger.warn("[ 绉诲姩璁惧浣嶇疆鏁版嵁鏌ヨ鍥炲 ] content cannot be null, {}", evt.getRequest());
try {
- responseAck(serverTransaction, Response.BAD_REQUEST);
+ responseAck(request, Response.BAD_REQUEST);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 绉诲姩璁惧浣嶇疆鏁版嵁鏌ヨ BAD_REQUEST: {}", e.getMessage());
}
@@ -138,7 +136,7 @@
redisCatchStorage.sendMobilePositionMsg(jsonObject);
//鍥炲 200 OK
try {
- responseAck(serverTransaction, Response.OK);
+ responseAck(request, Response.OK);
} catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 绉诲姩璁惧浣嶇疆鏁版嵁鏌ヨ 200: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/PresetQueryResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/PresetQueryResponseMessageHandler.java
index 9209183..862a8ee 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/PresetQueryResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/PresetQueryResponseMessageHandler.java
@@ -7,6 +7,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.slf4j.Logger;
@@ -17,7 +18,6 @@
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
-import javax.sip.ServerTransaction;
import javax.sip.SipException;
import javax.sip.message.Response;
import java.text.ParseException;
@@ -51,7 +51,7 @@
@Override
public void handForDevice(RequestEvent evt, Device device, Element element) {
- ServerTransaction serverTransaction = getServerTransaction(evt);
+ SIPRequest request = (SIPRequest) evt.getRequest();
try {
Element rootElement = getRootElement(evt, device.getCharset());
@@ -59,7 +59,7 @@
if (rootElement == null) {
logger.warn("[ 璁惧棰勭疆浣嶆煡璇㈠簲绛� ] content cannot be null, {}", evt.getRequest());
try {
- responseAck(serverTransaction, Response.BAD_REQUEST);
+ responseAck(request, Response.BAD_REQUEST);
} catch (InvalidArgumentException | ParseException | SipException e) {
logger.error("[鍛戒护鍙戦�佸け璐 璁惧棰勭疆浣嶆煡璇㈠簲绛斿鐞�: {}", e.getMessage());
}
@@ -72,7 +72,7 @@
String key = DeferredResultHolder.CALLBACK_CMD_PRESETQUERY + deviceId;
if (snElement == null || presetListNumElement == null) {
try {
- responseAck(serverTransaction, Response.BAD_REQUEST, "xml error");
+ responseAck(request, Response.BAD_REQUEST, "xml error");
} catch (InvalidArgumentException | ParseException | SipException e) {
logger.error("[鍛戒护鍙戦�佸け璐 璁惧棰勭疆浣嶆煡璇㈠簲绛斿鐞�: {}", e.getMessage());
}
@@ -103,7 +103,7 @@
requestMessage.setData(presetQuerySipReqList);
deferredResultHolder.invokeAllResult(requestMessage);
try {
- responseAck(serverTransaction, Response.OK);
+ responseAck(request, Response.OK);
} catch (InvalidArgumentException | ParseException | SipException e) {
logger.error("[鍛戒护鍙戦�佸け璐 璁惧棰勭疆浣嶆煡璇㈠簲绛斿鐞�: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
index 3c75536..286dd56 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
@@ -10,6 +10,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
+import gov.nist.javax.sip.message.SIPRequest;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.slf4j.Logger;
@@ -71,7 +72,7 @@
public void handForDevice(RequestEvent evt, Device device, Element rootElement) {
try {
// 鍥炲200 OK
- responseAck(getServerTransaction(evt), Response.OK);
+ responseAck((SIPRequest) evt.getRequest(), Response.OK);
}catch (SipException | InvalidArgumentException | ParseException e) {
logger.error("[鍛戒护鍙戦�佸け璐 鍥芥爣绾ц仈 鍥芥爣褰曞儚: {}", e.getMessage());
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java
index 3cca115..8b8613d 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/InviteResponseProcessor.java
@@ -5,6 +5,7 @@
import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
+import com.genersoft.iot.vmp.gb28181.transmit.SIPSender;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderProvider;
import com.genersoft.iot.vmp.gb28181.transmit.event.response.SIPResponseProcessorAbstract;
@@ -49,25 +50,14 @@
private final String method = "INVITE";
@Autowired
- private VideoStreamSessionManager streamSession;
-
- @Autowired
private SIPProcessorObserver sipProcessorObserver;
- @Autowired
- private SipConfig sipConfig;
@Autowired
private SipFactory sipFactory;
@Autowired
- private GitUtil gitUtil;
-
- @Autowired
- private ISIPCommander commander;
-
- @Autowired
- private IDeviceService deviceService;
+ private SIPSender sipSender;
@Autowired
private SIPRequestHeaderProvider headerProvider;
@@ -121,8 +111,7 @@
Request reqAck = headerProvider.createAckRequest(requestUri, response);
logger.info("[鍥炲ack] {}-> {}:{} ", sdp.getOrigin().getUsername(), event.getRemoteIpAddress(), event.getRemotePort());
- commander.transmitRequest(response.getTopmostViaHeader().getTransport(), reqAck, null, null);
-
+ sipSender.transmitRequest(reqAck);
}
} catch (InvalidArgumentException | ParseException | SipException | SdpParseException e) {
logger.info("[鐐规挱鍥炲ACK]锛屽紓甯革細", e );
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
index bf2a0ee..26c8e4e 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
@@ -4,6 +4,7 @@
import gov.nist.javax.sip.address.AddressImpl;
import gov.nist.javax.sip.address.SipUri;
import gov.nist.javax.sip.header.Subject;
+import org.springframework.util.ObjectUtils;
import javax.sip.PeerUnavailableException;
import javax.sip.SipFactory;
@@ -52,10 +53,15 @@
public static UserAgentHeader createUserAgentHeader(SipFactory sipFactory, GitUtil gitUtil) throws PeerUnavailableException, ParseException {
List<String> agentParam = new ArrayList<>();
- agentParam.add("WVP-Pro v");
- if (gitUtil != null && gitUtil.getCommitTime() != null) {
- agentParam.add(gitUtil.getBuildVersion() + ".");
- agentParam.add(gitUtil.getCommitTime());
+ agentParam.add("WVP-Pro ");
+ if (gitUtil != null ) {
+ if (!ObjectUtils.isEmpty(gitUtil.getBuildVersion())) {
+ agentParam.add("v");
+ agentParam.add(gitUtil.getBuildVersion() + ".");
+ }
+ if (!ObjectUtils.isEmpty(gitUtil.getCommitTime())) {
+ agentParam.add(gitUtil.getCommitTime());
+ }
}
return sipFactory.createHeaderFactory().createUserAgentHeader(agentParam);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/utils/GitUtil.java b/src/main/java/com/genersoft/iot/vmp/utils/GitUtil.java
index d6dc943..ca637dd 100644
--- a/src/main/java/com/genersoft/iot/vmp/utils/GitUtil.java
+++ b/src/main/java/com/genersoft/iot/vmp/utils/GitUtil.java
@@ -11,22 +11,22 @@
@PropertySource(value = {"classpath:git.properties" }, ignoreResourceNotFound = true)
public class GitUtil {
- @Value("${git.branch:null}")
+ @Value("${git.branch:}")
private String branch;
- @Value("${git.commit.id:null}")
+ @Value("${git.commit.id:}")
private String gitCommitId;
- @Value("${git.remote.origin.url:null}")
+ @Value("${git.remote.origin.url:}")
private String gitUrl;
- @Value("${git.build.time:null}")
+ @Value("${git.build.time:}")
private String buildDate;
- @Value("${git.build.version:null}")
+ @Value("${git.build.version:}")
private String buildVersion;
- @Value("${git.commit.id.abbrev:null}")
+ @Value("${git.commit.id.abbrev:}")
private String commitIdShort;
- @Value("${git.commit.time:null}")
+ @Value("${git.commit.time:}")
private String commitTime;
public String getGitCommitId() {
--
Gitblit v1.8.0