Почему 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.