From d7a1b94f905c5f28c9c8f2d48c3f9e28ebcf9cc4 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期六, 24 九月 2022 21:04:58 +0800 Subject: [PATCH] Merge branch 'wvp-28181-2.0' --- src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java | 44 +++++++++++++++++++++++++++++++++----------- 1 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java index c6cfc7a..69529b0 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java @@ -1,6 +1,7 @@ package com.genersoft.iot.vmp.gb28181.event; import com.genersoft.iot.vmp.gb28181.bean.DeviceNotFoundEvent; +import gov.nist.javax.sip.message.SIPRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; @@ -59,9 +60,25 @@ void response(EventResult eventResult); } + /** + * + */ + public enum EventResultType{ + // 瓒呮椂 + timeout, + // 鍥炲 + response, + // 浜嬪姟宸茬粨鏉� + transactionTerminated, + // 浼氳瘽宸茬粨鏉� + dialogTerminated, + // 璁惧鏈壘鍒� + deviceNotFoundEvent + } + public static class EventResult<EventObject>{ public int statusCode; - public String type; + public EventResultType type; public String msg; public String callId; public Dialog dialog; @@ -76,7 +93,7 @@ ResponseEvent responseEvent = (ResponseEvent)event; Response response = responseEvent.getResponse(); this.dialog = responseEvent.getDialog(); - this.type = "response"; + this.type = EventResultType.response; if (response != null) { this.msg = response.getReasonPhrase(); this.statusCode = response.getStatusCode(); @@ -85,28 +102,33 @@ }else if (event instanceof TimeoutEvent) { TimeoutEvent timeoutEvent = (TimeoutEvent)event; - this.type = "timeout"; + this.type = EventResultType.timeout; this.msg = "娑堟伅瓒呮椂鏈洖澶�"; this.statusCode = -1024; - this.dialog = timeoutEvent.getClientTransaction().getDialog(); - this.callId = this.dialog != null?timeoutEvent.getClientTransaction().getDialog().getCallId().getCallId(): null; + if (timeoutEvent.isServerTransaction()) { + this.callId = ((SIPRequest)timeoutEvent.getServerTransaction().getRequest()).getCallIdHeader().getCallId(); + }else { + this.callId = ((SIPRequest)timeoutEvent.getClientTransaction().getRequest()).getCallIdHeader().getCallId(); + } }else if (event instanceof TransactionTerminatedEvent) { TransactionTerminatedEvent transactionTerminatedEvent = (TransactionTerminatedEvent)event; - this.type = "transactionTerminated"; + this.type = EventResultType.transactionTerminated; this.msg = "浜嬪姟宸茬粨鏉�"; this.statusCode = -1024; - this.callId = transactionTerminatedEvent.getClientTransaction().getDialog().getCallId().getCallId(); - this.dialog = transactionTerminatedEvent.getClientTransaction().getDialog(); + if (transactionTerminatedEvent.isServerTransaction()) { + this.callId = ((SIPRequest)transactionTerminatedEvent.getServerTransaction().getRequest()).getCallIdHeader().getCallId(); + }else { + this.callId = ((SIPRequest)transactionTerminatedEvent.getClientTransaction().getRequest()).getCallIdHeader().getCallId(); + } }else if (event instanceof DialogTerminatedEvent) { DialogTerminatedEvent dialogTerminatedEvent = (DialogTerminatedEvent)event; - this.type = "dialogTerminated"; + this.type = EventResultType.dialogTerminated; this.msg = "浼氳瘽宸茬粨鏉�"; this.statusCode = -1024; this.callId = dialogTerminatedEvent.getDialog().getCallId().getCallId(); - this.dialog = dialogTerminatedEvent.getDialog(); }else if (event instanceof DeviceNotFoundEvent) { DeviceNotFoundEvent deviceNotFoundEvent = (DeviceNotFoundEvent)event; - this.type = "deviceNotFoundEvent"; + this.type = EventResultType.deviceNotFoundEvent; this.msg = "璁惧鏈壘鍒�"; this.statusCode = -1024; this.dialog = deviceNotFoundEvent.getDialog(); -- Gitblit v1.8.0