From 5addedcb92fcd56239825f301502aabbeaf5e325 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 24 十月 2023 11:26:46 +0800
Subject: [PATCH] 异步登录成功后获取通道和配置流媒体增加线程同步

---
 ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
index bda9b3e..a052a0f 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -3,6 +3,7 @@
 import com.ruoyi.alarm.global.domain.GuidePriorityQueue;
 import com.ruoyi.alarm.global.domain.GuideTask;
 import com.ruoyi.common.annotation.SdkOperate;
+import com.ruoyi.common.utils.Threads;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.common.utils.file.MimeTypeUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
@@ -56,7 +57,7 @@
     private IArdChannelService ardChannelService;
     @Resource
     private IVtduService vtduService;
-
+    private final Object lock = new Object();
     public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK;
     private static FExceptionCallBack fExceptionCallBack;//寮傚父鍥炶皟
 
@@ -110,20 +111,22 @@
             //鍚屾鐧诲綍
             int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
             if (lUserID < 0) {
-                int errorCode = hCNetSDK.NET_DVR_GetLastError();
-                log.debug(camera.getIp() + ":" + camera.getPort() + "鐧诲綍澶辫触,閿欒鐮侊細" + errorCode);
+                log.debug("Login Failed [ " + camera.getIp() + ":" + camera.getPort() + " ],閿欒鐮侊細" + hCNetSDK.NET_DVR_GetLastError());
                 camera.setChanNum(0);
                 camera.setLoginId(-1);
                 camera.setState("0");
-            } else {
+                return;
+            }
+            synchronized (lock) {
+                log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]");
                 if (fExceptionCallBack == null) {
                     fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
                     //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
                     if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
-                        log.info("Set fExceptionCallBack function fail");
+                        log.debug("Set fExceptionCallBack function fail");
                         return;
                     } else {
-                        log.info("Set fExceptionCallBack function successfully!");
+                        log.debug("Set fExceptionCallBack function successfully!");
                     }
                 }
 
@@ -135,7 +138,7 @@
                 GlobalVariable.loginMap.put(camera.getId(), lUserID);
                 GlobalVariable.loginCameraMap.put(lUserID, camera);
 
-                log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]");
+
                 camera.setLoginId(lUserID);
                 camera.setState("1");
                 camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
@@ -179,6 +182,7 @@
                 }
                 ardCamerasService.updateArdCameras(camera);
             }
+
         } catch (Exception ex) {
             log.error("娉ㄥ唽璁惧寮傚父", ex);
         }

--
Gitblit v1.9.3