Переглянути джерело

refactoring class member variables

shjung 6 днів тому
батько
коміт
809c8a40d3

+ 30 - 1
tsi-comm-server/src/main/java/com/tsi/comm/server/controller/TsiCommServerRestController.java

@@ -317,7 +317,7 @@ public class TsiCommServerRestController {
     public String infoAlarm() {
         StringBuilder sb = getCommonHead();
 
-        sb.append(sep).append(" System Alarm Information.").append(sep);
+//        sb.append(sep).append(" System Alarm Information.").append(sep);
         sb.append(heading).append(sep).append(sep);
         sb.append("***Un Registered Node Information.").append(sep);
         sb.append(heading).append(sep);
@@ -352,6 +352,35 @@ public class TsiCommServerRestController {
         for (String info : DUP_CONNECT_INFO_SET) {
             sb.append(String.format(" %5d %s", ii++, info)).append(sep);
         }
+        sb.append(heading).append(sep).append(sep);
+
+        ii = 1;
+        sb.append("*Signal Phase count zero Node Information.").append(sep);
+        sb.append(heading).append(sep);
+        sb.append("   SEQ Information").append(sep);
+        sb.append(heading).append(sep);
+        for (Map.Entry<Long, TsiNodeVo> obj : this.nodeManager.getTsiNodeVoMap().entrySet()) {
+            final TsiNodeVo node = obj.getValue();
+            if (node.isConnect() && node.getSigCount() == 0) {
+                sb.append(String.format(" %5d %d", ii++, node.getNodeId())).append(sep);
+            }
+        }
+        sb.append(heading).append(sep).append(sep);
+
+        ii = 1;
+        sb.append("*CRC or Packet Error Node Information.").append(sep);
+        sb.append(heading).append(sep);
+        sb.append("   SEQ Information(CRC/Packet)").append(sep);
+        sb.append(heading).append(sep);
+        for (Map.Entry<Long, TsiNodeVo> obj : this.nodeManager.getTsiNodeVoMap().entrySet()) {
+            final TsiNodeVo node = obj.getValue();
+            if (node.isCrcError() || node.isPacketError()) {
+                String crcError = node.isCrcError() ? "true" : "false";
+                String packetError = node.isPacketError() ? "true" : "false";
+                sb.append(String.format(" %5d %d %s/%s", ii++, node.getNodeId(), crcError, packetError)).append(sep);
+            }
+        }
+
         sb.append(heading).append(sep);
         return sb.toString();
     }

+ 17 - 4
tsi-comm-server/src/main/java/com/tsi/comm/server/process/packet/TsiChannelSession.java

@@ -14,13 +14,26 @@ public class TsiChannelSession {
     private TsiChannelSession() {
         // Private constructor to prevent instantiation
     }
+    public static void initChannel(TsiNodeVo nodeVo, String remoteIpAddress) {
+        try {
+            if (nodeVo != null) {
+                final String logKey = nodeVo.getKey();
+                MDC.put("id", logKey);
+                log.info("Node: {},     initChannel, Connects: {}, {}", nodeVo.getNodeId(), nodeVo.getConnectCount().get(), remoteIpAddress);
+                MDC.clear();
+            }
+        }
+        catch (Exception e) {
+            // Log the exception with a meaningful message
+        }
+    }
 
     public static void sessionActive(TsiNodeVo nodeVo, String remoteIpAddress) {
         try {
             if (nodeVo != null) {
                 final String logKey = nodeVo.getKey();
                 MDC.put("id", logKey);
-                log.info("Node: {}, ---Connect, Connects: {}, {}", nodeVo.getNodeId(), nodeVo.getConnectCount().get(), remoteIpAddress);
+                log.info("Node: {},   sessionActive, Connects: {}, {}", nodeVo.getNodeId(), nodeVo.getConnectCount().get(), remoteIpAddress);
                 MDC.clear();
             }
         }
@@ -34,7 +47,7 @@ public class TsiChannelSession {
             if (nodeVo != null) {
                 final String logKey = nodeVo.getKey();
                 MDC.put("id", logKey);
-                log.info("Node: {}, Disconnect, Connects: {}, {}", nodeVo.getNodeId(), nodeVo.getConnectCount().get(), remoteIpAddress);
+                log.info("Node: {}, sessionInactive, Connects: {}, {}", nodeVo.getNodeId(), nodeVo.getConnectCount().get(), remoteIpAddress);
                 MDC.clear();
             }
         }
@@ -48,7 +61,7 @@ public class TsiChannelSession {
             if (nodeVo != null) {
                 final String logKey = nodeVo.getKey();
                 MDC.put("id", logKey);
-                log.info("Node: {}, Registered, Connects: {}, {}", nodeVo.getNodeId(), nodeVo.getConnectCount().get(), remoteIpAddress);
+                log.info("Node: {},   objRegistered, Connects: {}, {}", nodeVo.getNodeId(), nodeVo.getConnectCount().get(), remoteIpAddress);
                 MDC.clear();
             }
         }
@@ -62,7 +75,7 @@ public class TsiChannelSession {
             if (nodeVo != null) {
                 final String logKey = nodeVo.getKey();
                 MDC.put("id", logKey);
-                log.info("Node: {}, RcvTimeout, Connects: {}, {}", nodeVo.getNodeId(), nodeVo.getConnectCount().get(), remoteIpAddress);
+                log.info("Node: {},  sessionTimeout, Connects: {}, {}", nodeVo.getNodeId(), nodeVo.getConnectCount().get(), remoteIpAddress);
                 MDC.clear();
             }
         }

+ 2 - 0
tsi-comm-server/src/main/java/com/tsi/comm/server/process/packet/TsiCvimPacketWorker.java

@@ -203,7 +203,9 @@ public class TsiCvimPacketWorker extends AbstractTsiCvimWorker implements Runnab
             if (result == 0) {
                 return true; // 파싱 성공
             }
+
             if (!nodeVo.isConnect()) {
+                log.error("parsing: errno({}), NodeId: {}, Disconnected.", result, nodeVo.getNodeId());
                 return false;   // 네트워크 연결이 끊어진 경우
             }
 

+ 6 - 4
tsi-comm-server/src/main/java/com/tsi/comm/server/protocol/TsiCpuPacket.java

@@ -134,7 +134,7 @@ public class TsiCpuPacket extends AbstractTsiPacket {
         // 체크섬 계산하지 않음
     }
 
-    protected int checkPacket() {
+    protected int checkPacket(TsiNodeVo obj, boolean checkCrc) {
 
         // 0 단계. STX1, STX2 체크
         if (this.buf[INDEX_STX1] != STX1 || this.buf[INDEX_STX2] != STX2) {
@@ -161,7 +161,9 @@ public class TsiCpuPacket extends AbstractTsiPacket {
         final int receivedCrc = ByteUtils.getUnsignedShort(this.buf, this.buf.length-2);
         final int calculatedCrc = CRC16Utils.CRC16_ccitt_cvim(this.buf, INDEX_LENGTH, this.length-2);  // 시작인덱스가 있으므로 전체길이로 계산
         if (receivedCrc != calculatedCrc) {
-            log.error("parsing: errno(-3), NodeId: {}, crc(recv/calc): {}/{}", this.nodeId, receivedCrc, calculatedCrc);
+            if (checkCrc || (obj != null && obj.isDump())) {
+                log.error("parsing: errno(-3), NodeId: {}, crc(recv/calc): {}/{}", this.nodeId, receivedCrc, calculatedCrc);
+            }
             return -3;
         }
         return 0;
@@ -170,7 +172,7 @@ public class TsiCpuPacket extends AbstractTsiPacket {
     public int parsing(TsiNodeVo obj, boolean isCheckPacket) {
 
         if (this.buf == null || this.buf.length < INDEX_STATUS_HDR+3) {
-            log.error("parsing: errno(-4), NodeId: {}, buf: {}, length: {}", this.nodeId, this.buf == null, this.buf == null ? 0 : this.buf.length);
+            log.error("parsing: errno(-4), NodeId: {}, buf==null: {}, length: {}", this.nodeId, this.buf == null, this.buf == null ? 0 : this.buf.length);
             return -4;
         }
 
@@ -184,7 +186,7 @@ public class TsiCpuPacket extends AbstractTsiPacket {
         // CVIM 데이터 및 TEST 데이터가 생성됨
         makeCvimPacket();
 
-        int result = checkPacket();
+        int result = checkPacket(obj, isCheckPacket);
         if (0 != result) {
             if (-3 == result) {
                 obj.setCrcError(true);

+ 3 - 1
tsi-comm-server/src/main/java/com/tsi/comm/server/tcp/initializer/CvimServerInitializer.java

@@ -1,6 +1,7 @@
 package com.tsi.comm.server.tcp.initializer;
 
 import com.tsi.comm.server.config.TsiCvimServerConfig;
+import com.tsi.comm.server.process.packet.TsiChannelSession;
 import com.tsi.comm.server.protocol.TsiCvibProtocolSpec;
 import com.tsi.comm.server.repository.TsiAlarmManager;
 import com.tsi.comm.server.repository.TsiNodeManager;
@@ -59,7 +60,6 @@ public class CvimServerInitializer extends ChannelInitializer<Channel> {
             return;
         }
 
-
         TsiNodeVo nodeVo = this.nodeManager.getIpAddr(remoteIpAddress);
 
         // 교차로 제어기는 통신 연결시 IP로 체크하지 않고 처음 데이터를 수신했을 경우에 노드 ID를 확인 할 수 있다.
@@ -95,5 +95,7 @@ public class CvimServerInitializer extends ChannelInitializer<Channel> {
 
         // Outbound 인코더(무선신호시스템에서는 전송하는 프로토콜 없음, 사용하지는 않음)
         pipeline.addLast("frameEncoder", this.cvimServerEncoder);
+
+        TsiChannelSession.initChannel(nodeVo, remoteIpAddress);
     }
 }