public BlockStoreStats(IBlockRepository blockRepository, IBlockStoreCache blockStoreCache, IDateTimeProvider dateTimeProvider, ILogger logger) { this.repository = blockRepository; this.cache = blockStoreCache as BlockStoreCache; this.logger = logger; this.lastRepositorySnapshot = this.repository?.PerformanceCounter.Snapshot(); this.lastCacheSnapshot = this.cache?.PerformanceCounter.Snapshot(); this.dateTimeProvider = dateTimeProvider; }
public BlockStoreRepositoryPerformanceSnapshot Snapshot() { var snap = new BlockStoreRepositoryPerformanceSnapshot(this.RepositoryHitCount, this.RepositoryMissCount, this.RepositoryDeleteCount, this.RepositoryInsertCount, this.Name) { Start = this.Start, Taken = this.dateTimeProvider.GetUtcNow() }; return(snap); }
public void Log() { StringBuilder performanceLogBuilder = new StringBuilder(); if (this.repository != null) { var snapshot = this.repository.PerformanceCounter.Snapshot(); performanceLogBuilder.AppendLine((snapshot - this.lastRepositorySnapshot).ToString()); this.lastRepositorySnapshot = snapshot; } if (this.cache != null) { var snapshot = this.cache.PerformanceCounter.Snapshot(); performanceLogBuilder.AppendLine((snapshot - this.lastCacheSnapshot).ToString()); this.lastCacheSnapshot = snapshot; } this.logger.LogInformation(performanceLogBuilder.ToString()); }