コード例 #1
0
 /// <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;
 }
コード例 #2
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;
        }