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.

Reply via email to