/// <summary> /// Constructor /// </summary> /// <param name="logger"></param> /// <param name="timePurage"></param> /// <param name="cacheMonitor"></param> /// <param name="monitorWriteInterval"></param> protected ChronologicalEvictionStrategy(Logger logger, TimePurgePredicate timePurage, ICacheMonitor cacheMonitor, TimeSpan?monitorWriteInterval) { if (logger == null) { throw new ArgumentException(nameof(logger)); } if (timePurage == null) { throw new ArgumentException(nameof(timePurage)); } this.logger = logger; this.timePurge = timePurage; this.inUseBuffers = new Queue <FixedSizeBuffer>(); this.cacheMonitor = cacheMonitor; if (cacheMonitor != null && monitorWriteInterval.HasValue) { this.timer = new Timer(this.ReportCacheSize, null, monitorWriteInterval.Value, monitorWriteInterval.Value); } this.cacheSizeInByte = 0; }
/// <summary> /// Initializes a new instance of the <see cref="ChronologicalEvictionStrategy"/> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="timePurage">The time-based purge predicate.</param> /// <param name="cacheMonitor">The cache monitor.</param> /// <param name="monitorWriteInterval">"Interval to write periodic statistics. Only triggered for active caches.</param> public ChronologicalEvictionStrategy(ILogger logger, TimePurgePredicate timePurage, ICacheMonitor cacheMonitor, TimeSpan?monitorWriteInterval) { if (logger == null) { throw new ArgumentException(nameof(logger)); } if (timePurage == null) { throw new ArgumentException(nameof(timePurage)); } this.logger = logger; this.timePurge = timePurage; this.inUseBuffers = new Queue <FixedSizeBuffer>(); // monitoring this.cacheMonitor = cacheMonitor; if (this.cacheMonitor != null && monitorWriteInterval.HasValue) { this.periodicMonitoring = new PeriodicAction(monitorWriteInterval.Value, this.ReportCacheSize); } this.cacheSizeInByte = 0; }