internal async Task InitAsync(CancellationToken cancellationToken) { var features = await _restClient.GetFeatureControlsAsync(cancellationToken).ConfigureAwait(false); _featureControlCache.Update(features); InitializeTimer(); }
private void OnSseClient_MessageReceived(object sender, SseClient.Message e) { switch (e.EventType) { case FeaturesUpdatedEventType: try { Dictionary <string, FeatureControl> entries = JsonConvert.DeserializeObject <Dictionary <string, FeatureControl> >(e.Value); if (_canReinitializeControlCache) { _canReinitializeControlCache = false; _controlCache.Update(entries); foreach (var entry in entries) { FeatureUpdated?.Invoke(this, new FeatureUpdatedEventArgs(entry.Key)); } _initializationEvent.Set(); } else { foreach (var entry in entries) { _controlCache.Set(entry.Value); FeatureUpdated?.Invoke(this, new FeatureUpdatedEventArgs(entry.Key)); } } } catch (Exception) { _canReinitializeControlCache = false; } break; case FeaturesDeletedEventType: try { List <string> entries = JsonConvert.DeserializeObject <List <string> >(e.Value); foreach (var entry in entries) { _controlCache.Delete(entry); FeatureDeleted?.Invoke(this, new FeatureDeletedEventArgs(entry)); } } catch (Exception) { } break; } }