On Fri, Sep 19, 2008 at 7:39 PM, Leandro Lucarella <[EMAIL PROTECTED]> wrote:

>
> Kenton Varda, el 19 de septiembre a las 16:12 me escribiste:
> > You probably shouldn't rely on this.  Some of the serialization methods
> will
> > guarantee this, some won't.  What you can do is call ByteSize() yourself,
> > and then use SerializeWithCachedSizes(), which requires that ByteSize()
> was
> > already called and won't call it again.  You'll have to do a small amount
> of
> > extra setup (allocating a ZeroCopyOutputStream and a CodedOutputStream),
> but
> > it's pretty straightforward -- you can just copy the code out of
> message.cc.
> > Another thing that you could do which is specific to your use case:
>  Instead
> > of allocating a byte array to serialize into, just use a string:
> >
> > string bytes;
> > pkt.SerializeToString(&bytes);
> > send(fd, bytes.data(), bytes.size(), 0);
>
> Thanks for the tip. I didn't do it this way because I use the same buffer
> for receiving, and I can't use std::string for receiving.
>
> I could use two buffers, but now I wonder how std::string is used when
> serializing. Is the ByteSize() precalculated and space is reserve()ed in
> the string or it's incrementally expanded as it's serialized?


The size is precomputed.  Though, StringOutputStream (a subclass of
ZeroCopyOutputStream) can be used without a precomputed size, in which case
it grows the string as needed.


>
>
> > This is better anyway since it won't break if your messages become larger
> > than SIZE.
>
> This is not a problem to me, all messages are really short and I have
> a physical size limit imposed by the lower level (I'm using TIPC RDM
> sockets) anyway. So I have to drop the message (or abort the program) if
> it's size is longer than this limit, and I have guaranteed that I can't
> possibly receive a message that doesn't fit my buffer.
>
> --
> Leandro Lucarella (luca) | Blog colectivo:
> http://www.mazziblog.com.ar/blog/
>
> ----------------------------------------------------------------------------
> GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
>
> ----------------------------------------------------------------------------
> HOMBRE DESNUDO AMENAZA A LOS VECINOS CON UNA "KATANA" DESDE SU BALCON
>        -- Crónica TV
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to