public ConfigurationUpdaterBackgroundService(ApplicationConfiguration applicationConfiguration, StatusMonitorConfiguration statusMonitorConfiguration, StatusMonitorClientFactory statusMonitorClientFactory, INetworkUtil networkUtil, ILogger <ConfigurationUpdaterBackgroundService> logger)
 {
     _statusMonitorConfiguration = statusMonitorConfiguration;
     _statusMonitorClientFactory = statusMonitorClientFactory;
     _networkUtil = networkUtil;
     _configurationRefreshInterval = applicationConfiguration.ConfigurationRefreshInterval;
     _logger = logger;
 }
        public static IStatusMonitor Create(MonitorConfiguration configuration, INetworkUtil networkUtil)
        {
            switch (configuration.Type)
            {
            case "Port":
                return(new PortStatusMonitor(networkUtil, configuration));

            case "HTTP":
                return(new HttpStatusMonitor(configuration));

            default:
                return(new EmptyStatusMonitor());
            }
        }
        public static async Task <StatusMonitorConfiguration> Create(StatusMonitorClient statusMonitorApi, INetworkUtil networkUtil)
        {
            try
            {
                var monitorConfigs = await statusMonitorApi.GetConfigurationsAsync();

                return(new StatusMonitorConfiguration
                {
                    Monitors = monitorConfigs
                               .Where(mc => mc.Active)
                               .Select(mc => StatusMonitorFactory.Create(mc, networkUtil))
                               .Where(monitor => monitor != null)
                               .ToList()
                });
            }
            catch
            {
                return(new StatusMonitorConfiguration());
            }
        }
예제 #4
0
 public PortStatusMonitor(INetworkUtil networkUtil, MonitorConfiguration configuration) : base(configuration)
 {
     _networkUtil = networkUtil;
     _slowTime    = Configuration.SlowTime ?? Convert.ToInt32(Configuration.Timeout * .4);
 }