Example #1
0
        public Service(string displayName, Server parentServer, ISensor sensor)
        {
            ParentServer = parentServer;
            DisplayName = displayName;

            this.sensor = sensor;

            LastCheckDurations = new Queue<TimeSpan>(10);
        }
Example #2
0
        public Service(string serviceRecordName, Server parentServer)
        {
            var record = ServiceFileRecordRegistry.GetServiceFileRecord(serviceRecordName);

            ParentServer = parentServer;
            DisplayName = record.DisplayName;

            sensor = SensorFactory.BuildSensor(record);

            LastCheckDurations = new Queue<TimeSpan>(10);
        }
Example #3
0
        static void RedrawServer(Server server)
        {
            var j = 0;
            var offset = offsets[server.HostnameOrIpAddress];
            Func<int, int> rowIndex = ((p) => { var r = offset + j; j += p; return r; });

            rowIndex(1);

            foreach (var service in server.Services)
            {
                var nameText = string.Format("{0}:", service.DisplayName);
                var statusText = string.Format("{0,20}", service.LastState);
                var timingText = string.Format("{0,8:###.00}ms  {1,8:###.00}ms +- {2,6:###.00}ms",
                    service.LastCheckDuration.TotalMilliseconds,
                    service.LastCheckDurationMean,
                    service.LastCheckDurationStdDev);

                short statusFlags = 0;
                switch (service.LastState)
                {
                    case ServiceState.Unknown:
                        statusFlags = 13;
                        break;
                    case ServiceState.Reachable:
                        statusFlags = 10;
                        break;
                    case ServiceState.Unreachable:
                        statusFlags = 12;
                        break;
                    default:
                        statusFlags = 15;
                        break;
                }

                lock (buffer)
                {
                    buffer.clearRow(rowIndex(0));
                    buffer.Draw(nameText, 0, rowIndex(0), 15);
                    buffer.Draw(statusText, 20, rowIndex(0), statusFlags);
                    buffer.Draw(timingText, 50, rowIndex(0), 15);
                }
                rowIndex(1);
            }
        }