public CacheBaseItem( string key, CacheItemBaseDependency[] dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, PriorityLevel priority, CacheRemovedCallback onRemoveCallback) { this.Key = key; this.Dependencies = dependencies; this.AbsoluteExpiration = absoluteExpiration; this.SlidingExpiration = slidingExpiration; this.Priority = priority; this.OnRemoveCallback = onRemoveCallback; }
public void Add(string key, object value, DateTime absoluteExpiration, CacheRemovedCallback callback = null) { var policy = new CacheItemPolicy { AbsoluteExpiration = absoluteExpiration }; if (callback != null) { policy.RemovedCallback = delegate(CacheEntryRemovedArguments args) { callback(new CacheRemovedCallbackArgs { Key = args.CacheItem.Key, Value = args.CacheItem.Value }); }; } MemoryCache.Default.Add(key, value, policy); }
/// <summary> /// Adds the specified key. /// </summary> /// <param name="key">The key.</param> /// <param name="value">The value.</param> /// <param name="absoluteExpiration">The absolute expiration.</param> /// <param name="callback">The callback.</param> public void Add(string key, object value, DateTime absoluteExpiration, CacheRemovedCallback callback) { ParentCache().Add(RegionKey(key), value, absoluteExpiration, callback); }
/// <summary> /// Adds the specified key. /// </summary> /// <param name="key">The key.</param> /// <param name="value">The value.</param> /// <param name="slidingExpiration">The sliding expiration.</param> /// <param name="callback">The callback.</param> public void Add(string key, object value, TimeSpan slidingExpiration, CacheRemovedCallback callback) { ParentCache().Add(RegionKey(key), value, slidingExpiration, callback); }
public abstract object Add(string key, object value, CacheItemBaseDependency[] dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheBaseItem.PriorityLevel priority, CacheRemovedCallback onRemoveCallback);
public static T GetOrAdd <T>(this ICache cache, string key, DateTime absoluteExpiration, Func <T> func, CacheRemovedCallback callback = null) { var obj = Get <T>(cache, key); if (obj == null) { obj = func(); if (obj == null) { return(default(T)); } cache.Add(key, obj, absoluteExpiration, callback); } return(obj); }
public void Add(string key, object value, DateTime absoluteExpiration, CacheRemovedCallback callback) { ParentCache().Add(RegionKey(key), value, absoluteExpiration, callback); }
public void Add(string key, object value, TimeSpan slidingExpiration, CacheRemovedCallback callback) { ParentCache().Add(RegionKey(key), value, slidingExpiration, callback); }
public override object Add(string key, object value, CacheItemBaseDependency[] dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheBaseItem.PriorityLevel priority, CacheRemovedCallback onRemoveCallback) { CacheItemPriority aspnetPriority; switch (priority) { case CacheBaseItem.PriorityLevel.Low: aspnetPriority = CacheItemPriority.Low; break; case CacheBaseItem.PriorityLevel.BelowNormal: aspnetPriority = CacheItemPriority.BelowNormal; break; case CacheBaseItem.PriorityLevel.Normal: aspnetPriority = CacheItemPriority.Normal; break; case CacheBaseItem.PriorityLevel.AboveNormal: aspnetPriority = CacheItemPriority.AboveNormal; break; case CacheBaseItem.PriorityLevel.High: aspnetPriority = CacheItemPriority.High; break; case CacheBaseItem.PriorityLevel.NotRemovable: aspnetPriority = CacheItemPriority.NotRemovable; break; default: throw new Exception("Unknown CacheBaseItem.PriorityLevel " + priority); } CacheDependency dependency = null; if (dependencies != null) { foreach (var d in dependencies) { if (d is CacheItemFilesDependency) { dependency = new CacheDependency(((CacheItemFilesDependency)d).Files); } else if (d is CacheItemKeysDependency) { dependency = new CacheDependency(null, ((CacheItemKeysDependency)d).Keys); } } } return(this.Cache.Add( key, value, dependency, absoluteExpiration, slidingExpiration, aspnetPriority, onRemoveCallback == null ? null : new CacheItemRemovedCallback((k, v, r) => { CacheRemovedReason reason; switch (r) { case CacheItemRemovedReason.Removed: reason = CacheRemovedReason.Removed; break; case CacheItemRemovedReason.DependencyChanged: reason = CacheRemovedReason.DependencyChanged; break; case CacheItemRemovedReason.Expired: reason = CacheRemovedReason.Expired; break; case CacheItemRemovedReason.Underused: reason = CacheRemovedReason.Underused; break; default: throw new Exception("Unknown CacheRemovedReason " + r); } onRemoveCallback(k, v, reason); }) )); }
public override object Add(string key, object value, CacheItemBaseDependency[] dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheBaseItem.PriorityLevel priority, CacheRemovedCallback onRemoveCallback) { var policy = new CacheItemPolicy(); switch (priority) { case CacheBaseItem.PriorityLevel.Low: case CacheBaseItem.PriorityLevel.BelowNormal: case CacheBaseItem.PriorityLevel.Normal: case CacheBaseItem.PriorityLevel.AboveNormal: case CacheBaseItem.PriorityLevel.High: policy.Priority = System.Runtime.Caching.CacheItemPriority.Default; break; case CacheBaseItem.PriorityLevel.NotRemovable: policy.Priority = CacheItemPriority.NotRemovable; break; default: throw new Exception("Unknown CacheBaseItem.PriorityLevel " + priority); } if (absoluteExpiration != CacheManager.NoAbsoluteExpiration) { policy.AbsoluteExpiration = absoluteExpiration; } if (slidingExpiration != CacheManager.NoSlidingExpiration) { policy.SlidingExpiration = slidingExpiration; } if (dependencies != null) { foreach (var d in dependencies) { if (d is CacheItemFilesDependency) { var filesMonitor = new HostFileChangeMonitor(((CacheItemFilesDependency)d).Files); policy.ChangeMonitors.Add(filesMonitor); } else if (d is CacheItemKeysDependency) { policy.ChangeMonitors.Add(this.Cache.CreateCacheEntryChangeMonitor(((CacheItemKeysDependency)d).Keys)); } } } if (onRemoveCallback != null) { policy.RemovedCallback = new CacheEntryRemovedCallback((a) => { CacheRemovedReason reason; switch (a.RemovedReason) { case CacheEntryRemovedReason.Removed: reason = CacheRemovedReason.Removed; break; case CacheEntryRemovedReason.ChangeMonitorChanged: reason = CacheRemovedReason.DependencyChanged; break; case CacheEntryRemovedReason.Expired: reason = CacheRemovedReason.Expired; break; case CacheEntryRemovedReason.Evicted: case CacheEntryRemovedReason.CacheSpecificEviction: reason = CacheRemovedReason.Underused; break; default: throw new Exception("Unknown CacheRemovedReason " + a.RemovedReason); } onRemoveCallback(a.CacheItem.Key, a.CacheItem.Value, reason); }); } return(this.Cache.Add(key, value, policy)); }