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