public IEnumerable <StoreStatistics> GetStatistics() { if (!_persistenceManager.FileExists(GetStatisticsHeaderFile())) { yield break; } using (var headerStream = _persistenceManager.GetInputStream(GetStatisticsHeaderFile())) { using (var headerReader = new BinaryReader(headerStream)) { using ( var recordStream = _persistenceManager.GetInputStream(GetStatisticsLogFile())) { long offset = headerStream.Length - StoreStatisticsHeaderRecord.RecordSize; while (offset >= 0) { headerReader.BaseStream.Seek(offset, SeekOrigin.Begin); var header = StoreStatisticsHeaderRecord.Load(headerReader); recordStream.Seek(header.StartOffset, SeekOrigin.Begin); var recordReader = new StreamReader(recordStream); var record = StoreStatisticsRecord.Load(recordReader); yield return (new StoreStatistics(header.CommitNumber, header.Timestamp, record.TotalTripleCount, record.PredicateTripleCounts)); offset -= StoreStatisticsHeaderRecord.RecordSize; } } } } }