You sort of have to roll your own. In my project I'm doing something like this:

coded_output->WriteVarint32(message->ByteSize());
message->SerializeToCodedStream(coded_output);

And then on the reading side:

uint32_t size;
if (! coded_input->ReadVarint32(&size)) {
  return NULL; // just an example. probably don't want to do this;
}

Message * m = new Message;
CodedInputStream::Limit limit = coded_input->PushLimit(size);
message->ParseFromCodedStream(coded_input);
coded_input->PopLimit(limit);

The biggest thing that helped me along was finding the Limit docs. I
couldn't figure out how to parse from a ZeroCopyInputStream without
consuming the entire stream, and then I ran across that and everything
became much more clear.

--Pete

On Mon, Aug 24, 2009 at 3:54 PM, Jay Thomas<jaydianetho...@gmail.com> wrote:
>
>
> Hello
>
> I am looking for a way to serialize/deserialize with length prefix
> under c++.  The serialized bytes will sent to a TCP socket.  I am
> aware that C# has a method SerializeWithLengthPrefix() and
> DeserializeWithLengthPrefix().  Are there any such analogous methods
> for C++? Please point out any documentation that I may have missed
> here.
>
> Thanks for any assistance.
>
> Jay
>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to protobuf@googlegroups.com
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to