Пример #1
0
        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;
        }
Пример #2
0
 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;
     }
 }