view ServerMonitor/Objects/CheckResult.cs @ 0:3e1a2131f897

Initial commit. Ping check, scheduling, UI working. SSH check mostly working.
author Brad Greco <brad@bgreco.net>
date Mon, 31 Dec 2018 18:32:14 -0500
parents
children 453ecc1ed9ea
line wrap: on
line source

using ServerMonitorApp.Properties;
using System;
using System.Drawing;

namespace ServerMonitorApp
{
    public class CheckResult
    {
        public const string dateFormat = "yyyy-MM-dd HH:mm:ss.fff";

        public Check Check { get; private set; }

        public CheckStatus CheckStatus { get; private set; }

        public string Message { get; private set; }

        public DateTime StartTime { get; set; }

        public DateTime EndTime { get; set; }

        public CheckResult(Check check, CheckStatus status, string message)
        {
            Check = check;
            CheckStatus = status;
            Message = message;
        }

        public string ToLogString()
        {
            return string.Format("{0:00000} {1} {2} {3} {4}",
                Check.Id,
                StartTime.ToString(dateFormat).Replace("T", " "),
                EndTime.ToString(dateFormat).Replace("T", " "),
                CheckStatus,
                Message.Replace("\r\n", "\n").Replace('\r', '\n').Replace("\n", "\\n"));
        }

        public static CheckResult FromLogString(Check check, string logString)
        {
            DateTime startTime = DateTime.Parse(logString.Substring(6, 23));
            DateTime endTime = DateTime.Parse(logString.Substring(30, 23));
            int messageStartPos = logString.IndexOf(' ', 54);
            Enum.TryParse(logString.Substring(54, messageStartPos - 54), out CheckStatus status);
            return new CheckResult(check, status, logString.Substring(messageStartPos + 1)) { StartTime = startTime, EndTime = endTime };
        }
    }
}