public static void Add(CacheBaseItem item, object value) { item.OnBeingAddedIntoCache(); CacheManager.Cache.Add( item.Key, value, item.Dependencies, item.AbsoluteExpiration, item.SlidingExpiration, item.Priority, (k, v, reason) => { if (_isDiagnosing) { lock (_hits) { _hits.Remove(k); } } if (item.OnRemoveCallback != null) { item.OnRemoveCallback.Invoke(k, v, reason); } }); }
public static bool TryGetValue <T>(CacheBaseItem item, out T v) { var key = item.Key; if (!Get <T>(key, out v)) { return(false); } else { if (_isDiagnosing) { lock (_hits) { int keyValue; if (_hits.TryGetValue(key, out keyValue)) { _hits[key] = keyValue + 1; } else { _hits[key] = 1; } } } return(true); } }
public static T Get <T>(CacheBaseItem item, Func <T> buildObject) { var key = item.Key; T v; if (!Get <T>(key, out v)) { v = buildObject(); if (v != null) { Add(item, v); if (_isDiagnosing) { lock (_hits) { _hits[key] = 0; } } } else { _logger.Warn("Performance hits. Cache missed and failed to create the object for cachekey: " + key); if (_isDiagnosing) { lock (_hits) { int keyValue; if (_hits.TryGetValue(key, out keyValue)) { if (keyValue >= 0) { // This sure rarely happen _hits[key] = -1; } else { _hits[key] = keyValue - 1; } } } } } } else { if (_isDiagnosing) { lock (_hits) { int keyValue; if (_hits.TryGetValue(key, out keyValue)) { _hits[key] = keyValue + 1; } else { _hits[key] = 1; } } } } return(v); }
public static object Remove(CacheBaseItem item) { return(Remove(item.Key)); }