Exemple #1
0
        /// <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();
            }
        }
Exemple #2
0
        /// <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();
        }