public AsyncCache(ILog log, MetricsContext metrics, IDateTime dateTime, IRevokeListener revokeListener, IRecentRevokesCache revokeCache) { DateTime = dateTime; Log = log; RecentRevokesCache = revokeCache; // ReSharper disable once ConditionIsAlwaysTrueOrFalse if (ObjectCache.Host == null && Interlocked.CompareExchange(ref oneTime, 1, 0) == 0) { ObjectCache.Host = this; } else { Log.Error("AsyncCache: Failed to register with ObjectCache.Host since it was already registered. Cache memory size will not be reported to Metrics.NET. Please make sure AsyncCache is singleton to prevent this issue."); } Clear(); Metrics = metrics; InitMetrics(); var onRevoke = new ActionBlock <string>(OnRevoke); RevokeDisposable = revokeListener.RevokeSource.LinkTo(onRevoke); }
private AsyncCache CreateCache(ISourceBlock <string> revokeSource = null) { RecentlyRevokesCache = Substitute.For <IRecentRevokesCache>(); RecentlyRevokesCache.TryGetRecentlyRevokedTime(Arg.Any <string>(), Arg.Any <DateTime>()).Returns((DateTime?)null); return(new AsyncCache(new ConsoleLog(), Metric.Context(cacheContextName), TimeFake, new EmptyRevokeListener { RevokeSource = revokeSource }, RecentlyRevokesCache)); }
public void SetUp() { RecentlyRevokesCache = new RecentRevokesCache(Substitute.For <ILog>(), Metric.Context("RecentlyRevokesCache"), () => new CacheConfig { DontCacheRecentlyRevokedResponses = true, DelayBetweenRecentlyRevokedCacheClean = 100 }); }