Got it, thanks! john On Sat, Jul 7, 2018 at 2:13 PM Ilia Mirkin <[email protected]> wrote:
> CodingInputStream/OutputStream have all that. readInt32/etc. > > There's no strict advantage... but presumably you're using protobuf to > make your life easier, and this will make your life easier. (With a > string, you have to include the length, etc. And if the header ever > changes and you want to have back/forward compat, it can be > convenient.) > > On Sat, Jul 7, 2018 at 4:03 PM, John Lilley <[email protected]> wrote: > > Does protobuf include utility methods for direct ser/deser on varint, > > string, etc? > > Thanks > > john > > > > On Sat, Jul 7, 2018 at 2:02 PM John Lilley <[email protected]> wrote: > >> > >> Thanks! > >> Given that, is there any advantage to a "header message" as opposed to > >> just hand-serializing everything in the header? > >> > >> > >> On Sat, Jul 7, 2018 at 12:45 PM Ilia Mirkin <[email protected]> > wrote: > >>> > >>> You need explicit lengths. Usually this is done as <header length > >>> varint><header><body>. And the header contains the body length in it. > >>> In Java, there's a CodedInputStream/OutputStream which makes it easy > >>> to consume fixed lengths (push/popLimit) as well as raw varints (as > >>> for the initial header length). Other languages have similar > >>> abstractions. > >>> > >>> On Sat, Jul 7, 2018 at 2:26 PM, John Lilley <[email protected]> wrote: > >>> > I am posting protobuf messages to a message broker, and in order to > >>> > identify > >>> > them, I prefix the message bytes with the serialized result of a > >>> > "header" > >>> > message: > >>> > > >>> > message Header { > >>> > int version = 1; > >>> > string message_type = 2; > >>> > } > >>> > > >>> > It is easy, to concatenate the header+actual message bytes and post > the > >>> > resulting block to a queue. But how do I take these apart on the > >>> > receiving > >>> > end? Suppose I get a byte-buffer consisting of: > >>> > > >>> > --------------- > >>> > | header | > >>> > --------------- > >>> > | body | > >>> > --------------- > >>> > > >>> > Is it OK to throw this oversized buffer at the Header > deserialization? > >>> > Will > >>> > the extra bytes hurt anything? > >>> > > >>> > Then, once I extract the Header message, how do I know where the body > >>> > begins? I could turn around and ask the Header object "how big would > >>> > you be > >>> > if serialized?". Is that reliable? Is there a better way? > >>> > > >>> > Thanks > >>> > john > >>> > > >>> > -- > >>> > You received this message because you are subscribed to the Google > >>> > Groups > >>> > "Protocol Buffers" group. > >>> > To unsubscribe from this group and stop receiving emails from it, > send > >>> > an > >>> > email to [email protected]. > >>> > To post to this group, send email to [email protected]. > >>> > Visit this group at https://groups.google.com/group/protobuf. > >>> > For more options, visit https://groups.google.com/d/optout. > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Protocol Buffers" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected]. > > To post to this group, send email to [email protected]. > > Visit this group at https://groups.google.com/group/protobuf. > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
