From ffb21248cb270475ce9156b5056e591e14cbc20d Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 30 五月 2023 11:20:22 +0800
Subject: [PATCH] 去除多余配置
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java | 133 +++++++++++++++++++++++++-------------------
1 files changed, 75 insertions(+), 58 deletions(-)
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
index a240ce4..e8066b7 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
@@ -5,22 +5,19 @@
import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
import com.genersoft.iot.vmp.utils.GitUtil;
import gov.nist.javax.sip.SipProviderImpl;
-import gov.nist.javax.sip.message.SIPRequest;
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 org.springframework.util.ObjectUtils;
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.net.InetAddress;
import java.text.ParseException;
/**
@@ -49,67 +46,87 @@
transmitRequest(ip, message, errorEvent, null);
}
- public void transmitRequest(String ip, 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锛� 浣跨敤榛樿鐨刄DP鏂瑰紡澶勭悊鏁版嵁");
- }else {
- transport = viaHeader.getTransport();
- }
- if (message.getHeader(UserAgentHeader.NAME) == null) {
- try {
- message.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
- } catch (ParseException e) {
- logger.error("娣诲姞UserAgentHeader澶辫触", e);
+ public void transmitRequest(String ip, Message message, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws SipException {
+ ViaHeader viaHeader = (ViaHeader)message.getHeader(ViaHeader.NAME);
+ String transport = "UDP";
+ if (viaHeader == null) {
+ logger.warn("[娑堟伅澶寸己澶盷锛� ViaHeader锛� 浣跨敤榛樿鐨刄DP鏂瑰紡澶勭悊鏁版嵁");
+ }else {
+ transport = viaHeader.getTransport();
}
- }
-
- 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)) {
- SipProviderImpl tcpSipProvider = sipLayer.getTcpSipProvider(ip);
- if (tcpSipProvider == null) {
- logger.error("[鍙戦�佷俊鎭け璐 鏈壘鍒皌cp://{}鐨勭洃鍚俊鎭�", ip);
- return;
- }
- if (message instanceof Request) {
- tcpSipProvider.sendRequest((Request)message);
- }else if (message instanceof Response) {
- tcpSipProvider.sendResponse((Response)message);
+ if (message.getHeader(UserAgentHeader.NAME) == null) {
+ try {
+ message.addHeader(SipUtils.createUserAgentHeader(gitUtil));
+ } catch (ParseException e) {
+ logger.error("娣诲姞UserAgentHeader澶辫触", e);
+ }
}
- } else if ("UDP".equals(transport)) {
- SipProviderImpl sipProvider = sipLayer.getUdpSipProvider(ip);
- if (sipProvider == null) {
- logger.error("[鍙戦�佷俊鎭け璐 鏈壘鍒皍dp://{}鐨勭洃鍚俊鎭�", ip);
- return;
+ 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 (message instanceof Request) {
- sipProvider.sendRequest((Request)message);
- }else if (message instanceof Response) {
- sipProvider.sendResponse((Response)message);
+ // 娣诲姞璁㈤槄
+ if (okEvent != null) {
+ sipSubscribe.addOkSubscribe(callIdHeader.getCallId(), eventResult -> {
+ okEvent.response(eventResult);
+ sipSubscribe.removeOkSubscribe(eventResult.callId);
+ sipSubscribe.removeErrorSubscribe(eventResult.callId);
+ });
}
- }
+ if ("TCP".equals(transport)) {
+ SipProviderImpl tcpSipProvider = sipLayer.getTcpSipProvider(ip);
+ if (tcpSipProvider == null) {
+ logger.error("[鍙戦�佷俊鎭け璐 鏈壘鍒皌cp://{}鐨勭洃鍚俊鎭�", ip);
+ return;
+ }
+ if (message instanceof Request) {
+ tcpSipProvider.sendRequest((Request)message);
+ }else if (message instanceof Response) {
+ tcpSipProvider.sendResponse((Response)message);
+ }
+
+ } else if ("UDP".equals(transport)) {
+ SipProviderImpl sipProvider = sipLayer.getUdpSipProvider(ip);
+ if (sipProvider == null) {
+ logger.error("[鍙戦�佷俊鎭け璐 鏈壘鍒皍dp://{}鐨勭洃鍚俊鎭�", ip);
+ return;
+ }
+ if (message instanceof Request) {
+ sipProvider.sendRequest((Request)message);
+ }else if (message instanceof Response) {
+ sipProvider.sendResponse((Response)message);
+ }
+ }
}
public CallIdHeader getNewCallIdHeader(String ip, String transport){
- return transport.equalsIgnoreCase("TCP") ? sipLayer.getTcpSipProvider(ip).getNewCallId()
- : sipLayer.getUdpSipProvider(ip).getNewCallId();
+ if (ObjectUtils.isEmpty(transport)) {
+ return sipLayer.getUdpSipProvider().getNewCallId();
+ }
+ SipProviderImpl sipProvider;
+ if (ObjectUtils.isEmpty(ip)) {
+ sipProvider = transport.equalsIgnoreCase("TCP") ? sipLayer.getTcpSipProvider()
+ : sipLayer.getUdpSipProvider();
+ }else {
+ sipProvider = transport.equalsIgnoreCase("TCP") ? sipLayer.getTcpSipProvider(ip)
+ : sipLayer.getUdpSipProvider(ip);
+ }
+
+ if (sipProvider == null) {
+ sipProvider = sipLayer.getUdpSipProvider();
+ }
+
+ if (sipProvider != null) {
+ return sipProvider.getNewCallId();
+ }else {
+ logger.warn("[鏂板缓CallIdHeader澶辫触]锛� ip={}, transport={}", ip, transport);
+ return null;
+ }
}
}
--
Gitblit v1.8.0