/// <summary> /// windctl status-all /// </summary> public static void StatusAll(StatusAllResponseProtobuf statusallResponseProtobuf) { if (statusallResponseProtobuf == null) { Console.WriteLine(ERROR_RESPONSE); return; } if (!statusallResponseProtobuf.Executed) { Console.WriteLine(String.Concat("command execute failed,", statusallResponseProtobuf.NoExecuteMessage)); return; } if (statusallResponseProtobuf.UnitProtobufArraySize < 1) { Console.WriteLine("command execute failed,not have any unit"); return; } foreach (UnitProtobuf item in statusallResponseProtobuf.UnitProtobufArray) { //第一行 if (item.State == 2) { Console.ForegroundColor = ConsoleColor.Green; } Console.Write("● "); if (item.State == 2) { Console.ResetColor(); } UnitSettingsProtobuf unitSettingsProtobuf = item.State == 2 ?item.RunningSettingsProtobuf :item.SettingsProtobuf; Console.Write($"{unitSettingsProtobuf.Name} - {unitSettingsProtobuf.Description}"); //第二行 Console.Write($"\n Loaded: {item.SettingsFilePath}"); if (unitSettingsProtobuf.AutoStart) { Console.Write(" (auto)"); } //第三行 Console.Write($"\n State: "); switch (item.State) { case 0: Console.Write("stopped"); break; case 1: Console.Write("starting"); break; case 2: Console.ForegroundColor = ConsoleColor.Green; Console.Write("running"); Console.ResetColor(); Console.Write(' '); Console.ForegroundColor = ConsoleColor.Cyan; Console.Write($"#{item.ProcessId}"); Console.ResetColor(); Console.Write($" (since {item.ProcessStartTime.ToLocalTimestampString()})"); break; case 3: Console.Write("stopping"); break; default: Console.Write("unknown"); break; } Console.WriteLine(); } }
/// <summary> /// windctl status unitKey /// </summary> public static void Status(StatusResponseProtobuf statusResponseProtobuf) { if (statusResponseProtobuf == null) { Console.WriteLine(ERROR_RESPONSE); return; } if (!statusResponseProtobuf.Executed) { Console.WriteLine(String.Concat("command execute failed,", statusResponseProtobuf.NoExecuteMessage)); return; } UnitProtobuf unitProtobuf = statusResponseProtobuf.UnitProtobuf; //第一行 if (unitProtobuf.State == 2) { Console.ForegroundColor = ConsoleColor.Green; } Console.Write("● "); if (unitProtobuf.State == 2) { Console.ResetColor(); } UnitSettingsProtobuf unitSettingsProtobuf = unitProtobuf.State == 2?unitProtobuf.RunningSettingsProtobuf:unitProtobuf.SettingsProtobuf; Console.Write($"{unitSettingsProtobuf.Name} - {unitSettingsProtobuf.Description}"); //第二行 Console.Write($"\n Loaded: {unitProtobuf.SettingsFilePath}"); if (unitSettingsProtobuf.AutoStart) { Console.Write(" (auto)"); } //第三行 Console.Write($"\n State: "); switch (unitProtobuf.State) { case 0: Console.Write("stopped"); break; case 1: Console.Write("starting"); break; case 2: Console.ForegroundColor = ConsoleColor.Green; Console.Write("running"); Console.ResetColor(); Console.Write(' '); Console.ForegroundColor = ConsoleColor.Cyan; Console.Write($"#{unitProtobuf.ProcessId}"); Console.ResetColor(); Console.Write(" @"); switch (unitProtobuf.PriorityClass) { case 256: Console.Write("RealTime"); break; case 128: Console.Write("High"); break; case 32768: Console.Write("AboveNormal"); break; case 32: Console.Write("Normal"); break; case 16384: Console.Write("BelowNormal"); break; case 64: Console.Write("Idle"); break; default: Console.Write("unknown"); break; } Console.Write($" (since {unitProtobuf.ProcessStartTime.ToLocalTimestampString()})"); break; case 3: Console.Write("stopping"); break; default: Console.Write("unknown"); break; } //第4行 Console.Write($"\nCommandLine: {unitSettingsProtobuf.AbsoluteExecutePath}"); if (!String.IsNullOrWhiteSpace(unitSettingsProtobuf.Arguments)) { Console.Write($" {unitSettingsProtobuf.Arguments}"); } //第5行 if (!String.IsNullOrWhiteSpace(unitSettingsProtobuf.EnvironmentVariables)) { Console.Write($"\nEnvironment: {unitSettingsProtobuf.EnvironmentVariables}"); } //第6行 if (unitProtobuf.State == 2 && unitSettingsProtobuf.MonitorPerformanceUsage) { String cpuValue = String.Format(CultureInfo.InvariantCulture, "{0:N1} %", unitProtobuf.PerformanceCounterCPU / unitProtobuf.ProcessorCount); String ramValue = unitProtobuf.PerformanceCounterRAM.FixedByteSize(); Console.Write($"\nPerformance: {cpuValue}; {ramValue}"); } //第7行 if (unitProtobuf.State == 2 && unitSettingsProtobuf.MonitorNetworkUsage) { String sendSpeed = unitProtobuf.NetworkCounterSendSpeed.FixedByteSize(); String receiveSpeed = unitProtobuf.NetworkCounterReceiveSpeed.FixedByteSize(); String totalSent = unitProtobuf.NetworkCounterTotalSent.FixedByteSize(); String totalReceived = unitProtobuf.NetworkCounterTotalReceived.FixedByteSize(); Console.Write($"\n Network: ↑ {sendSpeed}/s,{totalSent}; ↓ {receiveSpeed}/s,{totalReceived}"); } Console.WriteLine(); }