private void TraverseChunk(TFChunk.TFChunk chunk, 
                            Action<PrepareLogRecord> processPrepare, 
                            Action<CommitLogRecord> processCommit,
                            Action<SystemLogRecord> processSystem)
 {
     var result = chunk.TryReadFirst();
     while (result.Success)
     {
         var record = result.LogRecord;
         switch (record.RecordType)
         {
             case LogRecordType.Prepare:
             {
                 var prepare = (PrepareLogRecord)record;
                 processPrepare(prepare);
                 break;
             }
             case LogRecordType.Commit:
             {
                 var commit = (CommitLogRecord)record;
                 processCommit(commit);
                 break;
             }
             case LogRecordType.System:
             {
                 var system = (SystemLogRecord)record;
                 processSystem(system);
                 break;
             }
             default:
                 throw new ArgumentOutOfRangeException();
         }
         result = chunk.TryReadClosestForward((int)result.NextPosition);
     }
 }
Example #2
0
        public void there_is_no_closest_forward_record_to_pos_zero()
        {
            var res = _chunk.TryReadClosestForward(0);

            Assert.IsFalse(res.Success);
        }
Example #3
0
        public void the_next_closest_forward_cant_be_read()
        {
            var res = _scavengedChunk.TryReadClosestForward((int)_res1.NewPosition);

            Assert.IsFalse(res.Success);
        }
Example #4
0
 public void no_record_can_be_read_as_closest_forward_record()
 {
     Assert.IsFalse(_chunk.TryReadClosestForward(0).Success);
 }