/// <summary>
 /// Default constructor with injected items
 /// </summary>
 /// <param name="log">The logger for the app</param>
 /// <param name="coordinator">Singleton for the coordinator</param>
 public MetricMonitor(ILogger<MetricMonitor> log, IAppMonitorCoordinator coordinator, IAppMonitorConfig config)
 {
     this.log = log;
     this.coordinator = coordinator;
     this.config = config;
 }
 /// <summary>
 /// Default constructor with the App Monitor Core injected into it
 /// </summary>
 public AppMonitorHub(IAppMonitorCoordinator coordinator)
 {
     this.coordinator = coordinator;
     this.coordinator.RegisteredHub = this; // Register this hub with the coordinator
 }
 /// <summary>
 /// Default constructor to allow dependency injection of coordinator and logging
 /// </summary>
 /// <param name="coordinator">Singleton for the coordinator</param>
 /// <param name="config">Singleton for the configuration that was defined in startup</param>
 public APIMiddleware(IAppMonitorCoordinator coordinator, IAppMonitorConfig config)
 {
     this.coordinator = coordinator;
     this.config      = config;
 }