From 001f24d4efd7b818bc2224b976c82faf4f9e564c Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期五, 01 十一月 2024 11:25:00 +0800 Subject: [PATCH] 1、通信协议要增加版本号(目的为远程升级准备),原来没有版本号的协议默认为版本号为1,所以调整了程序命名; 2、流浪控制器与控制器数据库表都增加了协议版本号字段; 3、VO中Double和Float类型的属性增加注解@JsonFormat(shape = JsonFormat.Shape.NUMBER_FLOAT, pattern="0.00" ) --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java | 80 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 79 insertions(+), 1 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java index e821b47..fc34bbf 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java @@ -5,6 +5,7 @@ import java.util.*; import java.util.Map.Entry; +import com.dy.common.mw.channel.tcp.TcpIoSessionAttrIdIsRtuAddr; import com.dy.common.util.DateTime; import org.apache.mina.core.session.IoSession; @@ -23,7 +24,43 @@ * 2023-12-19瀹炴祴锛屽彂鐜癏ashtable骞朵笉绾跨▼瀹夊叏锛屾墍浠ュ簲鐢ㄤ簡HashMap鍜宻ynchronized */ private static HashMap<String, TcpSession> sessionTable = new HashMap<String, TcpSession>() ; - + + + /** + * 寰楀埌淇℃伅 + * @return + */ + public static Integer[] info(){ + Integer rtuTotalConnect = 0 ;//宸茬粡杩炴帴杩囦腑闂翠欢鐨凴TU鎬绘暟锛堝寘鎷湪绾夸笌绂荤嚎鐨勶級 + Integer rtuTotalOnLine = 0 ;//鍦ㄧ嚎RTU鎬绘暟 + Integer rtuTotalOffLine = 0 ;//绂荤嚎RTU鎬绘暟 + synchronized (sessionTable){ + rtuTotalConnect = sessionTable.size() ; + Collection<TcpSession> col = sessionTable.values() ; + for(TcpSession se : col){ + if(se.ioSession.isConnected()){ + rtuTotalOnLine ++ ; + }else{ + rtuTotalOffLine ++ ; + } + } + } + return new Integer[] {rtuTotalConnect, rtuTotalOnLine, rtuTotalOffLine} ; + } + + /** + * 鍏抽棴鎵�鏈夌綉缁滆繛鎺� + */ + public static void closeAllSessions(){ + synchronized (sessionTable){ + Collection<TcpSession> col = sessionTable.values() ; + for(TcpSession se : col){ + se.ioSession.closeNow() ; + } + sessionTable.clear(); + } + } + /** * 鍔犲叆鏂扮殑IoSession * @param rtuAddr @@ -87,6 +124,27 @@ return null ; } } + + /** + * 寰楀埌鎵�鏈夊湪绾夸笌绂荤嚎鏁伴噺缁熻 + * @return [0]=鍦ㄧ嚎鏁伴噺锛孾2]涓婄嚎杩囷紝浣嗗綋鍓嶇绾跨殑鏁伴噺 + */ + public static Integer[] allOnLineStateStatistics(){ + synchronized (sessionTable){ + Integer[] arr = new Integer[]{0, 0} ; + Iterator<Entry<String, TcpSession>> it = sessionTable.entrySet().iterator() ; + Entry<String, TcpSession> entry = null ; + while(it.hasNext()){ + entry = it.next() ; + if(entry.getValue().ioSession.isConnected()){ + arr[0]++ ; + }else{ + arr[1]++ ; + } + } + return arr ; + } + } /** * 寰楀埌鎵�鏈夊湪绾挎儏鍐� @@ -104,6 +162,25 @@ return map ; } } + + + /** + * 寰楀埌閮ㄥ垎鍦ㄧ嚎鎯呭喌 + * @return + */ + public static HashMap<String, Boolean> partOnLine(String[] rtuAddrArrGrp){ + synchronized (sessionTable){ + HashMap<String, Boolean> map = new HashMap<String, Boolean>(); + for(String rtuAddr : rtuAddrArrGrp){ + TcpSession tcpSe = sessionTable.get(rtuAddr) ; + if(tcpSe != null){ + map.put(rtuAddr, tcpSe.ioSession.isConnected()) ; + } + } + return map ; + } + } + /** * 寰楀埌鎵�鏈塕TU杩炴帴鐘舵�佹儏鍐� * @return @@ -214,6 +291,7 @@ if(tcpSe.ioSession != null && tcpSe.ioSession.isConnected()){ if(now - tcpSe.lastUpDataTimeForOnlineCtrl > ServerProperties.disconnectedByNoUpDataMinutes){ tcpSe.ioSession.closeNow() ; + RtuLogDealer.log(entry.getKey(), "鍥犺緝闀挎椂闂存湭鏀朵笂琛屾暟鎹紝璁や负璁惧绂荤嚎"); } } } -- Gitblit v1.8.0