public UpgradedCache(bool cleanRareItems = true, IComparer <T> comparer = null, IEqualityComparer <T> eqcomparer = null, Action <Action> queueRebalance = null) { _state = new CacheState(this); comparer = comparer ?? Comparer <T> .Default; var eqComparer = eqcomparer ?? EqualityComparer <T> .Default; _secondLevelCache = new SecondLevelCache <T, TElementType>(comparer, k => k.GetFrequency(), queueRebalance ?? QueueRebalance); _firstLevelCache = new WeakReference(_lowItemsCountFixing = new ConcurrentDictionary <T, TElementType>(eqComparer)); }
public CacheState(SecondLevelCache <TKey, TValue> cache) { _cache = cache; }