zhubaomin
2025-04-07 cd9bd57600aeda42a7b06e015ea1e0b94dd37b75
pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/Command.java
New file
@@ -0,0 +1,146 @@
package com.dy.testServer.console;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import com.dy.common.mw.channel.rmi.RmiConfigVo;
import com.dy.common.mw.channel.rmi.RmiUnit;
import com.dy.testServer.ServerProperties;
import com.dy.testServer.forRmi.MwTestClientStatus;
import com.dy.testServer.forRmi.Manager;
public class Command {
   private static final String[] commands ;
   static{
      commands = new String[]{
            "config 查看配置信息",
            "show 显示mwTest情况",
            "start 启动mwTest建立TCP连接数据",
            "report 启动mwTest RTU上报数据",
            "exit 退出",
      };
   }
   public static boolean dealCommand(String command, PrintWriter prtWrt){
      boolean exit = false ;
      if (command.equals("help")) {
         outCommand(prtWrt);
      } else if (command.equals("config")) {
         config(prtWrt);
      } else if (command.equals("show")) {
         show(prtWrt);
      } else if (command.equals("start")) {
         startNetConnect(prtWrt);
      } else if (command.equals("report")) {
         startRtuReport(prtWrt);
      } else if(command.equals("exit")){
         exit = true ;
      } else {
         outError(prtWrt);
      }
      return exit ;
   }
   private static void outCommand(PrintWriter prtWrt){
      prtWrt.println("");
      prtWrt.println("命令");
      for(String s : commands){
         prtWrt.println("  " + s);
      }
      prtWrt.println("");
   }
   private static void outError(PrintWriter prtWrt){
      prtWrt.println("");
      prtWrt.println("命令不可识别!");
      prtWrt.println("");
   }
   private static void config(PrintWriter prtWrt){
      prtWrt.println("");
      prtWrt.println("相关mwTest的配置");
      prtWrt.println("  模拟客户的RtuAddr起始号:" + ServerProperties.rtuAddrStart);
      prtWrt.println("  模拟客户的RtuAddr截止号:" + ServerProperties.rtuAddrEnd);
      prtWrt.println("  每个mwTest分配的RtuAddr数:" + ServerProperties.rtuAddrPerMwTest);
      prtWrt.println("  通信中间件IP:" + ServerProperties.tcpServerIp);
      prtWrt.println("  通信中间件端口:" + ServerProperties.tcpServerPort);
      prtWrt.println("  mwTest发送数据间隔(秒):" + ServerProperties.sendInterval);
      prtWrt.println("  mwTest每RtuAddr号发送数据次数:" + ServerProperties.sendTimes);
      prtWrt.println("  mwTest每一轮次发送数据,其中包括心跳发送次数:" + ServerProperties.heartbeatTimes);
      prtWrt.println("本服务RMI Server配置");
      String ip = null ;
      try {
         ip = InetAddress.getLocalHost().getHostAddress();
      } catch (UnknownHostException e) {
         e.printStackTrace();
      }
      RmiConfigVo confVo = RmiUnit.getInstance().getAdapter().getConfig() ;
      if(ip != null){
         prtWrt.println("  RMI Server:" + ip + ":" + confVo.port + "/" + confVo.context);
      }else{
         prtWrt.println("  RMI Server:[ip]:" + confVo.port + "/" + confVo.context);
      }
      prtWrt.println("");
   }
   private static void show(PrintWriter prtWrt){
      prtWrt.println("");
      prtWrt.println("当前已注册mwTest客户端数量:" + Manager.id2TokenMap.size());
      if(Manager.id2TokenMap.size() > 0){
         prtWrt.println("mwTest客户端及其工作信息");
         Set<Map.Entry<String, MwTestClientStatus>> set = Manager.token2ClientMap.entrySet() ;
         Iterator<Map.Entry<String, MwTestClientStatus>> it = set.iterator() ;
         Map.Entry<String, MwTestClientStatus> ent ;
         while(it.hasNext()){
            ent = it.next() ;
            prtWrt.println("  mwTest客户端(token=" + ent.getKey() + ")");
            MwTestClientStatus sta = ent.getValue() ;
            if(sta != null){
               if(sta.confVo != null){
                  prtWrt.println("    rtuAddr范围:" + sta.confVo.rtuAddrStart + "--" + sta.confVo.rtuAddrEnd);
               }
               if(sta.startVo != null){
                  prtWrt.println("    TCP连接:" + (sta.startVo.start?"已经开始":"未开始"));
               }else{
                  prtWrt.println("    TCP连接:未开始") ;
               }
               if(sta.reportVo != null){
                  prtWrt.println("    RTU上报数据:" + (sta.reportVo.report?"已经开始":"未开始"));
               }else{
                  prtWrt.println("    RTU上报数据:未开始") ;
               }
               if(sta.count != null){
                  prtWrt.println("    已经上报数据:" + sta.count + "条");
               }
               if(sta.overCount != null){
                  prtWrt.println("    已经完成上报数据:" + sta.overCount + "台RTU");
               }
               if(sta.over != null && sta.over){
                  prtWrt.println("    上报数据已经完成,共用时:" + sta.seconds + "秒");
               }
            }
         }
      }
      prtWrt.println("");
   }
   private static void startNetConnect(PrintWriter prtWrt){
      prtWrt.println("");
      prtWrt.println("  已经允许mwTest建立TCP连接");
      prtWrt.println("");
      Manager.enablemwTestStartTcpConnect = true ;
   }
   private static void startRtuReport(PrintWriter prtWrt){
      prtWrt.println("");
      prtWrt.println("  已经允许mwTest RTU上报数据了");
      prtWrt.println("");
      Manager.enablemwTestStartRtuReport = true ;
   }
}