Пример #1
0
 public async Task<IEnumerable<CacheEntry>> GetEntriesAsync(CacheKey cacheKey)
 {
     if (_CacheContainers.ContainsKey(cacheKey)) 
     {
         return _CacheContainers[cacheKey].Entries;
     }
     return null;
 }
Пример #2
0
        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;
        }
Пример #3
0
 public CacheEntryContainer(CacheKey primaryCacheKey)
 {
     PrimaryCacheKey = primaryCacheKey;
     Entries = new List<CacheEntry>();
 }
Пример #4
0
        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);
            }
        }