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