public KustoHeartBeat(string primaryCluster, string failoverCluster, KustoDataProvider kustoDataProvider, KustoDataProviderConfiguration configuration) { PrimaryCluster = primaryCluster; FailoverCluster = failoverCluster; UsePrimaryCluster = true; _kustoDataProvider = kustoDataProvider; _configuration = configuration; }
private void Initialize() { _heartbeats = new ConcurrentDictionary <string, KustoHeartBeat>(); _kustoDataProvider = new KustoDataProvider(new OperationDataCache(), _configuration, Guid.NewGuid().ToString(), this); _cancellationToken = new CancellationTokenSource(); foreach (var primaryCluster in _configuration.RegionSpecificClusterNameCollection.Values) { string failoverCluster = null; if (_configuration.FailoverClusterNameCollection.ContainsKey(primaryCluster)) { failoverCluster = _configuration.FailoverClusterNameCollection[primaryCluster]; } if (!_heartbeats.ContainsKey(primaryCluster) && _heartbeats.TryAdd(primaryCluster, new KustoHeartBeat(primaryCluster, failoverCluster, _kustoDataProvider, _configuration))) { // Start threads for each heartbeat on the thread pool Task.Run(() => _heartbeats[primaryCluster].RunHeartBeatTask(_cancellationToken.Token)); } } }