Exemplo n.º 1
0
        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
     });
 }