No, protocol buffers are not self-describing. The receiver needs to know what type it is receiving, or you need to send the type information over the wire separately.
On Fri, Jun 19, 2009 at 1:10 AM, brodie <brofi...@gmail.com> wrote: > > If the entire message needs to be in the buffer at one time before it > can be parsed out, then it makes parsing out the messages easier. i.e. > either the message is complete or not. Is there an interface to parse > a generic message from the buffer? There doesn't seem to be. I'm > envisaging usage something like this... > > something buf; > Message * msg > while (receiveData(&buf)) { > rc = Factory::parse(buf, &msg); > if (rc == INCOMPLETE) continue; > > switch (msg->type()) { > ... process ... > } > } > > The proto2 RPC doesn't appear to fit my usages because my message > stream is not strictly request/response. There can be multiple request > messages in a row, ditto for responses. > > Regards, > Brodie > > > On Jun 19, 12:47 pm, Kenton Varda <ken...@google.com> wrote: > > On Thu, Jun 18, 2009 at 8:47 PM, Kenton Varda <ken...@google.com> wrote: > > > Note that the protocol buffer parser is not asynchronous. That means > you > > > either need to feed it an entire message at once, or it will need to > block > > > waiting for mode data to arrive on > > > > s/mode/more > > > > > the input stream. So if you want to do something asynchronous, you > best > > > bet is probably to do your own buffering until you have received an > entire > > > message, then pass the bytes off to the protobuf parser. You probably > won't > > > need to implement any custom ZeroCopyStreams for that. > > > > > On Thu, Jun 18, 2009 at 8:30 PM, brodie <brofi...@gmail.com> wrote: > > > > >> Hi all, > > > > >> Has anyone done any work to create a stream implementation for async > > >> use? In particular, Windows async sockets or async named pipes? > > > > >> I'm planning to implement PB as the messaging layer on top of a > > >> Windows sockets transport layer (therefore using HANDLE instead of a > > >> file descripter). We may additionally make this layer swappable with > > >> named pipes (also a HANDLE). Transport in both cases will be done > > >> async. On Linux/OSX we will just use async sockets. > > > > >> It would be nice if someone has already done some work in this area > > >> that I can leverage/build on. Any pointers? > > > > >> Regards, > > >> Brodie > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---