Ejemplo n.º 1
0
 /// <summary>
 /// Reads an embedded message field value from the stream.
 /// </summary>
 public void ReadMessage(IMessage builder)
 {
     // TODO(jtattermusch): if the message doesn't implement IBufferMessage (and thus does not provide the InternalMergeFrom method),
     // what we're doing here works fine, but could be more efficient.
     // What happens is that we first initialize a ParseContext from the current coded input stream only to parse the length of the message, at which point
     // we will need to switch back again to CodedInputStream-based parsing (which involves copying and storing the state) to be able to
     // invoke the legacy MergeFrom(CodedInputStream) method.
     // For now, this inefficiency is fine, considering this is only a backward-compatibility scenario (and regenerating the code fixes it).
     ParseContext.Initialize(buffer.AsSpan(), ref state, out ParseContext ctx);
     try
     {
         ParsingPrimitivesMessages.ReadMessage(ref ctx, builder);
     }
     finally
     {
         ctx.CopyStateTo(this);
     }
 }
Ejemplo n.º 2
0
 public void ReadMessage(IMessage message)
 {
     ParsingPrimitivesMessages.ReadMessage(ref this, message);
 }