Example #1
0
 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));
             }
         }
     }
 }
Example #2
0
        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();
                }
            }
        }