public async Task<IEnumerable<CacheEntry>> GetEntriesAsync(CacheKey cacheKey) { if (_CacheContainers.ContainsKey(cacheKey)) { return _CacheContainers[cacheKey].Entries; } return null; }
private CacheEntryContainer GetOrCreateContainer(CacheKey key) { CacheEntryContainer cacheEntryContainer; if (!_CacheContainers.ContainsKey(key)) { cacheEntryContainer = new CacheEntryContainer(key); lock (syncRoot) { _CacheContainers[key] = cacheEntryContainer; } } else { cacheEntryContainer = _CacheContainers[key]; } return cacheEntryContainer; }
public CacheEntryContainer(CacheKey primaryCacheKey) { PrimaryCacheKey = primaryCacheKey; Entries = new List<CacheEntry>(); }
public async Task StoreResponseAsync(HttpResponseMessage response) { var primaryCacheKey = new CacheKey(response.RequestMessage.RequestUri, response.RequestMessage.Method); CacheEntry selectedEntry = null; IEnumerable<CacheEntry> cacheEntries = await _contentStore.GetEntriesAsync(primaryCacheKey).ConfigureAwait(false); if (cacheEntries != null) { selectedEntry = MatchVariant(response.RequestMessage, cacheEntries); } if (selectedEntry != null) { UpdateCacheEntry(response, selectedEntry); await _contentStore.UpdateEntryAsync(selectedEntry, response).ConfigureAwait(false); } else { selectedEntry = new CacheEntry(primaryCacheKey, response); UpdateCacheEntry(response, selectedEntry); await _contentStore.AddEntryAsync(selectedEntry, response).ConfigureAwait(false); } }