From bb226c431e28ffdda284ba2420a93cf4ed4e0c30 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 02 十一月 2021 16:50:22 +0800
Subject: [PATCH] 修复订阅sip消息导致的内存溢出以及录像回放的问题
---
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java | 7 -
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java | 6 -
src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java | 87 +++++++++++++++++++++
src/main/java/com/genersoft/iot/vmp/gb28181/event/platformKeepaliveExpire/PlatformKeepaliveExpireEventLister.java | 4
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 24 ++++-
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 19 ++--
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java | 12 +--
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java | 9 -
src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java | 24 +++++
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/DownloadController.java | 5
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java | 2
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java | 2
src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java | 8 +-
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java | 3
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java | 2
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java | 3
17 files changed, 160 insertions(+), 60 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java b/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java
index 79ca77b..72f0db6 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java
@@ -17,8 +17,8 @@
@Autowired
private MediaConfig mediaConfig;
- @Scheduled(cron="0/2 * * * * ? ") //姣�3绉掓墽琛屼竴娆�
- public void execute(){
-// redisCatchStorage.updateWVPInfo();
- }
+// @Scheduled(cron="0/2 * * * * ? ") //姣�3绉掓墽琛屼竴娆�
+// public void execute(){
+//// redisCatchStorage.updateWVPInfo();
+// }
}
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 fb1aae2..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;
@@ -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);
}
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 e00a59f..377cd94 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,38 +1,121 @@
package com.genersoft.iot.vmp.gb28181.event;
+import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
-import javax.sip.ResponseEvent;
+import javax.sip.*;
+import java.util.Calendar;
+import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Component
public class SipSubscribe {
+ private final Logger logger = LoggerFactory.getLogger(SipSubscribe.class);
+
private Map<String, SipSubscribe.Event> errorSubscribes = new ConcurrentHashMap<>();
private Map<String, SipSubscribe.Event> okSubscribes = new ConcurrentHashMap<>();
+ private Map<String, Date> timeSubscribes = new ConcurrentHashMap<>();
+
+// @Scheduled(cron="*/5 * * * * ?") //姣忎簲绉掓墽琛屼竴娆�
+ @Scheduled(cron="0 * */1 * * ?") //姣忓皬鏃舵墽琛屼竴娆�
+ public void execute(){
+ logger.info("[瀹氭椂浠诲姟] 娓呯悊杩囨湡鐨勮闃呬俊鎭�");
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(new Date());
+ calendar.set(Calendar.HOUR, calendar.get(Calendar.HOUR) - 1);
+ for (String key : timeSubscribes.keySet()) {
+ if (timeSubscribes.get(key).before(calendar.getTime())){
+ logger.info("[瀹氭椂浠诲姟] 娓呯悊杩囨湡鐨勮闃呬俊鎭細 {}", key);
+ errorSubscribes.remove(key);
+ okSubscribes.remove(key);
+ timeSubscribes.remove(key);
+ }
+ }
+ }
+
public interface Event {
- void response(ResponseEvent event);
+ void response(EventResult eventResult);
+ }
+
+ public static class EventResult<EventObject>{
+ public int statusCode;
+ public String type;
+ public String msg;
+ public String callId;
+ public Dialog dialog;
+ public EventObject event;
+
+ public EventResult() {
+ }
+
+ public EventResult(EventObject event) {
+ this.event = event;
+ if (event instanceof ResponseEvent) {
+ ResponseEvent responseEvent = (ResponseEvent)event;
+ this.type = "response";
+ this.msg = responseEvent.getResponse().getReasonPhrase();
+ this.statusCode = responseEvent.getResponse().getStatusCode();
+ this.callId = responseEvent.getDialog().getCallId().getCallId();
+ this.dialog = responseEvent.getDialog();
+ }else if (event instanceof TimeoutEvent) {
+ TimeoutEvent timeoutEvent = (TimeoutEvent)event;
+ this.type = "timeout";
+ this.msg = "娑堟伅瓒呮椂鏈洖澶�";
+ this.statusCode = -1024;
+ this.callId = timeoutEvent.getClientTransaction().getDialog().getCallId().getCallId();
+ this.dialog = timeoutEvent.getClientTransaction().getDialog();
+ }else if (event instanceof TransactionTerminatedEvent) {
+ TransactionTerminatedEvent transactionTerminatedEvent = (TransactionTerminatedEvent)event;
+ this.type = "transactionTerminated";
+ this.msg = "浜嬪姟宸茬粨鏉�";
+ this.statusCode = -1024;
+ this.callId = transactionTerminatedEvent.getClientTransaction().getDialog().getCallId().getCallId();
+ this.dialog = transactionTerminatedEvent.getClientTransaction().getDialog();
+ }else if (event instanceof DialogTerminatedEvent) {
+ DialogTerminatedEvent dialogTerminatedEvent = (DialogTerminatedEvent)event;
+ this.type = "dialogTerminated";
+ this.msg = "浼氳瘽宸茬粨鏉�";
+ this.statusCode = -1024;
+ this.callId = dialogTerminatedEvent.getDialog().getCallId().getCallId();
+ this.dialog = dialogTerminatedEvent.getDialog();
+ }
+ }
}
public void addErrorSubscribe(String key, SipSubscribe.Event event) {
errorSubscribes.put(key, event);
+ timeSubscribes.put(key, new Date());
}
public void addOkSubscribe(String key, SipSubscribe.Event event) {
okSubscribes.put(key, event);
+ timeSubscribes.put(key, new Date());
}
public SipSubscribe.Event getErrorSubscribe(String key) {
return errorSubscribes.get(key);
}
+ public void removeErrorSubscribe(String key) {
+ errorSubscribes.remove(key);
+ timeSubscribes.remove(key);
+ }
+
public SipSubscribe.Event getOkSubscribe(String key) {
return okSubscribes.get(key);
}
+ public void removeOkSubscribe(String key) {
+ okSubscribes.remove(key);
+ timeSubscribes.remove(key);
+ }
public int getErrorSubscribesSize(){
return errorSubscribes.size();
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformKeepaliveExpire/PlatformKeepaliveExpireEventLister.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformKeepaliveExpire/PlatformKeepaliveExpireEventLister.java
index 480ed1d..801e125 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformKeepaliveExpire/PlatformKeepaliveExpireEventLister.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/platformKeepaliveExpire/PlatformKeepaliveExpireEventLister.java
@@ -75,8 +75,8 @@
redisCatchStorage.updatePlatformKeepalive(parentPlatform);
redisCatchStorage.updatePlatformCatchInfo(parentPlatformCatch);
- sipSubscribe.addOkSubscribe(callId, (ResponseEvent responseEvent) ->{
- if (responseEvent.getResponse().getStatusCode() == Response.OK) {
+ sipSubscribe.addOkSubscribe(callId, (SipSubscribe.EventResult eventResult) ->{
+ if (eventResult.statusCode == Response.OK) {
// 鏀跺埌蹇冭烦鍝嶅簲淇℃伅,
parentPlatformCatch.setKeepAliveReply(0);
redisCatchStorage.updatePlatformCatchInfo(parentPlatformCatch);
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
index 6f67c22..0d36d52 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -427,8 +427,8 @@
mediaServerService.releaseSsrc(mediaServerItem, ssrcInfo.getSsrc());
errorEvent.response(e);
}), e ->{
- streamSession.put(device.getDeviceId(), channelId ,ssrcInfo.getSsrc(), finalStreamId, mediaServerItem.getId(),e.getClientTransaction());
- streamSession.put(device.getDeviceId(), channelId , e.getDialog());
+ streamSession.put(device.getDeviceId(), channelId ,ssrcInfo.getSsrc(), finalStreamId, mediaServerItem.getId(), ((ResponseEvent)e.event).getClientTransaction());
+ streamSession.put(device.getDeviceId(), channelId , e.dialog);
});
@@ -535,9 +535,9 @@
Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, "fromplybck" + tm, null, callIdHeader, ssrcInfo.getSsrc());
transmitRequest(device, request, errorEvent, okEvent -> {
- Dialog dialog = okEvent.getClientTransaction().getDialog();
- streamSession.put(device.getDeviceId(), channelId, ssrcInfo.getSsrc(), ssrcInfo.getStreamId(), mediaServerItem.getId(), okEvent.getClientTransaction());
- streamSession.put(device.getDeviceId(), channelId, dialog);
+ ResponseEvent responseEvent = (ResponseEvent) okEvent.event;
+ streamSession.put(device.getDeviceId(), channelId, ssrcInfo.getSsrc(), ssrcInfo.getStreamId(), mediaServerItem.getId(), responseEvent.getClientTransaction());
+ streamSession.put(device.getDeviceId(), channelId, okEvent.dialog);
});
} catch ( SipException | ParseException | InvalidArgumentException e) {
e.printStackTrace();
@@ -667,6 +667,10 @@
ClientTransaction transaction = streamSession.getTransaction(deviceId, channelId);
if (transaction == null) {
logger.warn("[ {} -> {}]鍋滄瑙嗛娴佺殑鏃跺�欏彂鐜颁簨鍔″凡涓㈠け", deviceId, channelId);
+ SipSubscribe.EventResult<Object> eventResult = new SipSubscribe.EventResult<>();
+ if (okEvent != null) {
+ okEvent.response(eventResult);
+ }
return;
}
SIPDialog dialog = streamSession.getDialog(deviceId, channelId);
@@ -1506,11 +1510,17 @@
CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME);
// 娣诲姞閿欒璁㈤槄
if (errorEvent != null) {
- sipSubscribe.addErrorSubscribe(callIdHeader.getCallId(), errorEvent);
+ sipSubscribe.addErrorSubscribe(callIdHeader.getCallId(), (eventResult -> {
+ errorEvent.response(eventResult);
+ sipSubscribe.removeErrorSubscribe(eventResult.callId);
+ }));
}
// 娣诲姞璁㈤槄
if (okEvent != null) {
- sipSubscribe.addOkSubscribe(callIdHeader.getCallId(), okEvent);
+ sipSubscribe.addOkSubscribe(callIdHeader.getCallId(), eventResult ->{
+ okEvent.response(eventResult);
+ sipSubscribe.removeOkSubscribe(eventResult.callId);
+ });
}
clientTransaction.sendRequest();
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 56ba0ba..65348ab 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
@@ -100,7 +100,7 @@
if (event != null) {
logger.info("鍚戜笂绾у钩鍙� [ {} ] 娉ㄥ唽鍙戜笂閿欒锛� {} ",
parentPlatform.getServerGBId(),
- event.getResponse().getReasonPhrase());
+ event.msg);
}
if (errorEvent != null ) {
errorEvent.response(event);
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
index 3d21c8d..06ae3d8 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
@@ -235,7 +235,7 @@
// 鏈煡閿欒銆傜洿鎺ヨ浆鍙戣澶囩偣鎾殑閿欒
Response response = null;
try {
- response = getMessageFactory().createResponse(event.getResponse().getStatusCode(), evt.getRequest());
+ response = getMessageFactory().createResponse(event.statusCode, evt.getRequest());
ServerTransaction serverTransaction = getServerTransaction(evt);
serverTransaction.sendResponse(response);
if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete();
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
index 51aa2df..285ccd3 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
@@ -806,7 +806,7 @@
storager.insertMobilePosition(mobilePosition);
}
}
- System.out.println("瀛樺偍鎶ヨ淇℃伅銆佹姤璀﹀垎绫�");
+ logger.debug("瀛樺偍鎶ヨ淇℃伅銆佹姤璀﹀垎绫�");
// 瀛樺偍鎶ヨ淇℃伅銆佹姤璀﹀垎绫�
deviceAlarmService.add(deviceAlarm);
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
index a22ab8a..d7b8ffe 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -34,6 +34,10 @@
import org.springframework.util.ResourceUtils;
import org.springframework.web.context.request.async.DeferredResult;
+import javax.sip.DialogTerminatedEvent;
+import javax.sip.ResponseEvent;
+import javax.sip.TimeoutEvent;
+import javax.sip.TransactionTerminatedEvent;
import javax.sip.message.Response;
import java.io.FileNotFoundException;
import java.util.UUID;
@@ -170,17 +174,17 @@
hookEvent.response(mediaServerItem, response);
}
}, (event) -> {
- // 鐐规挱杩斿洖sip閿欒
- Response response = event.getResponse();
- mediaServerService.closeRTPServer(playResult.getDevice(), channelId);
WVPResult wvpResult = new WVPResult();
wvpResult.setCode(-1);
- wvpResult.setMsg(String.format("鐐规挱澶辫触锛� 閿欒鐮侊細 %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ // 鐐规挱杩斿洖sip閿欒
+ mediaServerService.closeRTPServer(playResult.getDevice(), channelId);
+ wvpResult.setMsg(String.format("鐐规挱澶辫触锛� 閿欒鐮侊細 %s, %s", event.statusCode, event.msg));
msg.setData(wvpResult);
resultHolder.invokeAllResult(msg);
if (errorEvent != null) {
errorEvent.response(event);
}
+
});
} else {
@@ -225,11 +229,9 @@
onPublishHandlerForPlay(mediaServerItemInuse, response, deviceId, channelId, uuid.toString());
}, (event) -> {
mediaServerService.closeRTPServer(playResult.getDevice(), channelId);
- Response response = event.getResponse();
-
WVPResult wvpResult = new WVPResult();
wvpResult.setCode(-1);
- wvpResult.setMsg(String.format("鐐规挱澶辫触锛� 閿欒鐮侊細 %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ wvpResult.setMsg(String.format("鐐规挱澶辫触锛� 閿欒鐮侊細 %s, %s", event.statusCode, event.msg));
msg.setData(wvpResult);
resultHolder.invokeAllResult(msg);
});
@@ -287,7 +289,8 @@
@Override
public void onPublishHandlerForPlayBack(MediaServerItem mediaServerItem, JSONObject resonse, String deviceId, String channelId, String uuid) {
RequestMessage msg = new RequestMessage();
- msg.setId(DeferredResultHolder.CALLBACK_CMD_PLAY + uuid);
+ msg.setKey(DeferredResultHolder.CALLBACK_CMD_PLAY + deviceId + channelId);
+ msg.setId(uuid);
StreamInfo streamInfo = onPublishHandler(mediaServerItem, resonse, deviceId, channelId, uuid);
if (streamInfo != null) {
redisCatchStorage.startPlayback(streamInfo);
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
index 8d5a37f..6b4f2b7 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/MobilePosition/MobilePositionController.java
@@ -115,11 +115,10 @@
String uuid = UUID.randomUUID().toString();
String key = DeferredResultHolder.CALLBACK_CMD_MOBILEPOSITION + deviceId;
cmder.mobilePostitionQuery(device, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(key);
- msg.setData(String.format("鑾峰彇绉诲姩浣嶇疆淇℃伅澶辫触锛岄敊璇爜锛� %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("鑾峰彇绉诲姩浣嶇疆淇℃伅澶辫触锛岄敊璇爜锛� %s, %s", event.statusCode, event.msg));
resultHolder.invokeResult(msg);
});
DeferredResult<ResponseEntity<MobilePosition>> result = new DeferredResult<ResponseEntity<MobilePosition>>(5*1000L);
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java
index 1aa28cb..b3de5af 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceConfig.java
@@ -80,11 +80,10 @@
String uuid = UUID.randomUUID().toString();
String key = DeferredResultHolder.CALLBACK_CMD_DEVICECONFIG + deviceId + channelId;
cmder.deviceBasicConfigCmd(device, channelId, name, expiration, heartBeatInterval, heartBeatCount, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(key);
- msg.setData(String.format("璁惧閰嶇疆鎿嶄綔澶辫触锛岄敊璇爜锛� %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("璁惧閰嶇疆鎿嶄綔澶辫触锛岄敊璇爜锛� %s, %s", event.statusCode, event.msg));
resultHolder.invokeResult(msg);
});
DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(3 * 1000L);
@@ -129,11 +128,10 @@
String uuid = UUID.randomUUID().toString();
Device device = storager.queryVideoDevice(deviceId);
cmder.deviceConfigQuery(device, channelId, configType, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(key);
- msg.setData(String.format("鑾峰彇璁惧閰嶇疆澶辫触锛岄敊璇爜锛� %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("鑾峰彇璁惧閰嶇疆澶辫触锛岄敊璇爜锛� %s, %s", event.statusCode, event.msg));
resultHolder.invokeResult(msg);
});
DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String >> (3 * 1000L);
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
index 3b34c7d..54b4955 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceControl.java
@@ -113,11 +113,10 @@
return result;
}
cmder.recordCmd(device, channelId, recordCmdStr, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(key);
- msg.setData(String.format("寮�濮�/鍋滄褰曞儚鎿嶄綔澶辫触锛岄敊璇爜锛� %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("寮�濮�/鍋滄褰曞儚鎿嶄綔澶辫触锛岄敊璇爜锛� %s, %s", event.statusCode, event.msg));
resultHolder.invokeAllResult(msg);
});
@@ -146,11 +145,10 @@
String key = DeferredResultHolder.CALLBACK_CMD_DEVICECONTROL + deviceId + channelId;
String uuid =UUID.randomUUID().toString();
cmder.guardCmd(device, guardCmdStr, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(key);
- msg.setData(String.format("甯冮槻/鎾ら槻鎿嶄綔澶辫触锛岄敊璇爜锛� %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("甯冮槻/鎾ら槻鎿嶄綔澶辫触锛岄敊璇爜锛� %s, %s", event.statusCode, event.msg));
resultHolder.invokeResult(msg);
});
DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(3 * 1000L);
@@ -193,11 +191,10 @@
String uuid = UUID.randomUUID().toString();
String key = DeferredResultHolder.CALLBACK_CMD_DEVICECONTROL + deviceId + channelId;
cmder.alarmCmd(device, alarmMethod, alarmType, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(key);
- msg.setData(String.format("鎶ヨ澶嶄綅鎿嶄綔澶辫触锛岄敊璇爜锛� %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("鎶ヨ澶嶄綅鎿嶄綔澶辫触锛岄敊璇爜锛� %s, %s", event.statusCode, event.msg));
resultHolder.invokeResult(msg);
});
DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(3 * 1000L);
@@ -276,11 +273,10 @@
String uuid = UUID.randomUUID().toString();
Device device = storager.queryVideoDevice(deviceId);
cmder.homePositionCmd(device, channelId, enabled, resetTime, presetIndex, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(key);
- msg.setData(String.format("鐪嬪畧浣嶆帶鍒舵搷浣滃け璐ワ紝閿欒鐮侊細 %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("鐪嬪畧浣嶆帶鍒舵搷浣滃け璐ワ紝閿欒鐮侊細 %s, %s", event.statusCode, event.msg));
resultHolder.invokeResult(msg);
});
DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(3 * 1000L);
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
index 359fcbe..43b0378 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java
@@ -161,11 +161,10 @@
return result;
}
cmder.catalogQuery(device, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setKey(key);
msg.setId(uuid);
- msg.setData(String.format("鍚屾閫氶亾澶辫触锛岄敊璇爜锛� %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("鍚屾閫氶亾澶辫触锛岄敊璇爜锛� %s, %s", event.statusCode, event.msg));
resultHolder.invokeAllResult(msg);
});
@@ -329,11 +328,10 @@
String uuid = UUID.randomUUID().toString();
String key = DeferredResultHolder.CALLBACK_CMD_DEVICESTATUS + deviceId;
cmder.deviceStatusQuery(device, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(key);
- msg.setData(String.format("鑾峰彇璁惧鐘舵�佸け璐ワ紝閿欒鐮侊細 %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("鑾峰彇璁惧鐘舵�佸け璐ワ紝閿欒鐮侊細 %s, %s", event.statusCode, event.msg));
resultHolder.invokeResult(msg);
});
DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(2*1000L);
@@ -386,11 +384,10 @@
String key = DeferredResultHolder.CALLBACK_CMD_ALARM + deviceId;
String uuid = UUID.randomUUID().toString();
cmder.alarmInfoQuery(device, startPriority, endPriority, alarmMethod, alarmType, startTime, endTime, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(key);
- msg.setData(String.format("璁惧鎶ヨ鏌ヨ澶辫触锛岄敊璇爜锛� %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("璁惧鎶ヨ鏌ヨ澶辫触锛岄敊璇爜锛� %s, %s",event.statusCode, event.msg));
resultHolder.invokeResult(msg);
});
DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String >> (3 * 1000L);
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
index 2346ab3..c22a558 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
@@ -287,7 +287,6 @@
return result;
}
cmder.audioBroadcastCmd(device, (event) -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setKey(key);
msg.setId(uuid);
@@ -295,7 +294,7 @@
json.put("DeviceID", deviceId);
json.put("CmdType", "Broadcast");
json.put("Result", "Failed");
- json.put("Description", String.format("璇煶骞挎挱鎿嶄綔澶辫触锛岄敊璇爜锛� %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ json.put("Description", String.format("璇煶骞挎挱鎿嶄綔澶辫触锛岄敊璇爜锛� %s, %s", event.statusCode, event.msg));
msg.setData(json);
resultHolder.invokeResult(msg);
});
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/DownloadController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/DownloadController.java
index e958827..314bbae 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/DownloadController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/DownloadController.java
@@ -76,7 +76,7 @@
if (logger.isDebugEnabled()) {
logger.debug(String.format("鍘嗗彶濯掍綋涓嬭浇 API璋冪敤锛宒eviceId锛�%s锛宑hannelId锛�%s锛宒ownloadSpeed锛�%s", deviceId, channelId, downloadSpeed));
}
- String key = DeferredResultHolder.CALLBACK_CMD_PLAY + deviceId + channelId + startTime + endTime;
+ String key = DeferredResultHolder.CALLBACK_CMD_PLAY + deviceId + channelId;
String uuid = UUID.randomUUID().toString();
DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(30000L);
// 瓒呮椂澶勭悊
@@ -116,11 +116,10 @@
logger.info("鏀跺埌璁㈤槄娑堟伅锛� " + response.toJSONString());
playService.onPublishHandlerForPlayBack(mediaServerItem, response, deviceId, channelId, uuid.toString());
}, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(key);
- msg.setData(String.format("鍥炴斁澶辫触锛� 閿欒鐮侊細 %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("鍥炴斁澶辫触锛� 閿欒鐮侊細 %s, %s", event.statusCode, event.msg));
resultHolder.invokeAllResult(msg);
});
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java
index d847bbd..98df8dd 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/playback/PlaybackController.java
@@ -77,7 +77,7 @@
logger.debug(String.format("璁惧鍥炴斁 API璋冪敤锛宒eviceId锛�%s 锛宑hannelId锛�%s", deviceId, channelId));
}
String uuid = UUID.randomUUID().toString();
- String key = DeferredResultHolder.CALLBACK_CMD_PLAY + deviceId + channelId + startTime + endTime;
+ String key = DeferredResultHolder.CALLBACK_CMD_PLAY + deviceId + channelId;
DeferredResult<ResponseEntity<String>> result = new DeferredResult<ResponseEntity<String>>(30000L);
Device device = storager.queryVideoDevice(deviceId);
if (device == null) {
@@ -102,7 +102,7 @@
// 鍋滄涔嬪墠鐨勫洖鏀�
cmder.streamByeCmd(deviceId, channelId);
}
- resultHolder.put(DeferredResultHolder.CALLBACK_CMD_PLAY + deviceId + channelId + startTime + endTime, uuid, result);
+ resultHolder.put(DeferredResultHolder.CALLBACK_CMD_PLAY + deviceId + channelId, uuid, result);
if (newMediaServerItem == null) {
logger.warn(String.format("璁惧鍥炴斁瓒呮椂锛宒eviceId锛�%s 锛宑hannelId锛�%s", deviceId, channelId));
@@ -118,11 +118,10 @@
logger.info("鏀跺埌璁㈤槄娑堟伅锛� " + response.toJSONString());
playService.onPublishHandlerForPlayBack(mediaServerItem, response, deviceId, channelId, uuid.toString());
}, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(key);
- msg.setData(String.format("鍥炴斁澶辫触锛� 閿欒鐮侊細 %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("鍥炴斁澶辫触锛� 閿欒鐮侊細 %s, %s", event.statusCode, event.msg));
resultHolder.invokeResult(msg);
});
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java
index bcf4e4c..26a0d2c 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/ptz/PtzController.java
@@ -120,11 +120,10 @@
return result;
}
cmder.presetQuery(device, channelId, event -> {
- Response response = event.getResponse();
RequestMessage msg = new RequestMessage();
msg.setId(uuid);
msg.setKey(key);
- msg.setData(String.format("鑾峰彇璁惧棰勭疆浣嶅け璐ワ紝閿欒鐮侊細 %s, %s", response.getStatusCode(), response.getReasonPhrase()));
+ msg.setData(String.format("鑾峰彇璁惧棰勭疆浣嶅け璐ワ紝閿欒鐮侊細 %s, %s", event.statusCode, event.msg));
resultHolder.invokeResult(msg);
});
--
Gitblit v1.8.0