/// <inheritdoc />
        public async Task <ToggleCollectionCacheResult> Load(CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            try
            {
                var togglesJsonBytes = await distributedCache.GetAsync(Settings.ToggleCollectionKeyName, cancellationToken).ConfigureAwait(false);

                var etag = await distributedCache.GetStringAsync(Settings.EtagKeyName, CancellationToken.None).ConfigureAwait(false);

                if (togglesJsonBytes == null || etag == null)
                {
                    return(ToggleCollectionCacheResult.CacheMiss);
                }

                ToggleCollection toggleCollection;
                using (var ms = new MemoryStream(togglesJsonBytes, 0, togglesJsonBytes.Length, false))
                {
                    ms.Seek(0, SeekOrigin.Begin);
                    toggleCollection = jsonSerializer.Deserialize <ToggleCollection>(ms);
                }

                return(ToggleCollectionCacheResult.FromResult(toggleCollection, etag));
            }
            catch
            {
                return(ToggleCollectionCacheResult.CacheMiss);
            }
        }
Пример #2
0
        public Task <ToggleCollectionCacheResult> Load(CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            if (MemoryCache.TryGetValue(Settings.ToggleCollectionKeyName, out ToggleCollection toggles) &&
                MemoryCache.TryGetValue(Settings.EtagKeyName, out string etag))
            {
                return(Task.FromResult(ToggleCollectionCacheResult.FromResult(toggles, etag)));
            }

            return(Task.FromResult(ToggleCollectionCacheResult.CacheMiss));
        }
Пример #3
0
        /// <inheritdoc />
        public Task <ToggleCollectionCacheResult> Load(CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            if (!fileSystem.FileExists(etagFile) || !fileSystem.FileExists(toggleFile))
            {
                return(Task.FromResult(ToggleCollectionCacheResult.CacheMiss));
            }

            using (var fileStream = fileSystem.FileOpenRead(toggleFile))
            {
                try
                {
                    var initialToggleCollection = jsonSerializer.Deserialize <ToggleCollection>(fileStream);
                    var initialETag             = fileSystem.ReadAllText(etagFile);
                    return(Task.FromResult(ToggleCollectionCacheResult.FromResult(initialToggleCollection, initialETag)));
                }
                catch
                {
                    return(Task.FromResult(ToggleCollectionCacheResult.CacheMiss));
                }
            }
        }