private void _nextRecord(ref RecordLocator rloc)
{
int new_start = rloc.after_end_pos;
int datastream_length = (int)this.datastream.Length;
if (!rloc.have_record) {
throw new Exception("_nextRecord() called with rloc.have_record==false");
}
if (new_start < datastream_length) {
this.datastream.Seek(new_start, SeekOrigin.Begin);
rloc.start_pos = new_start;
rloc.record = SegmentBlockBasicDecoder._decodeRecordFromBlock(this.datastream);
rloc.after_end_pos = (int)this.datastream.Position;
rloc.have_record = true;
return;
} else if (new_start == datastream_length) {
// reached end
rloc.have_record = false;
rloc.record = default(KeyValuePair<RecordKey, RecordUpdate>);
rloc.start_pos = 0;
rloc.after_end_pos = 0;
return;
} else {
// if (new_start > datsstream_length)
throw new Exception("error: _nextRecord called with rloc past end");
}
}