From 4a293865ac437a812eea8800cc0b04314efbd210 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 24 十月 2023 10:06:24 +0800
Subject: [PATCH] 异步登录增加延迟时间避免接口频繁 修改大华通道数量获取
---
ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java | 385 ++++++++++++++++++++++++++++---------------------------
1 files changed, 196 insertions(+), 189 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java
index af9a250..b308842 100644
--- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java
@@ -1,189 +1,196 @@
-package com.ruoyi.device.dhsdk.lib;
-
-import com.ruoyi.device.dhsdk.lib.DynamicParseUtil;
-import org.xml.sax.SAXException;
-
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.*;
-
-/**
- * @author 47081
- * @version 1.0
- * @description 鍔ㄦ�佸簱鍔犺浇
- * @date 2020/11/14
- */
-public class LibraryLoad {
- private static final String ARCH_WINDOWS = "win";
- private static final String ARCH_LINUX = "linux";
- private static final String ARCH_MAC = "mac";
- private static final int PREFIX_64 = 64;
- private static final int PREFIX_32 = 32;
- private static final String PREFIX_ARM = "ARM";
- private static final String EXTERNAL_WIN = ".dll";
- private static final String EXTERNAL_LINUX = ".so";
- private static final String EXTERNAL_MAC = ".dylib";
- private static DynamicParseUtil dynamicParseUtil;
- /** 褰撳墠璇诲彇鐨勭洰褰� */
- private static String currentFold;
- /** 鍔ㄦ�佸簱闇�瑕佸啓鍏ョ殑鐩綍 */
- private static String EXTRACT_PATH = System.getProperty("java.io.tmpdir");
-
- private static boolean written = false;
-
- /**
- * 璁剧疆鍔ㄦ�佸簱鍐欏叆鐨勮矾寰�,閫傜敤浜庨渶瑕佽嚜瀹氫箟鍔犺浇璺緞鐨勭敤鎴�
- *
- * @param path 鍔ㄦ�佸簱鍐欏叆鐨勬枃浠跺す,浠庤鏂囦欢澶逛笅鍔犺浇sdk鐨勫姩鎬佸簱
- */
- public static void setExtractPath(String path) {
- EXTRACT_PATH = path;
- }
-
- public static String getExtractPath() {
- return EXTRACT_PATH;
-
- }
- /** 鍔ㄦ�佸簱璺緞 */
- private static String INNER_PATH;
-
- // private static final String EXTERNAL_MAC = ".so";
-
- private static String extractNetSDKLib(String libName) {
- return extractLibrary(libName);
- }
-
- public static String getLoadLibrary(String libraryName) {
- currentFold = getLibraryFold();
- if (dynamicParseUtil == null) {
- try {
- dynamicParseUtil =
- new DynamicParseUtil(
- LibraryLoad.class.getClassLoader().getResourceAsStream("dynamic-lib-load.xml"));
- if (!written) {
- for (String libName : dynamicParseUtil.getLibsSystem(currentFold)) {
- extractLibrary(libName);
- }
- written = true;
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- String fullName = getLibraryName(libraryName);
- String path = EXTRACT_PATH;
- if (!(EXTRACT_PATH.endsWith("/") || EXTRACT_PATH.endsWith("\\"))) {
- path = EXTRACT_PATH + "/";
- }
- System.out.println("load library: " + path + fullName);
- return path + fullName;
- }
-
- /**
- * 灏唈ar鍖呴噷鐨勫姩鎬佸簱鍐欏叆鍒扮郴缁熺紦瀛樼洰褰�,浣跨敤缁濆璺緞鍔犺浇鍔ㄦ�佸簱
- *
- * @param libName
- * @return
- */
- private static String extractLibrary(String libName) {
- return extractLibrary("", libName);
- }
-
- /**
- * 鐩稿璺緞鏂囦欢澶�
- *
- * @param relativePath 鐩稿璺緞
- * @param libName 鍔ㄦ�佸簱璺緞
- * @return
- */
- private static String extractLibrary(String relativePath, String libName) {
- if (libName.trim().equals("")) {
- return "";
- }
- String libFullName = getLibraryName(libName);
- String dir = getLibraryFold();
- if (!(relativePath.endsWith("/") || relativePath.endsWith("\\"))) {
- relativePath = relativePath + "/";
- }
- String fileName = relativePath + dir + "/" + libFullName;
- InputStream in = LibraryLoad.class.getResourceAsStream(fileName);
- BufferedInputStream reader;
- FileOutputStream writer;
- File extractedLibFile = null;
- try {
- if (in == null) {
- in = new FileInputStream(fileName);
- }
- String nativeTempDir = EXTRACT_PATH;
- if (!(nativeTempDir.endsWith("/") || nativeTempDir.endsWith("\\"))) {
- nativeTempDir = nativeTempDir + "/";
- }
- extractedLibFile = new File(nativeTempDir + libFullName);
- reader = new BufferedInputStream(in);
- writer = new FileOutputStream(extractedLibFile);
- byte[] buffer = new byte[1024];
- while (true) {
- int len = reader.read(buffer);
- if (len == 0 || len == -1) break;
- writer.write(buffer, 0, len);
- }
- reader.close();
- writer.close();
- in.close();
- } catch (Exception e) {
- //System.out.println("dynamic file[ "+ fileName+ " ] not found in project.please ensure you need this library.");
- }
- return extractedLibFile != null ? extractedLibFile.getAbsolutePath() : "";
- }
-
- /**
- * 鑾峰彇鍔ㄦ�佸簱瀹屾暣鍚嶇О
- *
- * @param libName
- * @return
- */
- private static String getLibraryName(String libName) {
- String dir = currentFold;
- String libPrefix = "";
- String libExtension = EXTERNAL_WIN;
-
- if (!dir.contains("win")) {
- libPrefix = "lib";
- if (dir.contains("linux")) {
- libExtension = EXTERNAL_LINUX;
- } else {
- // libExtension=".dylib";
- libExtension = EXTERNAL_MAC;
- }
- }
- libName = dynamicParseUtil.compareLibName(currentFold, libName);
- // 鍔ㄦ�佸簱浠ib寮�澶达紝鍒欎笉娣诲姞lib鍓嶇紑
- // 浠ib寮�澶寸殑搴撳垯涓嶆坊鍔爈ib鍓嶇紑
- return (libName.startsWith("lib") ? "" : libPrefix) + libName + libExtension;
- }
-
- // 鑾峰彇绯荤粺瀵瑰簲鐨勫姩鎬佸簱鏂囦欢澶�
- private static String getLibraryFold() {
- String osType;
- String osName = System.getProperty("os.name");
- if (osName.toLowerCase().startsWith("linux")) {
- osType = ARCH_LINUX;
- } else if (osName.toLowerCase().startsWith("mac")
- || osName.toLowerCase().startsWith("darwin")) {
- osType = ARCH_MAC;
- } else if (osName.toLowerCase().startsWith("windows")) {
- osType = ARCH_WINDOWS;
- } else {
- osType = "";
- }
- String arch = System.getProperty("os.arch");
- arch = arch.toLowerCase().trim();
- if ("i386".equals(arch) || "i686".equals(arch)||"x86".equals(arch)) {
- arch = PREFIX_32 + "";
- } else if ("x86_64".equals(arch) || "amd64".equals(arch)) {
- arch = PREFIX_64 + "";
- } else if (arch.startsWith("arm")) {
- arch = PREFIX_ARM + "";
- }
- return osType + arch;
- }
-}
+package com.ruoyi.device.dhsdk.lib;
+
+import com.ruoyi.device.dhsdk.lib.DynamicParseUtil;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.*;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 鍔ㄦ�佸簱鍔犺浇
+ * @date 2020/11/14
+ */
+public class LibraryLoad {
+ private static final String ARCH_WINDOWS = "win";
+ private static final String ARCH_LINUX = "linux";
+ private static final String ARCH_MAC = "mac";
+ private static final int PREFIX_64 = 64;
+ private static final int PREFIX_32 = 32;
+ private static final String PREFIX_ARM = "ARM";
+ private static final String EXTERNAL_WIN = ".dll";
+ private static final String EXTERNAL_LINUX = ".so";
+ private static final String EXTERNAL_MAC = ".dylib";
+ private static DynamicParseUtil dynamicParseUtil;
+ /** 褰撳墠璇诲彇鐨勭洰褰� */
+ private static String currentFold;
+ /** 鍔ㄦ�佸簱闇�瑕佸啓鍏ョ殑鐩綍 */
+ private static String EXTRACT_PATH = System.getProperty("java.io.tmpdir");
+
+ private static boolean written = false;
+
+ /**
+ * 璁剧疆鍔ㄦ�佸簱鍐欏叆鐨勮矾寰�,閫傜敤浜庨渶瑕佽嚜瀹氫箟鍔犺浇璺緞鐨勭敤鎴�
+ *
+ * @param path 鍔ㄦ�佸簱鍐欏叆鐨勬枃浠跺す,浠庤鏂囦欢澶逛笅鍔犺浇sdk鐨勫姩鎬佸簱
+ */
+ public static void setExtractPath(String path) {
+ EXTRACT_PATH = path;
+ }
+
+ public static String getExtractPath() {
+ return EXTRACT_PATH;
+
+ }
+ /** 鍔ㄦ�佸簱璺緞 */
+ private static String INNER_PATH;
+
+ // private static final String EXTERNAL_MAC = ".so";
+
+ private static String extractNetSDKLib(String libName) {
+ return extractLibrary(libName);
+ }
+
+ public static String getLoadLibrary(String libraryName) {
+ currentFold = getLibraryFold();
+ if (dynamicParseUtil == null) {
+ try {
+ dynamicParseUtil =
+ new DynamicParseUtil(
+ LibraryLoad.class.getClassLoader().getResourceAsStream("dynamic-lib-load.xml"));
+ if (!written) {
+ for (String libName : dynamicParseUtil.getLibsSystem(currentFold)) {
+ extractLibrary(libName);
+ }
+ written = true;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ String fullName = getLibraryName(libraryName);
+ String path = EXTRACT_PATH;
+ if (!(EXTRACT_PATH.endsWith("/") || EXTRACT_PATH.endsWith("\\"))) {
+ path = EXTRACT_PATH + "/";
+ }
+ System.out.println("load library: " + path + fullName);
+ return path + fullName;
+ }
+
+ /**
+ * 灏唈ar鍖呴噷鐨勫姩鎬佸簱鍐欏叆鍒扮郴缁熺紦瀛樼洰褰�,浣跨敤缁濆璺緞鍔犺浇鍔ㄦ�佸簱
+ *
+ * @param libName
+ * @return
+ */
+ private static String extractLibrary(String libName) {
+ return extractLibrary("/lib", libName);
+ }
+
+ /**
+ * 鐩稿璺緞鏂囦欢澶�
+ *
+ * @param relativePath 鐩稿璺緞
+ * @param libName 鍔ㄦ�佸簱璺緞
+ * @return
+ */
+ private static String extractLibrary(String relativePath, String libName) {
+ if (libName.trim().equals("")) {
+ return "";
+ }
+ String libFullName = getLibraryName(libName);
+ String dir = getLibraryFold();
+ if (!(relativePath.endsWith("/") || relativePath.endsWith("\\"))) {
+ relativePath = relativePath + "/";
+ }
+ String fileName = relativePath + dir + "/" + libFullName;
+ InputStream in = LibraryLoad.class.getResourceAsStream(fileName);
+ BufferedInputStream reader;
+ FileOutputStream writer;
+ File extractedLibFile = null;
+ try {
+ if (in == null) {
+ in = new FileInputStream(fileName);
+ }
+ String nativeTempDir = EXTRACT_PATH;
+ if (!(nativeTempDir.endsWith("/") || nativeTempDir.endsWith("\\"))) {
+ nativeTempDir = nativeTempDir + "/";
+ }
+ extractedLibFile = new File(nativeTempDir + libFullName);
+ reader = new BufferedInputStream(in);
+
+ // 妫�鏌ユ枃浠跺す鏄惁瀛樺湪锛屽鏋滀笉瀛樺湪鍒欏垱寤�
+ File parentDir = extractedLibFile.getParentFile();
+ if (!parentDir.exists()) {
+ parentDir.mkdirs();
+ }
+
+ writer = new FileOutputStream(extractedLibFile);
+ byte[] buffer = new byte[1024];
+ while (true) {
+ int len = reader.read(buffer);
+ if (len == 0 || len == -1) break;
+ writer.write(buffer, 0, len);
+ }
+ reader.close();
+ writer.close();
+ in.close();
+ } catch (Exception e) {
+ System.out.println("dynamic file[ " + fileName + " ] not found in project.please ensure you need this library.");
+ }
+ return extractedLibFile != null ? extractedLibFile.getAbsolutePath() : "";
+ }
+
+ /**
+ * 鑾峰彇鍔ㄦ�佸簱瀹屾暣鍚嶇О
+ *
+ * @param libName
+ * @return
+ */
+ private static String getLibraryName(String libName) {
+ String dir = currentFold;
+ String libPrefix = "";
+ String libExtension = EXTERNAL_WIN;
+
+ if (!dir.contains("win")) {
+ libPrefix = "lib";
+ if (dir.contains("linux")) {
+ libExtension = EXTERNAL_LINUX;
+ } else {
+ // libExtension=".dylib";
+ libExtension = EXTERNAL_MAC;
+ }
+ }
+ libName = dynamicParseUtil.compareLibName(currentFold, libName);
+ // 鍔ㄦ�佸簱浠ib寮�澶达紝鍒欎笉娣诲姞lib鍓嶇紑
+ // 浠ib寮�澶寸殑搴撳垯涓嶆坊鍔爈ib鍓嶇紑
+ return (libName.startsWith("lib") ? "" : libPrefix) + libName + libExtension;
+ }
+
+ // 鑾峰彇绯荤粺瀵瑰簲鐨勫姩鎬佸簱鏂囦欢澶�
+ private static String getLibraryFold() {
+ String osType;
+ String osName = System.getProperty("os.name");
+ if (osName.toLowerCase().startsWith("linux")) {
+ osType = ARCH_LINUX;
+ } else if (osName.toLowerCase().startsWith("mac")
+ || osName.toLowerCase().startsWith("darwin")) {
+ osType = ARCH_MAC;
+ } else if (osName.toLowerCase().startsWith("windows")) {
+ osType = ARCH_WINDOWS;
+ } else {
+ osType = "";
+ }
+ String arch = System.getProperty("os.arch");
+ arch = arch.toLowerCase().trim();
+ if ("i386".equals(arch) || "i686".equals(arch)||"x86".equals(arch)) {
+ arch = PREFIX_32 + "";
+ } else if ("x86_64".equals(arch) || "amd64".equals(arch)) {
+ arch = PREFIX_64 + "";
+ } else if (arch.startsWith("arm")) {
+ arch = PREFIX_ARM + "";
+ }
+ return osType + arch;
+ }
+}
--
Gitblit v1.9.3