private void UpdateState() { if (Position == messageStack.Peek()) { State = ProtobufReaderState.EndOfMessage; return; } if (Position > messageStack.Peek()) { throw new InvalidProgramException("Position should not be more then message boundary. Review ProtobufReader code."); } currentKey = ReadVarUInt64(); State = ProtobufReaderState.Field; }
public async Task EndReadMessageAsync() { if (messageStack.Count == 1) { throw new InvalidOperationException("Message stack is empty."); } if (Position != messageStack.Peek()) { throw new InvalidOperationException("Message is not read till the end."); } messageStack.Pop(); if (messageStack.Count > 1) { await UpdateStateAsync(); } else { State = ProtobufReaderState.None; } }