public CodeFeatureStateCache(ICodeFeatureStateCacheProvider cacheProvider) { _cacheProvider = cacheProvider; _cacheLoaded = new Connectable <IObserver <ICodeFeatureStateCacheLoaded> >(); _cacheUpdated = new Connectable <IObserver <ICodeFeatureStateCacheUpdated> >(); _cache = Task.Run(async() => await LoadCache()).Result; }
public async Task ReloadCache() { DateTime startTime = DateTime.UtcNow; ICodeFeatureStateCacheInstance cache = await LoadCache(); DateTime endTime = DateTime.UtcNow; Interlocked.Exchange(ref _cache, cache); var loaded = new CodeFeatureStateCacheLoaded(startTime, endTime - startTime, cache.Count); _cacheLoaded.ForEach(x => x.OnNext(loaded)); }