/// <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); } }
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)); }
/// <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)); } } }