Hi,

this problem can be solved in below way also.

1. By defining new message type.

new_message {
    message a1:1;
    message a2:2;
    ...
    message a32:32
}

In proto3, all the fields are optional by default.

so no need to encode everything. But the problem is we can define more then 
32 messages because of 5-bit field value.

But this problem can also be solved by using struct with in struct.

new_mesasge {
   message 1-32 : 1;
   message 33-64 :2;
  ...
}

This way we no need to worry about Length encoding type. By using protobuf 
only w can solve this problem

Thanks
Satheesh


On Tuesday, February 28, 2012 at 3:57:17 AM UTC+5:30, waynix wrote:
>
> Hello All; 
>
> New to protobuf and did some limited search for my question. So my 
> apology if this has already been talked about. 
>
> I naively thought that ParseFromFileDescriptor/ParseFromIstream would 
> block on an TCP socket and return when a valid message is received. 
> Read some old posts from 2010 and realized it's not that easy due to 
> mesages not being self-delimiting.  And the suggestion from Jason 
> Hsueh was as follows: 
> " 
> One approach to writing multiple messages to the same stream is to use 
> a 
> length-delimited format: write the size of the message, then serialize 
> the 
> message itself. On the receiver side, you would set up a 
> FileInputStream, 
> and wrap a CodedInputStream around that. You can read the size of the 
> messages from the stream and then use PushLimit and PopLimit to 
> control how 
> much data is read. 
> " 
>
> My quesions are: 
>
> 1. Is this still the way to do it? Seems quite cumbersome (to lazy 
> me ;-).  Is there  a wrapper built in to do this? 
> 2. If I understand Jason's suggestion riht, the length is really not 
> part of the message, and the sender has to explcitly set it, instead 
> of having protobuf encode it in. Which means a generic third party 
> sender using my .proto file would not be sufficient.  Plus how would 
> they know the length before encoding the message proper? Filling it in 
> after the fact would change the length again?     or I am totally 
> missing it. 
>
> 3. A related quesiton is in general do I have to manage reading of the 
> socket, or for that matter any istream, and spoon feed the protobuf 
> parser until it says OK, that's a whole message? 
>
> Thanks a lot. 
>

-- 
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