From 61fc5b656a8dc48e4f0ad66577e39a93683b620a Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 02 十一月 2021 16:59:22 +0800 Subject: [PATCH] 修复错误的类型判断导致的过期事件无法监听 --- src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java | 36 +++++++++++++++++++++++++++--------- 1 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java b/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java index e71ac05..1afabb7 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java @@ -9,6 +9,7 @@ import javax.sip.*; import javax.sip.header.CallIdHeader; +import javax.sip.header.Header; import javax.sip.message.Response; import com.genersoft.iot.vmp.gb28181.event.SipSubscribe; @@ -93,15 +94,15 @@ ListeningPoint tcpListeningPoint = null; SipProviderImpl tcpSipProvider = null; try { - tcpListeningPoint = sipStack.createListeningPoint(sipConfig.getMonitorIp(), sipConfig.getSipPort(), "TCP"); + tcpListeningPoint = sipStack.createListeningPoint(sipConfig.getMonitorIp(), sipConfig.getPort(), "TCP"); tcpSipProvider = (SipProviderImpl)sipStack.createSipProvider(tcpListeningPoint); tcpSipProvider.addSipListener(this); - logger.info("Sip Server TCP 鍚姩鎴愬姛 port {" + sipConfig.getMonitorIp() + ":" + sipConfig.getSipPort() + "}"); + logger.info("Sip Server TCP 鍚姩鎴愬姛 port {" + sipConfig.getMonitorIp() + ":" + sipConfig.getPort() + "}"); } catch (TransportNotSupportedException e) { e.printStackTrace(); } catch (InvalidArgumentException e) { logger.error("鏃犳硶浣跨敤 [ {}:{} ]浣滀负SIP[ TCP ]鏈嶅姟锛屽彲鎺掓煡: 1. sip.monitor-ip 鏄惁涓烘湰鏈虹綉鍗P; 2. sip.port 鏄惁宸茶鍗犵敤" - , sipConfig.getMonitorIp(), sipConfig.getSipPort()); + , sipConfig.getMonitorIp(), sipConfig.getPort()); } catch (TooManyListenersException e) { e.printStackTrace(); } catch (ObjectInUseException e) { @@ -116,7 +117,7 @@ ListeningPoint udpListeningPoint = null; SipProviderImpl udpSipProvider = null; try { - udpListeningPoint = sipStack.createListeningPoint(sipConfig.getMonitorIp(), sipConfig.getSipPort(), "UDP"); + udpListeningPoint = sipStack.createListeningPoint(sipConfig.getMonitorIp(), sipConfig.getPort(), "UDP"); udpSipProvider = (SipProviderImpl)sipStack.createSipProvider(udpListeningPoint); udpSipProvider.addSipListener(this); // udpSipProvider.setAutomaticDialogSupportEnabled(false); @@ -124,13 +125,13 @@ e.printStackTrace(); } catch (InvalidArgumentException e) { logger.error("鏃犳硶浣跨敤 [ {}:{} ]浣滀负SIP[ UDP ]鏈嶅姟锛屽彲鎺掓煡: 1. sip.monitor-ip 鏄惁涓烘湰鏈虹綉鍗P; 2. sip.port 鏄惁宸茶鍗犵敤" - , sipConfig.getMonitorIp(), sipConfig.getSipPort()); + , sipConfig.getMonitorIp(), sipConfig.getPort()); } catch (TooManyListenersException e) { e.printStackTrace(); } catch (ObjectInUseException e) { e.printStackTrace(); } - logger.info("Sip Server UDP 鍚姩鎴愬姛 port [" + sipConfig.getMonitorIp() + ":" + sipConfig.getSipPort() + "]"); + logger.info("Sip Server UDP 鍚姩鎴愬姛 port [" + sipConfig.getMonitorIp() + ":" + sipConfig.getPort() + "]"); return udpSipProvider; } @@ -168,7 +169,8 @@ if (callIdHeader != null) { SipSubscribe.Event subscribe = sipSubscribe.getOkSubscribe(callIdHeader.getCallId()); if (subscribe != null) { - subscribe.response(evt); + SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult(evt); + subscribe.response(eventResult); } } } @@ -181,7 +183,8 @@ if (callIdHeader != null) { SipSubscribe.Event subscribe = sipSubscribe.getErrorSubscribe(callIdHeader.getCallId()); if (subscribe != null) { - subscribe.response(evt); + SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult(evt); + subscribe.response(eventResult); } } } @@ -204,7 +207,11 @@ @Override public void processTimeout(TimeoutEvent timeoutEvent) { // TODO Auto-generated method stub - + CallIdHeader callIdHeader = timeoutEvent.getClientTransaction().getDialog().getCallId(); + String callId = callIdHeader.getCallId(); + SipSubscribe.Event errorSubscribe = sipSubscribe.getErrorSubscribe(callId); + SipSubscribe.EventResult<TimeoutEvent> timeoutEventEventResult = new SipSubscribe.EventResult<>(timeoutEvent); + errorSubscribe.response(timeoutEventEventResult); } /** @@ -220,6 +227,7 @@ @Override public void processIOException(IOExceptionEvent exceptionEvent) { // TODO Auto-generated method stub + } /** @@ -235,6 +243,11 @@ @Override public void processTransactionTerminated(TransactionTerminatedEvent transactionTerminatedEvent) { // TODO Auto-generated method stub +// CallIdHeader callIdHeader = transactionTerminatedEvent.getClientTransaction().getDialog().getCallId(); +// String callId = callIdHeader.getCallId(); +// SipSubscribe.Event errorSubscribe = sipSubscribe.getErrorSubscribe(callId); +// SipSubscribe.EventResult<TransactionTerminatedEvent> eventResult = new SipSubscribe.EventResult<>(transactionTerminatedEvent); +// errorSubscribe.response(eventResult); } /** @@ -250,6 +263,11 @@ @Override public void processDialogTerminated(DialogTerminatedEvent dialogTerminatedEvent) { // TODO Auto-generated method stub +// CallIdHeader callIdHeader = dialogTerminatedEvent.getDialog().getCallId(); +// String callId = callIdHeader.getCallId(); +// SipSubscribe.Event errorSubscribe = sipSubscribe.getErrorSubscribe(callId); +// SipSubscribe.EventResult<DialogTerminatedEvent> eventResult = new SipSubscribe.EventResult<>(dialogTerminatedEvent); +// errorSubscribe.response(eventResult); } -- Gitblit v1.8.0