public EndpointMonitor(IMonitorableEndpointRegistry monitorableEndpointRegistry, IHealthSampler sampler, IMonitorSettings settings, ITimeCoordinator timeCoordinator, IContinuousTaskExecutor<MonitorableEndpoint> executor)
        {
            _monitorableEndpointRegistry = monitorableEndpointRegistry;
            _sampler = sampler;
            _settings = settings;
            _timeCoordinator = timeCoordinator;
            _executor = executor;

            _monitorableEndpointRegistry.NewEndpointAdded += HandleNewEndpoint;

            foreach (var endpoint in _monitorableEndpointRegistry.Endpoints)
                _executor.TryRegisterTaskFor(endpoint, MonitorEndpointAsync);
        }
        public EndpointMonitor(IEndpointRegistry registry, IHealthSampler sampler, IMonitorSettings settings)
        {
            _registry = registry;
            _sampler = sampler;
            _settings = settings;
            _registry.NewEndpointAdded += HandleNewEndpoint;
            _cancellation = new CancellationTokenSource();

            foreach (var endpoint in _registry.Endpoints)
                _tasks.AddOrUpdate(endpoint, CreateTaskFor, (e, currentTask) => currentTask);

            _monitor = new Thread(Start) { Name = "Monitor" };
            _monitor.Start();
        }
        public EndpointMonitor(IMonitorableEndpointRegistry monitorableEndpointRegistry, IHealthSampler sampler, IMonitorSettings settings, ITimeCoordinator timeCoordinator, IContinuousTaskExecutor <MonitorableEndpoint> executor)
        {
            _monitorableEndpointRegistry = monitorableEndpointRegistry;
            _sampler         = sampler;
            _settings        = settings;
            _timeCoordinator = timeCoordinator;
            _executor        = executor;

            _monitorableEndpointRegistry.NewEndpointAdded += HandleNewEndpoint;

            foreach (var endpoint in _monitorableEndpointRegistry.Endpoints)
            {
                _executor.TryRegisterTaskFor(endpoint, MonitorEndpointAsync);
            }
        }
        public EndpointMonitor(IEndpointRegistry registry, IHealthSampler sampler, IMonitorSettings settings)
        {
            _registry = registry;
            _sampler  = sampler;
            _settings = settings;
            _registry.NewEndpointAdded += HandleNewEndpoint;
            _cancellation = new CancellationTokenSource();

            foreach (var endpoint in _registry.Endpoints)
            {
                _tasks.AddOrUpdate(endpoint, CreateTaskFor, (e, currentTask) => currentTask);
            }

            _monitor = new Thread(Start)
            {
                Name = "Monitor"
            };
            _monitor.Start();
        }
 public async Task CheckHealth(IHealthSampler sampler, CancellationToken cancellationToken)
 {
     Health = await sampler.CheckHealthAsync(this, cancellationToken);
 }
 public ThrottlingSampler(IHealthSampler sampler, IThrottlingSettings settings)
 {
     _sampler   = sampler;
     _throttles = settings.Throttling.ToDictionary(kv => kv.Key, kv => new SemaphoreSlim(kv.Value));
 }
 public ThrottlingSampler(IHealthSampler sampler, IThrottlingSettings settings)
 {
     _sampler = sampler;
     _throttles = settings.Throttling.ToDictionary(kv => kv.Key, kv => new SemaphoreSlim(kv.Value));
 }
 public async Task CheckHealth(IHealthSampler sampler, CancellationToken cancellationToken)
 {
     Health = await sampler.CheckHealth(this, cancellationToken);
 }