I actually got to the bottom of this and it was a pretty silly mistake. The
problem was in string conversions:
My message callback looks like this:
messageHandler(const RWCString& buffer_)
and the parse method signature is this:
ParseFromString(const string& data);
So to convert between the two string types I was calling buffer_.data()
which returns the char * and then std::string was created from that. Now it
looks like the string representation of the GPB probably has something like
\0 in it which caused the std::string to truncate it. Once I switched to
the RWCString::std() function to do the conversion it all worked out fine.
On Wednesday, January 30, 2013 10:31:34 PM UTC-5, Feng Xiao wrote:
>
>
>
> On Thursday, January 31, 2013 4:07:55 AM UTC+8, Naoum wrote:
>>
>> Hi,
>>
>> I am constructing a message on a client using the generated setter
>> methods for the GPB class and sending it over the network to my server. On
>> the server side, however, the message fails to parse and ParseFromString()
>> returns false. Any tips on how to debug parsing failure errors?
>>
> You can try to use ParsePartialFromString() and see if it succeeds. If it
> does, then you are missing some required fields in your proto. If it
> doesn't, it means the data is corrupted somehow. A probable cause is that
> the data stream is trimmed.
>
>
>>
>> I've actually traced this to only happen when an optional double value is
>> present in the message. Any ideas why that might be? The following class is
>> nested several levels inside my msg and when it only has a stringValue it
>> works fine, but when it has a doubleValue it fails to parse. Any thoughts?
>> I will try it again without the nesting but am wondering what could be
>> causing this.
>>
>> message Field {
>> required string name = 1;
>> optional double doubleValue = 2;
>> optional string stringValue = 3;
>> }
>>
>>
>> Thanks,
>> N
>>
>
--
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 http://groups.google.com/group/protobuf?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.