예제 #1
0
        public CodeFeatureStateCache(ICodeFeatureStateCacheProvider cacheProvider)
        {
            _cacheProvider = cacheProvider;

            _cacheLoaded  = new Connectable <IObserver <ICodeFeatureStateCacheLoaded> >();
            _cacheUpdated = new Connectable <IObserver <ICodeFeatureStateCacheUpdated> >();

            _cache = Task.Run(async() => await LoadCache()).Result;
        }
예제 #2
0
        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));
        }