public bool IsExpired(CachedItem <TValue> item) { if (item.Invalidated) { return(true); } DateTime from; switch (ExpirationPolicy) { case ExpirationPolicy.SinceFetchedTime: from = item.FetchedOn; break; case ExpirationPolicy.SinceLastAccessedTime: from = item.LastAccessedOn; break; default: from = DateTime.Now; break; } return(ExpirationPolicy != ExpirationPolicy.None && DateTime.Now.Subtract(from) > ExpirationDuration); }
protected void NotifyItemRemoved(TKey key, CachedItem <TValue> val) { OnItemRemoved(key, val); if (ItemRemoved != null) { ItemRemoved(key, val); } }
private CachedItem <TValue> AddItemInternal(TKey key, TValue val) { var item = new CachedItem <TValue> { AccessedCount = 0, LastAccessedOn = DateTime.Now, FetchedOn = DateTime.Now, Value = val, Size = EstimateSize(val) }; if (MaxCapacity - CurrentSize < item.Size) { MakeSpace(item.Size); } InternalStorage[key] = item; CurrentSize += item.Size; return(item); }
protected virtual void OnItemRemoved(TKey key, CachedItem <TValue> val) { }