Bend.SegmentBlockBasicDecoder._nextRecord C# (CSharp) Method

_nextRecord() private method

private _nextRecord ( RecordLocator &rloc ) : void
rloc RecordLocator
return void
        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");
            }
        }