From 23f8f5155749bbe0d2494c52d8adc3e6476b9cac Mon Sep 17 00:00:00 2001
From: Administrator <zhubaomin>
Date: 星期三, 20 十二月 2023 17:23:55 +0800
Subject: [PATCH] 2023-12-20 朱宝民 IC卡15个接口重构,角色授权,获取用户信息
---
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/TcpDownCommandCache.java | 129 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 129 insertions(+), 0 deletions(-)
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/TcpDownCommandCache.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/TcpDownCommandCache.java
new file mode 100644
index 0000000..7a0cf8b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/forTcp/TcpDownCommandCache.java
@@ -0,0 +1,129 @@
+package com.dy.aceMw.server.forTcp;
+
+
+import com.dy.common.queue.Node;
+import com.dy.common.queue.Queue;
+import com.dy.common.mw.protocol.MidResultFromRtu;
+import com.dy.common.mw.protocol.MidResultToRtu;
+import com.dy.aceMw.server.ServerProperties;
+
+/**
+ * 闈炵嚎绋嬪畨鍏ㄧ殑锛屽彧鑳藉湪鍗曠嚎绋嬩腑杩愯
+ */
+public class TcpDownCommandCache {
+
+ //TCP涓嬭鍛戒护缂撳瓨闃熷垪
+ private static Queue cacheQueue = new Queue("tcpDownCommandQueue") ;
+
+ private static TcpDownCommandCache instance = new TcpDownCommandCache() ;
+
+ private TcpDownCommandCache(){
+ cacheQueue.setLimit(ServerProperties.cacheUpDownDataWarnCount, ServerProperties.cacheUpDownDataMaxCount);
+ }
+
+ public static TcpDownCommandCache getInstance(){
+ return instance ;
+ }
+
+ /**
+ * 缂撳瓨鍛戒护
+ * @param result
+ * @throws Exception
+ */
+ public static void cacheCommand(MidResultToRtu result) throws Exception{
+ if(result != null){
+ if(result.maxSendTimes == null){
+ //璁剧疆鏈�澶у彂閫佹鏁�
+ result.maxSendTimes = ServerProperties.downComandMaxResendTimes ;
+ }
+ if(result.isSendFirst){
+ cacheQueue.pushHead(new TcpDownCommandObj(result));
+ }else{
+ cacheQueue.pushTail(new TcpDownCommandObj(result));
+ }
+ }
+ }
+
+ /**
+ * 鍖归厤鍛戒护缁撴灉
+ * @param rsFromRtu
+ * @return
+ */
+ public static MidResultToRtu matchFromHead(MidResultFromRtu rsFromRtu){
+ MidResultToRtu res = null ;
+ TcpDownCommandObj obj = null ;
+ Node node = cacheQueue.getFirstNode() ;
+ while(node != null && node.obj != null){
+ obj = (TcpDownCommandObj)node.obj;
+ res = obj.result ;
+ if(res != null
+ && res.rtuAddr.equals(rsFromRtu.rtuAddr)
+ && res.downCode.equals(rsFromRtu.upCode)){
+ obj.onceReceivedResult = true ;//鏍囪瘑宸茬粡鏀跺埌鍛戒护缁撴灉
+ return res ;
+ }else{
+ node = node.pre ;
+ }
+ }
+
+ return null ;
+ }
+
+ /**
+ * 鍖归厤鍛戒护缁撴灉
+ * @param rsFromRtu
+ * @return
+ */
+ public static MidResultToRtu matchFromTail(MidResultFromRtu rsFromRtu){
+ MidResultToRtu res = null ;
+ TcpDownCommandObj obj = null ;
+ Node node = cacheQueue.getLastNode() ;
+ while(node != null && node.obj != null){
+ obj = (TcpDownCommandObj)node.obj;
+ res = obj.result ;
+ if(res != null
+ && res.rtuAddr.equals(rsFromRtu.rtuAddr)
+ && res.downCode.equals(rsFromRtu.upCode)){
+ obj.onceReceivedResult = true ;//鏍囪瘑宸茬粡鏀跺埌鍛戒护缁撴灉
+ return res ;
+ }else{
+ node = node.pre ;
+ }
+ }
+
+ return null ;
+ }
+
+ /**
+ * 寰楀埌绗竴涓妭鐐�
+ * @return
+ */
+ public static Node getFirstQueueNode(){
+ return cacheQueue.getFirstNode() ;
+ }
+
+ /**
+ * 寰楀埌鏈�鍚庝竴涓妭鐐�
+ * @return
+ */
+ public static Node getLastQueueNode(){
+ return cacheQueue.getLastNode() ;
+ }
+
+ /**
+ * 绉婚櫎鑺傜偣
+ * @param node
+ */
+ public static void removeNode(Node node){
+ cacheQueue.remove(node);
+ }
+
+ /**
+ * 缂撳瓨鐨勮妭鐐规暟
+ * @Return 缂撳瓨鑺傜偣鏁�
+ */
+ public static Integer size(){
+ return cacheQueue.size() ;
+ }
+
+}
--
Gitblit v1.8.0