Commit 86b56ccc6de86648b00f796334e6ffa3bd291ddc
1 parent
74714711
去除国标级联中ServerTransaction的使用
Showing
1 changed file
with
23 additions
and
74 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
| @@ -3,6 +3,7 @@ package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl; | @@ -3,6 +3,7 @@ package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl; | ||
| 3 | import com.alibaba.fastjson.JSONObject; | 3 | import com.alibaba.fastjson.JSONObject; |
| 4 | import com.genersoft.iot.vmp.gb28181.bean.*; | 4 | import com.genersoft.iot.vmp.gb28181.bean.*; |
| 5 | import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; | 5 | import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; |
| 6 | +import com.genersoft.iot.vmp.gb28181.transmit.SIPSender; | ||
| 6 | import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; | 7 | import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; |
| 7 | import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderPlarformProvider; | 8 | import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderPlarformProvider; |
| 8 | import com.genersoft.iot.vmp.gb28181.utils.SipUtils; | 9 | import com.genersoft.iot.vmp.gb28181.utils.SipUtils; |
| @@ -54,21 +55,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -54,21 +55,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 54 | @Autowired | 55 | @Autowired |
| 55 | private ZLMRTPServerFactory zlmrtpServerFactory; | 56 | private ZLMRTPServerFactory zlmrtpServerFactory; |
| 56 | 57 | ||
| 57 | - @Lazy | ||
| 58 | - @Autowired | ||
| 59 | - @Qualifier(value="tcpSipProvider") | ||
| 60 | - private SipProviderImpl tcpSipProvider; | ||
| 61 | - | ||
| 62 | - @Lazy | ||
| 63 | - @Autowired | ||
| 64 | - @Qualifier(value="udpSipProvider") | ||
| 65 | - private SipProviderImpl udpSipProvider; | ||
| 66 | - | ||
| 67 | @Autowired | 58 | @Autowired |
| 68 | private SipFactory sipFactory; | 59 | private SipFactory sipFactory; |
| 69 | 60 | ||
| 70 | @Autowired | 61 | @Autowired |
| 71 | - private SubscribeHolder subscribeHolder; | 62 | + private SIPSender sipSender; |
| 72 | 63 | ||
| 73 | @Override | 64 | @Override |
| 74 | public void register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException { | 65 | public void register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException { |
| @@ -85,13 +76,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -85,13 +76,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 85 | SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) throws SipException, InvalidArgumentException, ParseException { | 76 | SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) throws SipException, InvalidArgumentException, ParseException { |
| 86 | Request request; | 77 | Request request; |
| 87 | if (!registerAgain ) { | 78 | if (!registerAgain ) { |
| 88 | - CallIdHeader callIdHeader = null; | ||
| 89 | - if(parentPlatform.getTransport().equalsIgnoreCase("TCP")) { | ||
| 90 | - callIdHeader = tcpSipProvider.getNewCallId(); | ||
| 91 | - } | ||
| 92 | - if(parentPlatform.getTransport().equalsIgnoreCase("UDP")) { | ||
| 93 | - callIdHeader = udpSipProvider.getNewCallId(); | ||
| 94 | - } | 79 | + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); |
| 95 | 80 | ||
| 96 | request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, | 81 | request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, |
| 97 | redisCatchStorage.getCSEQ(), SipUtils.getNewFromTag(), | 82 | redisCatchStorage.getCSEQ(), SipUtils.getNewFromTag(), |
| @@ -113,12 +98,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -113,12 +98,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 113 | }); | 98 | }); |
| 114 | 99 | ||
| 115 | }else { | 100 | }else { |
| 116 | - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() | ||
| 117 | - : udpSipProvider.getNewCallId(); | 101 | + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); |
| 118 | request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, SipUtils.getNewFromTag(), null, callId, www, callIdHeader, isRegister); | 102 | request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, SipUtils.getNewFromTag(), null, callId, www, callIdHeader, isRegister); |
| 119 | } | 103 | } |
| 120 | 104 | ||
| 121 | - transmitRequest(parentPlatform, request, null, okEvent); | 105 | + sipSender.transmitRequest( request, null, okEvent); |
| 122 | } | 106 | } |
| 123 | 107 | ||
| 124 | @Override | 108 | @Override |
| @@ -133,8 +117,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -133,8 +117,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 133 | keepaliveXml.append("<Status>OK</Status>\r\n"); | 117 | keepaliveXml.append("<Status>OK</Status>\r\n"); |
| 134 | keepaliveXml.append("</Notify>\r\n"); | 118 | keepaliveXml.append("</Notify>\r\n"); |
| 135 | 119 | ||
| 136 | - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() | ||
| 137 | - : udpSipProvider.getNewCallId(); | 120 | + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); |
| 138 | 121 | ||
| 139 | Request request = headerProviderPlatformProvider.createMessageRequest( | 122 | Request request = headerProviderPlatformProvider.createMessageRequest( |
| 140 | parentPlatform, | 123 | parentPlatform, |
| @@ -142,39 +125,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -142,39 +125,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 142 | SipUtils.getNewFromTag(), | 125 | SipUtils.getNewFromTag(), |
| 143 | SipUtils.getNewViaTag(), | 126 | SipUtils.getNewViaTag(), |
| 144 | callIdHeader); | 127 | callIdHeader); |
| 145 | - transmitRequest(parentPlatform, request, errorEvent, okEvent); | 128 | + sipSender.transmitRequest( request, errorEvent, okEvent); |
| 146 | return callIdHeader.getCallId(); | 129 | return callIdHeader.getCallId(); |
| 147 | } | 130 | } |
| 148 | 131 | ||
| 149 | - private void transmitRequest(ParentPlatform parentPlatform, Request request) throws SipException { | ||
| 150 | - transmitRequest(parentPlatform, request, null, null); | ||
| 151 | - } | ||
| 152 | - | ||
| 153 | - private void transmitRequest(ParentPlatform parentPlatform, Request request, SipSubscribe.Event errorEvent) throws SipException { | ||
| 154 | - transmitRequest(parentPlatform, request, errorEvent, null); | ||
| 155 | - } | ||
| 156 | - | ||
| 157 | - private void transmitRequest(ParentPlatform parentPlatform, Request request, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws SipException { | ||
| 158 | - logger.debug("\n发送消息:\n{}", request); | ||
| 159 | - if("TCP".equalsIgnoreCase(parentPlatform.getTransport())) { | ||
| 160 | - tcpSipProvider.sendRequest(request); | ||
| 161 | - | ||
| 162 | - } else if("UDP".equalsIgnoreCase(parentPlatform.getTransport())) { | ||
| 163 | - udpSipProvider.sendRequest(request); | ||
| 164 | - } | ||
| 165 | - | ||
| 166 | - CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME); | ||
| 167 | - // 添加错误订阅 | ||
| 168 | - if (errorEvent != null) { | ||
| 169 | - sipSubscribe.addErrorSubscribe(callIdHeader.getCallId(), errorEvent); | ||
| 170 | - } | ||
| 171 | - // 添加订阅 | ||
| 172 | - if (okEvent != null) { | ||
| 173 | - sipSubscribe.addOkSubscribe(callIdHeader.getCallId(), okEvent); | ||
| 174 | - } | ||
| 175 | - | ||
| 176 | - } | ||
| 177 | - | ||
| 178 | /** | 132 | /** |
| 179 | * 向上级回复通道信息 | 133 | * 向上级回复通道信息 |
| 180 | * @param channel 通道信息 | 134 | * @param channel 通道信息 |
| @@ -194,11 +148,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -194,11 +148,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 194 | String catalogXml = getCatalogXml(channels, sn, parentPlatform, size); | 148 | String catalogXml = getCatalogXml(channels, sn, parentPlatform, size); |
| 195 | 149 | ||
| 196 | // callid | 150 | // callid |
| 197 | - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() | ||
| 198 | - : udpSipProvider.getNewCallId(); | 151 | + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); |
| 199 | 152 | ||
| 200 | Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, catalogXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); | 153 | Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, catalogXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); |
| 201 | - transmitRequest(parentPlatform, request); | 154 | + sipSender.transmitRequest( request); |
| 202 | 155 | ||
| 203 | } | 156 | } |
| 204 | 157 | ||
| @@ -281,11 +234,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -281,11 +234,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 281 | } | 234 | } |
| 282 | String catalogXml = getCatalogXml(deviceChannels, sn, parentPlatform, channels.size()); | 235 | String catalogXml = getCatalogXml(deviceChannels, sn, parentPlatform, channels.size()); |
| 283 | // callid | 236 | // callid |
| 284 | - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() | ||
| 285 | - : udpSipProvider.getNewCallId(); | 237 | + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); |
| 286 | 238 | ||
| 287 | Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, catalogXml, fromTag, SipUtils.getNewViaTag(), callIdHeader); | 239 | Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, catalogXml, fromTag, SipUtils.getNewViaTag(), callIdHeader); |
| 288 | - transmitRequest(parentPlatform, request, null, eventResult -> { | 240 | + sipSender.transmitRequest( request, null, eventResult -> { |
| 289 | int indexNext = index + parentPlatform.getCatalogGroup(); | 241 | int indexNext = index + parentPlatform.getCatalogGroup(); |
| 290 | try { | 242 | try { |
| 291 | sendCatalogResponse(channels, parentPlatform, sn, fromTag, indexNext); | 243 | sendCatalogResponse(channels, parentPlatform, sn, fromTag, indexNext); |
| @@ -321,11 +273,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -321,11 +273,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 321 | deviceInfoXml.append("<Result>OK</Result>\r\n"); | 273 | deviceInfoXml.append("<Result>OK</Result>\r\n"); |
| 322 | deviceInfoXml.append("</Response>\r\n"); | 274 | deviceInfoXml.append("</Response>\r\n"); |
| 323 | 275 | ||
| 324 | - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() | ||
| 325 | - : udpSipProvider.getNewCallId(); | 276 | + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); |
| 326 | 277 | ||
| 327 | Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceInfoXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); | 278 | Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceInfoXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); |
| 328 | - transmitRequest(parentPlatform, request); | 279 | + sipSender.transmitRequest( request); |
| 329 | } | 280 | } |
| 330 | 281 | ||
| 331 | /** | 282 | /** |
| @@ -352,11 +303,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -352,11 +303,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 352 | deviceStatusXml.append("<Status>OK</Status>\r\n"); | 303 | deviceStatusXml.append("<Status>OK</Status>\r\n"); |
| 353 | deviceStatusXml.append("</Response>\r\n"); | 304 | deviceStatusXml.append("</Response>\r\n"); |
| 354 | 305 | ||
| 355 | - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() | ||
| 356 | - : udpSipProvider.getNewCallId(); | 306 | + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); |
| 357 | 307 | ||
| 358 | Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); | 308 | Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); |
| 359 | - transmitRequest(parentPlatform, request); | 309 | + sipSender.transmitRequest( request); |
| 360 | 310 | ||
| 361 | } | 311 | } |
| 362 | 312 | ||
| @@ -415,11 +365,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -415,11 +365,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 415 | deviceStatusXml.append("</info>\r\n"); | 365 | deviceStatusXml.append("</info>\r\n"); |
| 416 | deviceStatusXml.append("</Notify>\r\n"); | 366 | deviceStatusXml.append("</Notify>\r\n"); |
| 417 | 367 | ||
| 418 | - CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId() | ||
| 419 | - : udpSipProvider.getNewCallId(); | 368 | + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); |
| 420 | 369 | ||
| 421 | Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), SipUtils.getNewFromTag(), SipUtils.getNewViaTag(), callIdHeader); | 370 | Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), SipUtils.getNewFromTag(), SipUtils.getNewViaTag(), callIdHeader); |
| 422 | - transmitRequest(parentPlatform, request); | 371 | + sipSender.transmitRequest( request); |
| 423 | 372 | ||
| 424 | } | 373 | } |
| 425 | 374 | ||
| @@ -466,7 +415,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -466,7 +415,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 466 | 415 | ||
| 467 | SIPRequest notifyRequest = headerProviderPlatformProvider.createNotifyRequest(parentPlatform, catalogXmlContent, subscribeInfo); | 416 | SIPRequest notifyRequest = headerProviderPlatformProvider.createNotifyRequest(parentPlatform, catalogXmlContent, subscribeInfo); |
| 468 | 417 | ||
| 469 | - transmitRequest(parentPlatform, notifyRequest); | 418 | + sipSender.transmitRequest( notifyRequest); |
| 470 | } | 419 | } |
| 471 | 420 | ||
| 472 | private String getCatalogXmlContentForCatalogAddOrUpdate(ParentPlatform parentPlatform, List<DeviceChannel> channels, int sumNum, String type, SubscribeInfo subscribeInfo) { | 421 | private String getCatalogXmlContentForCatalogAddOrUpdate(ParentPlatform parentPlatform, List<DeviceChannel> channels, int sumNum, String type, SubscribeInfo subscribeInfo) { |
| @@ -631,10 +580,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -631,10 +580,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 631 | recordXml.append("</Response>\r\n"); | 580 | recordXml.append("</Response>\r\n"); |
| 632 | 581 | ||
| 633 | // callid | 582 | // callid |
| 634 | - CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() | ||
| 635 | - : udpSipProvider.getNewCallId(); | 583 | + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getTransport()); |
| 584 | + | ||
| 636 | Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, recordXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); | 585 | Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, recordXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader); |
| 637 | - transmitRequest(parentPlatform, request); | 586 | + sipSender.transmitRequest( request); |
| 638 | 587 | ||
| 639 | } | 588 | } |
| 640 | 589 | ||
| @@ -658,7 +607,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -658,7 +607,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 658 | SIPRequest messageRequest = (SIPRequest)headerProviderPlatformProvider.createMessageRequest(platform, mediaStatusXml.toString(), | 607 | SIPRequest messageRequest = (SIPRequest)headerProviderPlatformProvider.createMessageRequest(platform, mediaStatusXml.toString(), |
| 659 | sendRtpItem); | 608 | sendRtpItem); |
| 660 | 609 | ||
| 661 | - transmitRequest(platform, messageRequest); | 610 | + sipSender.transmitRequest(messageRequest); |
| 662 | 611 | ||
| 663 | } | 612 | } |
| 664 | 613 | ||
| @@ -694,6 +643,6 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | @@ -694,6 +643,6 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { | ||
| 694 | if (byeRequest == null) { | 643 | if (byeRequest == null) { |
| 695 | logger.warn("[向上级发送bye]:无法创建 byeRequest"); | 644 | logger.warn("[向上级发送bye]:无法创建 byeRequest"); |
| 696 | } | 645 | } |
| 697 | - transmitRequest(platform,byeRequest); | 646 | + sipSender.transmitRequest(byeRequest); |
| 698 | } | 647 | } |
| 699 | } | 648 | } |