From a0537d74df5b9c8ee65dba7c4e5bc6da7fc3d031 Mon Sep 17 00:00:00 2001 From: mk1990 <37614016+mk1990@users.noreply.github.com> Date: 星期四, 28 四月 2022 16:32:09 +0800 Subject: [PATCH] Merge branch '648540858:wvp-28181-2.0' into wvp-28181-2.0 --- src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/CatalogSubscribeTask.java | 22 ++++++++++++++++++++-- 1 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/CatalogSubscribeTask.java b/src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/CatalogSubscribeTask.java index 433eb3b..59b927f 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/CatalogSubscribeTask.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/CatalogSubscribeTask.java @@ -10,6 +10,8 @@ import javax.sip.Dialog; import javax.sip.DialogState; import javax.sip.ResponseEvent; +import java.util.Timer; +import java.util.TimerTask; /** * 鐩綍璁㈤槄浠诲姟 @@ -20,6 +22,8 @@ private final ISIPCommander sipCommander; private Dialog dialog; + private Timer timer ; + public CatalogSubscribeTask(Device device, ISIPCommander sipCommander) { this.device = device; this.sipCommander = sipCommander; @@ -27,6 +31,10 @@ @Override public void run() { + if (timer != null ) { + timer.cancel(); + timer = null; + } sipCommander.catalogSubscribe(device, dialog, eventResult -> { if (eventResult.dialog != null || eventResult.dialog.getState().equals(DialogState.CONFIRMED)) { dialog = eventResult.dialog; @@ -43,10 +51,16 @@ dialog = null; // 澶辫触 logger.warn("[鐩綍璁㈤槄]澶辫触锛屼俊浠ゅ彂閫佸け璐ワ細 {}-{} ", device.getDeviceId(), eventResult.msg); + timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + CatalogSubscribeTask.this.run(); + } + }, 2000); }); } - @Async @Override public void stop() { /** @@ -57,9 +71,13 @@ * TERMINATED-> Terminated Dialog鐘舵��-缁堟 */ logger.info("鍙栨秷鐩綍璁㈤槄鏃禿ialog鐘舵�佷负{}", DialogState.CONFIRMED); + if (timer != null ) { + timer.cancel(); + timer = null; + } if (dialog != null && dialog.getState().equals(DialogState.CONFIRMED)) { device.setSubscribeCycleForCatalog(0); - sipCommander.mobilePositionSubscribe(device, dialog, eventResult -> { + sipCommander.catalogSubscribe(device, dialog, eventResult -> { ResponseEvent event = (ResponseEvent) eventResult.event; if (event.getResponse().getRawContent() != null) { // 鎴愬姛 -- Gitblit v1.8.0