/// <summary> /// See interface docs. /// </summary> /// <param name="cache"></param> public void DeregisterCache(IAircraftOnlineLookupCache cache) { if (cache == null) { throw new ArgumentNullException("cache"); } lock (_SyncLock) { var newCache = new List <CacheEntry>(); foreach (var cacheEntry in _CacheEntries) { if (!Object.ReferenceEquals(cacheEntry.Cache, cache)) { newCache.Add(cacheEntry); } } _CacheEntries = newCache; } }
/// <summary> /// See interface docs. /// </summary> /// <param name="cache"></param> /// <param name="priority"></param> /// <param name="letManagerControlLifetime"></param> public void RegisterCache(IAircraftOnlineLookupCache cache, int priority, bool letManagerControlLifetime) { if (cache == null) { throw new ArgumentNullException("cache"); } lock (_SyncLock) { if (!IsCacheObjectRegistered(cache)) { var newCache = new List <CacheEntry>(_CacheEntries); newCache.Add(new CacheEntry() { Cache = cache, Priority = priority, ManageLifetime = letManagerControlLifetime, }); newCache.Sort((lhs, rhs) => rhs.Priority - lhs.Priority); _CacheEntries = newCache; } } }
/// <summary> /// See interface docs. /// </summary> /// <param name="cache"></param> /// <returns></returns> public bool IsCacheObjectRegistered(IAircraftOnlineLookupCache cache) { var cacheEntries = _CacheEntries; return(cacheEntries.Any(r => Object.ReferenceEquals(cache, r.Cache))); }