public void Load(string journalName) { using (var journalReader = new StreamReader(_journalFileStream, Encoding.UTF8)) { while (journalReader.Peek() >= 0) { var csvLine = journalReader.ReadLine(); if (!string.IsNullOrWhiteSpace(csvLine)) { WriteQueue.Enqueue(BaseActivityEntry.FromCsvLine(csvLine, RecordOnlyValueLength)); } } } }
public void Replay(int writeFrequency = 10000, Action <BaseActivityEntry> validate = null) { Transaction currentWriteTransaction = null; var lineNumber = 1; try { using (var journalReader = new StreamReader(_journalFileStream, Encoding.UTF8)) { while (journalReader.Peek() >= 0) { var csvLine = journalReader.ReadLine(); if (!string.IsNullOrWhiteSpace(csvLine)) { var activityEntry = BaseActivityEntry.FromCsvLine(csvLine, RecordOnlyValueLength); activityEntry.LineNumber = lineNumber; WriteQueue.Enqueue(activityEntry); } lineNumber++; if (lineNumber % writeFrequency == 0) { ApplyRecordedActivities(ref currentWriteTransaction, validate); } } } ApplyRecordedActivities(ref currentWriteTransaction, validate); } finally { if (currentWriteTransaction != null) { currentWriteTransaction.Dispose(); } } }