From 1af77ab5f7c11a4b3d59c1989b51b9fca29679ce Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 18 十月 2022 22:18:49 +0800 Subject: [PATCH] Merge pull request #645 from IKangXu/wvp-28181-2.0 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java | 102 +++++++++++--------------------------------------- 1 files changed, 23 insertions(+), 79 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java index bfc1ea9..8f0f6c7 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONObject; import com.genersoft.iot.vmp.gb28181.bean.*; import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; +import com.genersoft.iot.vmp.gb28181.transmit.SIPSender; import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderPlarformProvider; import com.genersoft.iot.vmp.gb28181.utils.SipUtils; @@ -13,11 +14,7 @@ import com.genersoft.iot.vmp.service.IMediaServerService; import com.genersoft.iot.vmp.service.bean.GPSMsgInfo; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; -import com.genersoft.iot.vmp.utils.GitUtil; -import com.genersoft.iot.vmp.utils.SerializeUtils; -import gov.nist.javax.sip.SIPConstants; import gov.nist.javax.sip.SipProviderImpl; -import gov.nist.javax.sip.SipStackImpl; import gov.nist.javax.sip.message.MessageFactoryImpl; import gov.nist.javax.sip.message.SIPRequest; import org.slf4j.Logger; @@ -27,7 +24,6 @@ import org.springframework.context.annotation.DependsOn; import org.springframework.context.annotation.Lazy; import org.springframework.lang.Nullable; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; @@ -59,21 +55,11 @@ @Autowired private ZLMRTPServerFactory zlmrtpServerFactory; - @Lazy - @Autowired - @Qualifier(value="tcpSipProvider") - private SipProviderImpl tcpSipProvider; - - @Lazy - @Autowired - @Qualifier(value="udpSipProvider") - private SipProviderImpl udpSipProvider; - @Autowired private SipFactory sipFactory; @Autowired - private SubscribeHolder subscribeHolder; + private SIPSender sipSender; @Override public void register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException { @@ -90,13 +76,7 @@ SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) throws SipException, InvalidArgumentException, ParseException { Request request; if (!registerAgain ) { - CallIdHeader callIdHeader = null; - if(parentPlatform.getTransport().equalsIgnoreCase("TCP")) { - callIdHeader = tcpSipProvider.getNewCallId(); - } - if(parentPlatform.getTransport().equalsIgnoreCase("UDP")) { - callIdHeader = udpSipProvider.getNewCallId(); - } + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, redisCatchStorage.getCSEQ(), SipUtils.getNewFromTag(), @@ -118,12 +98,11 @@ }); }else { - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() - : udpSipProvider.getNewCallId(); + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, SipUtils.getNewFromTag(), null, callId, www, callIdHeader, isRegister); } - transmitRequest(parentPlatform, request, null, okEvent); + sipSender.transmitRequest( request, null, okEvent); } @Override @@ -138,8 +117,7 @@ keepaliveXml.append("<Status>OK</Status>\r\n"); keepaliveXml.append("</Notify>\r\n"); - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() - : udpSipProvider.getNewCallId(); + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); Request request = headerProviderPlatformProvider.createMessageRequest( parentPlatform, @@ -147,37 +125,8 @@ SipUtils.getNewFromTag(), SipUtils.getNewViaTag(), callIdHeader); - transmitRequest(parentPlatform, request, errorEvent, okEvent); + sipSender.transmitRequest( request, errorEvent, okEvent); return callIdHeader.getCallId(); - } - - private void transmitRequest(ParentPlatform parentPlatform, Request request) throws SipException { - transmitRequest(parentPlatform, request, null, null); - } - - private void transmitRequest(ParentPlatform parentPlatform, Request request, SipSubscribe.Event errorEvent) throws SipException { - transmitRequest(parentPlatform, request, errorEvent, null); - } - - private void transmitRequest(ParentPlatform parentPlatform, Request request, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws SipException { - logger.debug("\n鍙戦�佹秷鎭細\n{}", request); - if("TCP".equalsIgnoreCase(parentPlatform.getTransport())) { - tcpSipProvider.sendRequest(request); - - } else if("UDP".equalsIgnoreCase(parentPlatform.getTransport())) { - udpSipProvider.sendRequest(request); - } - - CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME); - // 娣诲姞閿欒璁㈤槄 - if (errorEvent != null) { - sipSubscribe.addErrorSubscribe(callIdHeader.getCallId(), errorEvent); - } - // 娣诲姞璁㈤槄 - if (okEvent != null) { - sipSubscribe.addOkSubscribe(callIdHeader.getCallId(), okEvent); - } - } /** @@ -199,11 +148,10 @@ String catalogXml = getCatalogXml(channels, sn, parentPlatform, size); // callid - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() - : udpSipProvider.getNewCallId(); + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, catalogXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); - transmitRequest(parentPlatform, request); + sipSender.transmitRequest( request); } @@ -286,11 +234,10 @@ } String catalogXml = getCatalogXml(deviceChannels, sn, parentPlatform, channels.size()); // callid - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() - : udpSipProvider.getNewCallId(); + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, catalogXml, fromTag, SipUtils.getNewViaTag(), callIdHeader); - transmitRequest(parentPlatform, request, null, eventResult -> { + sipSender.transmitRequest( request, null, eventResult -> { int indexNext = index + parentPlatform.getCatalogGroup(); try { sendCatalogResponse(channels, parentPlatform, sn, fromTag, indexNext); @@ -326,11 +273,10 @@ deviceInfoXml.append("<Result>OK</Result>\r\n"); deviceInfoXml.append("</Response>\r\n"); - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() - : udpSipProvider.getNewCallId(); + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceInfoXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); - transmitRequest(parentPlatform, request); + sipSender.transmitRequest( request); } /** @@ -357,11 +303,10 @@ deviceStatusXml.append("<Status>OK</Status>\r\n"); deviceStatusXml.append("</Response>\r\n"); - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() - : udpSipProvider.getNewCallId(); + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); - transmitRequest(parentPlatform, request); + sipSender.transmitRequest( request); } @@ -420,11 +365,10 @@ deviceStatusXml.append("</info>\r\n"); deviceStatusXml.append("</Notify>\r\n"); - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() - : udpSipProvider.getNewCallId(); + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), SipUtils.getNewFromTag(), SipUtils.getNewViaTag(), callIdHeader); - transmitRequest(parentPlatform, request); + sipSender.transmitRequest( request); } @@ -471,7 +415,7 @@ SIPRequest notifyRequest = headerProviderPlatformProvider.createNotifyRequest(parentPlatform, catalogXmlContent, subscribeInfo); - transmitRequest(parentPlatform, notifyRequest); + sipSender.transmitRequest( notifyRequest); } private String getCatalogXmlContentForCatalogAddOrUpdate(ParentPlatform parentPlatform, List<DeviceChannel> channels, int sumNum, String type, SubscribeInfo subscribeInfo) { @@ -636,10 +580,10 @@ recordXml.append("</Response>\r\n"); // callid - CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() - : udpSipProvider.getNewCallId(); + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); + Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, recordXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); - transmitRequest(parentPlatform, request); + sipSender.transmitRequest( request); } @@ -663,7 +607,7 @@ SIPRequest messageRequest = (SIPRequest)headerProviderPlatformProvider.createMessageRequest(platform, mediaStatusXml.toString(), sendRtpItem); - transmitRequest(platform, messageRequest); + sipSender.transmitRequest(messageRequest); } @@ -699,6 +643,6 @@ if (byeRequest == null) { logger.warn("[鍚戜笂绾у彂閫乥ye]锛氭棤娉曞垱寤� byeRequest"); } - transmitRequest(platform,byeRequest); + sipSender.transmitRequest(byeRequest); } } -- Gitblit v1.8.0