示例#1
0
 public PreloadedCache(
     IDictionary <TKey, TValue> preloadedValues,
     ExpirationPolicy expirationStrategy = ExpirationPolicy.None,
     TimeSpan?expirationDuration         = null,
     bool fetchOnceOnly = false,
     NullValuePolicy nullValuePolicy      = NullValuePolicy.CacheNormally,
     IEqualityComparer <TKey> keyComparer = null
     ) : base(expirationStrategy, expirationDuration, fetchOnceOnly, nullValuePolicy, keyComparer)
 {
     _preloadedValues = preloadedValues;
 }
示例#2
0
 public BulkFetchActionCache(
     Func <IDictionary <TKey, TValue> > bulkFetcher,
     ExpirationPolicy expirationStrategy = ExpirationPolicy.None,
     TimeSpan?expirationDuration         = null,
     bool fetchOnceOnly = false,
     NullValuePolicy nullValuePolicy      = NullValuePolicy.CacheNormally,
     IEqualityComparer <TKey> keyComparer = null
     ) : base(expirationStrategy, expirationDuration, fetchOnceOnly, nullValuePolicy, keyComparer)
 {
     _bulkFetcher = bulkFetcher;
 }
示例#3
0
 public ActionCache(
     Func <TKey, TValue> valueFetcher,
     Func <TValue, uint> sizeEstimator   = null,
     CacheReapPolicy reapStrategy        = CacheReapPolicy.None,
     ExpirationPolicy expirationStrategy = ExpirationPolicy.None,
     uint maxCapacity                     = int.MaxValue,
     TimeSpan?expirationDuration          = null,
     NullValuePolicy nullValuePolicy      = NullValuePolicy.CacheNormally,
     IEqualityComparer <TKey> keyComparer = null)
     : base(reapStrategy, expirationStrategy, maxCapacity, expirationDuration, nullValuePolicy, keyComparer)
 {
     _fetchFunc        = valueFetcher;
     _estimateSizeFunc = sizeEstimator;
 }
示例#4
0
 protected CacheBase(
     CacheReapPolicy reapStrategy        = CacheReapPolicy.None,
     ExpirationPolicy expirationStrategy = ExpirationPolicy.None,
     uint maxCapacity                     = int.MaxValue,
     TimeSpan?expirationDuration          = null,
     NullValuePolicy nullValuePolicy      = NullValuePolicy.CacheNormally,
     IEqualityComparer <TKey> keyComparer = null
     )
 {
     if (!expirationDuration.HasValue)
     {
         expirationDuration = TimeSpan.MaxValue;
     }
     NullValuePolicy    = nullValuePolicy;
     InternalStorage    = keyComparer == null ? new Dictionary <TKey, CachedItem <TValue> >() : new Dictionary <TKey, CachedItem <TValue> >(keyComparer);
     CurrentSize        = 0;
     ReapPolicy         = reapStrategy;
     ExpirationPolicy   = expirationStrategy;
     MaxCapacity        = maxCapacity;
     ExpirationDuration = expirationDuration.Value;
     _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
 }
示例#5
0
 protected BulkFetchCacheBase(ExpirationPolicy expirationStrategy, TimeSpan?expirationDuration = null, bool fetchOnceOnly = false, NullValuePolicy nullValuePolicy = NullValuePolicy.CacheNormally, IEqualityComparer <TKey> keyComparer = null)
     : base(CacheReapPolicy.None, expirationStrategy, uint.MaxValue, expirationDuration, nullValuePolicy, keyComparer)
 {
     _fetchOnceOnly = fetchOnceOnly;
     _fetchCount    = 0;
 }