コード例 #1
0
        internal async Task InitAsync(CancellationToken cancellationToken)
        {
            var features = await _restClient.GetFeatureControlsAsync(cancellationToken).ConfigureAwait(false);

            _featureControlCache.Update(features);
            InitializeTimer();
        }
コード例 #2
0
        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;
            }
        }