Почему CodedInputStream устанавливает позицию потока в конец?

Я использую протокол буфера 3 в C #. Я пытаюсь прыгнуть через поток, чтобы найти начальные местоположения каждого сообщения, фактически не десериализовав сообщения. Все сообщения записываются в поток сWriteDelimitedTo.

Затем я использую этот код, чтобы попытаться перейти от маркеров длины:

_map = new List<int>();
_stream.Seek(0, SeekOrigin.Begin);

var codedStream = new CodedInputStream(_stream);

while (_stream.Position < _stream.Length)
{
    var length = codedStream.ReadInt32();

    _map.Add((int) _stream.Position);

    _stream.Seek(length, SeekOrigin.Current);
}

Тем не менее, момент, когда я делаюcodedStream.ReadInt32() позиция потока устанавливается в конец, а не просто в следующий байт после varint32.

Ответы на вопрос(1)

Ваш ответ на вопрос