From 6ac131bcf6ec034ffc9e5813c68c56c6e5c32b70 Mon Sep 17 00:00:00 2001
From: xiaoxie <hotcoffie@163.com>
Date: 星期三, 01 十二月 2021 22:45:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wvp-28181-2.0' into wvp-28181-2.0

---
 src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 56 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..f914313
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,56 @@
+package com.genersoft.iot.vmp.service.impl;
+
+import com.genersoft.iot.vmp.conf.DynamicTask;
+import com.genersoft.iot.vmp.gb28181.bean.Device;
+import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
+import com.genersoft.iot.vmp.service.IDeviceService;
+import com.genersoft.iot.vmp.service.bean.CatalogSubscribeTask;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 璁惧涓氬姟锛堢洰褰曡闃咃級
+ */
+@Service
+public class DeviceServiceImpl implements IDeviceService {
+
+    private final static Logger logger = LoggerFactory.getLogger(DeviceServiceImpl.class);
+
+    @Autowired
+    private DynamicTask dynamicTask;
+;
+
+    @Autowired
+    private ISIPCommander sipCommander;
+
+    @Override
+    public boolean addCatalogSubscribe(Device device) {
+        if (device == null || device.getSubscribeCycleForCatalog() < 0) {
+            return false;
+        }
+        // 娣诲姞鐩綍璁㈤槄
+        CatalogSubscribeTask catalogSubscribeTask = new CatalogSubscribeTask(device, sipCommander);
+        catalogSubscribeTask.run();
+        // 鎻愬墠寮�濮嬪埛鏂拌闃�
+        // TODO 浣跨敤jain sip鐨勫綋鏃跺埛鏂拌闃�
+        int subscribeCycleForCatalog = device.getSubscribeCycleForCatalog();
+        // 璁剧疆鏈�灏忓�间负30
+        subscribeCycleForCatalog = Math.max(subscribeCycleForCatalog, 30);
+        dynamicTask.startCron(device.getDeviceId(), catalogSubscribeTask, subscribeCycleForCatalog - 5);
+        return true;
+    }
+
+    @Override
+    public boolean removeCatalogSubscribe(Device device) {
+        if (device == null || device.getSubscribeCycleForCatalog() < 0) {
+            return false;
+        }
+        logger.info("绉婚櫎鐩綍璁㈤槄: {}", device.getDeviceId());
+        dynamicTask.stopCron(device.getDeviceId());
+        device.setSubscribeCycleForCatalog(0);
+        sipCommander.catalogSubscribe(device, null, null);
+        return true;
+    }
+}

--
Gitblit v1.8.0