From f0b6d018c5ae6e0a303725effa8939c93b510544 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 05 八月 2020 11:22:50 +0800
Subject: [PATCH] #

---
 /dev/null                                            |   52 -----------------
 src/main/java/com/zy/core/enums/SlaveType.java       |   20 ++++++
 src/main/java/com/zy/core/ServerBootstrap.java       |    5 -
 src/main/java/com/zy/core/cache/SlaveConnection.java |   63 +++++++++++++++++++++
 4 files changed, 85 insertions(+), 55 deletions(-)

diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index 60b9ec3..0d298b3 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -1,8 +1,7 @@
 package com.zy.core;
 
-import com.alibaba.fastjson.JSON;
 import com.core.common.Cools;
-import com.zy.core.cache.CrnConnection;
+import com.zy.core.cache.SlaveConnection;
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.CrnThread;
 import com.zy.core.thread.DevpThread;
@@ -37,7 +36,7 @@
             for (Slave crn : slaveProperties.getCrn()) {
                 CrnThread crnThread = new CrnThread(crn);
                 new Thread(crnThread).start();
-                CrnConnection.put(ThreadHandler.CRN_PREFIX + crn.getId(), crnThread);
+                SlaveConnection.put(ThreadHandler.CRN_PREFIX + crn.getId(), crnThread);
             }
         }
 
diff --git a/src/main/java/com/zy/core/cache/CrnConnection.java b/src/main/java/com/zy/core/cache/CrnConnection.java
deleted file mode 100644
index 1123216..0000000
--- a/src/main/java/com/zy/core/cache/CrnConnection.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.zy.core.cache;
-
-import com.zy.core.ThreadHandler;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Created by vincent on 2020/8/4
- */
-public class CrnConnection {
-
-    private static Map<String, ThreadHandler> conContain = new ConcurrentHashMap<>();
-
-    public static void put(String key, ThreadHandler threadHandler) {
-        remove(key);
-        conContain.put(key, threadHandler);
-    }
-
-    public static ThreadHandler get(String key) {
-        return conContain.get(key);
-    }
-
-    public static void remove(String key) {
-        ThreadHandler threadHandler = get(key);
-        if (null == threadHandler) {
-            return;
-        }
-        conContain.remove(key);
-        threadHandler.close();
-    }
-
-    public static String remove(ThreadHandler threadHandler) {
-        if (null == threadHandler) {
-            return null;
-        }
-        String key = null;
-        for (Map.Entry<String, ThreadHandler> entry : conContain.entrySet()){
-            if (entry.getValue() == threadHandler) {
-                key = entry.getKey();
-                break;
-            }
-        }
-        if (null != key) {
-            remove(key);
-            return key;
-        } else {
-            return null;
-        }
-    }
-
-}
diff --git a/src/main/java/com/zy/core/cache/SlaveConnection.java b/src/main/java/com/zy/core/cache/SlaveConnection.java
new file mode 100644
index 0000000..666d86a
--- /dev/null
+++ b/src/main/java/com/zy/core/cache/SlaveConnection.java
@@ -0,0 +1,63 @@
+package com.zy.core.cache;
+
+import com.zy.core.ThreadHandler;
+import com.zy.core.enums.SlaveType;
+import io.swagger.models.auth.In;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by vincent on 2020/8/4
+ */
+public class SlaveConnection {
+
+    private static final String _LINK = "_";
+
+    private static Map<String, ThreadHandler> conContain = new ConcurrentHashMap<>();
+
+    public static void put(SlaveType type, Integer id, ThreadHandler threadHandler) {
+        String key = toKey(type, id);
+        remove(type, id);
+        conContain.put(key, threadHandler);
+    }
+
+    public static ThreadHandler get(SlaveType type, Integer key) {
+        return conContain.get(toKey(type, key));
+    }
+
+    public static void remove(SlaveType type, Integer id) {
+        ThreadHandler threadHandler = get(type, id);
+        if (null == threadHandler) {
+            return;
+        }
+        conContain.remove(toKey(type, id));
+        threadHandler.close();
+    }
+
+    public static Integer remove(ThreadHandler threadHandler) {
+        if (null == threadHandler) {
+            return null;
+        }
+        String key = null;
+        for (Map.Entry<String, ThreadHandler> entry : conContain.entrySet()){
+            if (entry.getValue() == threadHandler) {
+                key = entry.getKey();
+                break;
+            }
+        }
+        if (null != key) {
+            SlaveType type = SlaveType.findInstance(key);
+            Integer id = Integer.parseInt(key.split(_LINK)[1]);
+            remove(type, id);
+            return id;
+        } else {
+            return null;
+        }
+    }
+
+    private static String toKey(SlaveType type, Integer id){
+        return type.toString()+_LINK+id;
+    }
+
+}
diff --git a/src/main/java/com/zy/core/enums/SlaveType.java b/src/main/java/com/zy/core/enums/SlaveType.java
new file mode 100644
index 0000000..7812caa
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/SlaveType.java
@@ -0,0 +1,20 @@
+package com.zy.core.enums;
+
+public enum SlaveType {
+
+    Crn,
+    Devp,
+    Barcode,
+    Led,
+    Scale,
+    ;
+
+    public static SlaveType findInstance(String s){
+        for (SlaveType type : SlaveType.values()) {
+            if (type.toString().equals(s)) {
+                return type;
+            }
+        }
+        return null;
+    }
+}

--
Gitblit v1.9.1