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/dhsdk/module/LoginModule.java | 288 ++++++++++++++++++++++++++++----------------------------- 1 files changed, 143 insertions(+), 145 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/LoginModule.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/LoginModule.java index da42a76..2488b89 100644 --- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/LoginModule.java +++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/module/LoginModule.java @@ -1,146 +1,144 @@ -package com.ruoyi.device.dhsdk.module; - -import com.ruoyi.device.dhsdk.lib.NetSDKLib; -import com.ruoyi.device.dhsdk.lib.NetSDKLib.LLong; -import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY; -import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY; -import com.sun.jna.ptr.IntByReference; -import lombok.extern.slf4j.Slf4j; -import static com.ruoyi.device.dhsdk.lib.ToolKits.getErrorCodePrint; - -/** - * 鐧婚檰鎺ュ彛瀹炵幇 - * 涓昏鏈� 锛氬垵濮嬪寲銆佺櫥闄嗐�佺櫥鍑哄姛鑳� - */ -@Slf4j(topic = "dhSdk") -public class LoginModule { - - public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE; - - // 璁惧淇℃伅 - public static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); - - // 鐧婚檰鍙ユ焺 - public static LLong m_hLoginHandle = new LLong(0);// - - private static boolean bInit = false; - private static boolean bLogopen = false; - - /** - * \if ENGLISH_LANG - * Init - * \else - * 鍒濆鍖� - * \endif - */ - public static boolean init(NetSDKLib.fDisConnect disConnect, NetSDKLib.fHaveReConnect haveReConnect) { - bInit = netsdk.CLIENT_Init(disConnect, null); - if (!bInit) { - log.debug("Initialize SDK failed"); - return false; - } - - //鎵撳紑鏃ュ織锛屽彲閫� - //NetSDKLib.LOG_SET_PRINT_INFO setLog = new NetSDKLib.LOG_SET_PRINT_INFO(); - //File path = new File("./sdklog/"); - //if (!path.exists()) { - // path.mkdir(); - //} - //String logPath = path.getAbsoluteFile().getParent() + "\\sdklog\\" + ToolKits.getDate() + ".log"; - //setLog.nPrintStrategy = 0; - //setLog.bSetFilePath = 1; - //System.arraycopy(logPath.getBytes(), 0, setLog.szLogFilePath, 0, logPath.getBytes().length); - //System.out.println(logPath); - //setLog.bSetPrintStrategy = 1; - //bLogopen = netsdk.CLIENT_LogOpen(setLog); - // if (!bLogopen) { - // System.err.println("Failed to open NetSDK log"); - // } - - // 璁剧疆鏂嚎閲嶈繛鍥炶皟鎺ュ彛锛岃缃繃鏂嚎閲嶈繛鎴愬姛鍥炶皟鍑芥暟鍚庯紝褰撹澶囧嚭鐜版柇绾挎儏鍐碉紝SDK鍐呴儴浼氳嚜鍔ㄨ繘琛岄噸杩炴搷浣� - // 姝ゆ搷浣滀负鍙�夋搷浣滐紝浣嗗缓璁敤鎴疯繘琛岃缃� - netsdk.CLIENT_SetAutoReconnect(haveReConnect, null); - - //璁剧疆鐧诲綍瓒呮椂鏃堕棿鍜屽皾璇曟鏁帮紝鍙�� - int waitTime = 5000; //鐧诲綍璇锋眰鍝嶅簲瓒呮椂鏃堕棿璁剧疆涓�5S - int tryTimes = 1; //鐧诲綍鏃跺皾璇曞缓绔嬮摼鎺�1娆� - netsdk.CLIENT_SetConnectTime(waitTime, tryTimes); - - - // 璁剧疆鏇村缃戠粶鍙傛暟锛孨ET_PARAM鐨刵Waittime锛宯ConnectTryNum鎴愬憳涓嶤LIENT_SetConnectTime - // 鎺ュ彛璁剧疆鐨勭櫥褰曡澶囪秴鏃舵椂闂村拰灏濊瘯娆℃暟鎰忎箟鐩稿悓,鍙�� - NetSDKLib.NET_PARAM netParam = new NetSDKLib.NET_PARAM(); - netParam.nConnectTime = 10000; // 鐧诲綍鏃跺皾璇曞缓绔嬮摼鎺ョ殑瓒呮椂鏃堕棿 - netParam.nGetConnInfoTime = 3000; // 璁剧疆瀛愯繛鎺ョ殑瓒呮椂鏃堕棿 - netParam.nGetDevInfoTime = 3000;//鑾峰彇璁惧淇℃伅瓒呮椂鏃堕棿锛屼负0榛樿1000ms - netsdk.CLIENT_SetNetworkParam(netParam); - - return true; - } - - /** - * \if ENGLISH_LANG - * CleanUp - * \else - * 娓呴櫎鐜 - * \endif - */ - public static void cleanup() { - if (bLogopen) { - netsdk.CLIENT_LogClose(); - } - - if (bInit) { - netsdk.CLIENT_Cleanup(); - } - } - - /** - * \if ENGLISH_LANG - * Login Device - * \else - * 鐧诲綍璁惧 - * \endif - */ - public static LLong login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) { - IntByReference nError = new IntByReference(0); - //鍏ュ弬 - NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam = new NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY(); - pstInParam.nPort = m_nPort; - pstInParam.szIP = m_strIp.getBytes(); - pstInParam.szPassword = m_strPassword.getBytes(); - pstInParam.szUserName = m_strUser.getBytes(); - //鍑哄弬 - NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam = new NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY(); - pstOutParam.stuDeviceInfo = m_stDeviceInfo; - LLong m_hLoginHandle = netsdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword, 0, null, m_stDeviceInfo, nError); - //m_hLoginHandle=netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam); - if (m_hLoginHandle.longValue() == 0) { - log.debug("Login Device[%s] Port[%d]Failed. %s\n", m_strIp, m_nPort, getErrorCodePrint()); - } else { - log.debug("Login Success [ " + m_strIp + " ]"); - } - return m_hLoginHandle; - //return m_hLoginHandle.longValue() == 0? false:true; - } - - /** - * \if ENGLISH_LANG - * Logout Device - * \else - * 鐧诲嚭璁惧 - * \endif - */ - public static boolean logout(LLong loginId) { - if (loginId.longValue() == 0) { - return false; - } - boolean bRet = netsdk.CLIENT_Logout(loginId); - if (bRet) { - loginId.setValue(0); - } - return bRet; - } - - +package com.ruoyi.device.dhsdk.module; + +import com.ruoyi.device.dhsdk.lib.NetSDKLib; +import com.ruoyi.device.dhsdk.lib.NetSDKLib.LLong; +import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY; +import com.ruoyi.device.dhsdk.lib.NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY; +import com.sun.jna.ptr.IntByReference; +import lombok.extern.slf4j.Slf4j; + +import static com.ruoyi.device.dhsdk.lib.ToolKits.getErrorCodePrint; + +/** + * 鐧婚檰鎺ュ彛瀹炵幇 + * 涓昏鏈� 锛氬垵濮嬪寲銆佺櫥闄嗐�佺櫥鍑哄姛鑳� + */ +@Slf4j(topic = "dhSdk") +public class LoginModule { + + public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE; + + // 璁惧淇℃伅 + // public static NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex(); + + // 鐧婚檰鍙ユ焺 + public static LLong m_hLoginHandle = new LLong(0);// + + private static boolean bInit = false; + private static boolean bLogopen = false; + + /** + * \if ENGLISH_LANG + * Init + * \else + * 鍒濆鍖� + * \endif + */ + public static boolean init(NetSDKLib.fDisConnect disConnect, NetSDKLib.fHaveReConnect haveReConnect) { + bInit = netsdk.CLIENT_Init(disConnect, null); + if (!bInit) { + log.debug("Initialize SDK failed"); + return false; + } + + //鎵撳紑鏃ュ織锛屽彲閫� + //NetSDKLib.LOG_SET_PRINT_INFO setLog = new NetSDKLib.LOG_SET_PRINT_INFO(); + //File path = new File("./sdklog/"); + //if (!path.exists()) { + // path.mkdir(); + //} + //String logPath = path.getAbsoluteFile().getParent() + "\\sdklog\\" + ToolKits.getDate() + ".log"; + //setLog.nPrintStrategy = 0; + //setLog.bSetFilePath = 1; + //System.arraycopy(logPath.getBytes(), 0, setLog.szLogFilePath, 0, logPath.getBytes().length); + //System.out.println(logPath); + //setLog.bSetPrintStrategy = 1; + //bLogopen = netsdk.CLIENT_LogOpen(setLog); + // if (!bLogopen) { + // System.err.println("Failed to open NetSDK log"); + // } + + // 璁剧疆鏂嚎閲嶈繛鍥炶皟鎺ュ彛锛岃缃繃鏂嚎閲嶈繛鎴愬姛鍥炶皟鍑芥暟鍚庯紝褰撹澶囧嚭鐜版柇绾挎儏鍐碉紝SDK鍐呴儴浼氳嚜鍔ㄨ繘琛岄噸杩炴搷浣� + // 姝ゆ搷浣滀负鍙�夋搷浣滐紝浣嗗缓璁敤鎴疯繘琛岃缃� + netsdk.CLIENT_SetAutoReconnect(haveReConnect, null); + + //璁剧疆鐧诲綍瓒呮椂鏃堕棿鍜屽皾璇曟鏁帮紝鍙�� + int waitTime = 5000; //鐧诲綍璇锋眰鍝嶅簲瓒呮椂鏃堕棿璁剧疆涓�5S + int tryTimes = 1; //鐧诲綍鏃跺皾璇曞缓绔嬮摼鎺�1娆� + netsdk.CLIENT_SetConnectTime(waitTime, tryTimes); + + // 璁剧疆鏇村缃戠粶鍙傛暟锛孨ET_PARAM鐨刵Waittime锛宯ConnectTryNum鎴愬憳涓嶤LIENT_SetConnectTime + // 鎺ュ彛璁剧疆鐨勭櫥褰曡澶囪秴鏃舵椂闂村拰灏濊瘯娆℃暟鎰忎箟鐩稿悓,鍙�� + NetSDKLib.NET_PARAM netParam = new NetSDKLib.NET_PARAM(); + netParam.nConnectTime = 10000; // 鐧诲綍鏃跺皾璇曞缓绔嬮摼鎺ョ殑瓒呮椂鏃堕棿 + netParam.nGetConnInfoTime = 3000; // 璁剧疆瀛愯繛鎺ョ殑瓒呮椂鏃堕棿 + netParam.nGetDevInfoTime = 3000;//鑾峰彇璁惧淇℃伅瓒呮椂鏃堕棿锛屼负0榛樿1000ms + netsdk.CLIENT_SetNetworkParam(netParam); + + return true; + } + + /** + * \if ENGLISH_LANG + * CleanUp + * \else + * 娓呴櫎鐜 + * \endif + */ + public static void cleanup() { + if (bLogopen) { + netsdk.CLIENT_LogClose(); + } + + if (bInit) { + netsdk.CLIENT_Cleanup(); + } + } + + /** + * \if ENGLISH_LANG + * Login Device + * \else + * 鐧诲綍璁惧 + * \endif + */ + public static LLong login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword, NetSDKLib.NET_DEVICEINFO_Ex lpDeviceInfo) { + IntByReference nError = new IntByReference(0); + //鍏ュ弬 + NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam = new NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY(); + pstInParam.nPort = m_nPort; + pstInParam.szIP = m_strIp.getBytes(); + pstInParam.szPassword = m_strPassword.getBytes(); + pstInParam.szUserName = m_strUser.getBytes(); + //鍑哄弬 + //NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam = new NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY(); + LLong m_hLoginHandle = netsdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser, m_strPassword, 0, null, lpDeviceInfo, nError); + //m_hLoginHandle=netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam); + if (m_hLoginHandle.longValue() == 0) { + log.debug("Login Failed [" + m_strIp + ":" + m_nPort + "],閿欒鐮�:" + getErrorCodePrint()); + } else { + log.debug("Login Success [ " + m_strIp + ":" + m_nPort + " ]"); + } + return m_hLoginHandle; + } + + /** + * \if ENGLISH_LANG + * Logout Device + * \else + * 鐧诲嚭璁惧 + * \endif + */ + public static boolean logout(LLong loginId) { + if (loginId.longValue() == 0) { + return false; + } + boolean bRet = netsdk.CLIENT_Logout(loginId); + if (bRet) { + loginId.setValue(0); + } + return bRet; + } + + } \ No newline at end of file -- Gitblit v1.9.3