using System; using PepperDash.Core; namespace PepperDash.Essentials.Core { /// /// Defines the contract for IStatusMonitor /// public interface IStatusMonitor { IKeyed Parent { get; } event EventHandler StatusChange; MonitorStatus Status { get; } string Message { get; } BoolFeedback IsOnlineFeedback { get; set; } void Start(); void Stop(); } /// /// Defines the contract for ICommunicationMonitor /// public interface ICommunicationMonitor { StatusMonitorBase CommunicationMonitor { get; } } /// /// StatusUnknown = 0, IsOk = 1, InWarning = 2, InError = 3 /// public enum MonitorStatus { StatusUnknown = 0, IsOk = 1, InWarning = 2, InError = 3 } public class MonitorStatusChangeEventArgs : EventArgs { /// /// Gets or sets the Status /// public MonitorStatus Status { get; private set; } /// /// Gets or sets the Message /// public string Message { get; private set; } public MonitorStatusChangeEventArgs(MonitorStatus status) { Status = status; Message = status == MonitorStatus.IsOk ? "" : status.ToString(); } public MonitorStatusChangeEventArgs(MonitorStatus status, string message) { Status = status; Message = message; } } }