On Tue, Mar 9, 2010 at 3:41 AM, Evan Jones <[email protected]> wrote: > On Mar 9, 2010, at 3:21 , Paul Rudd wrote: > >> Which actually brings up a feature request - >> MessageLite.Builder.mergeDelimitedFrom(InputStream) is too inefficient >> for small streamed messages, since it creates a new CodedInputStream >> (and 4KB buffer to go with it) every time. The addition of a >> mergeDelimitedFrom(CodedInputStream) would be welcomed. >> > > > You can do this yourself. I think the following would work: > > int length = inputStream.readRawVarint32(); > int oldLimit = inputStream.pushLimit(length); > builder.mergeFrom(inputStream); > inputStream.popLimit(oldLimit);
Yep, that works. In fact, you can even do the above in one line: codedInput.readMessage(builder, ExtensionRegistryLite.getEmptyRegistry()); It turns out that since readMessage() assumes the tag was already read, it parses the exact same format that mergeDelimitedFrom() does. -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.
