On Sat, Jul 10, 2010 at 11:53 AM, Maxim Leonovich <[email protected]> wrote:
> I watched on both buffers: they are similar, but in C++ I can't find a > leading Variant32 with size, when in Java it exists. The rests of > buffers are identical. > http://pic4.ru/8337 > http://pic4.ru/8338 > http://pic4.ru/8339 0 0 0 18 is NOT a varint. I think that something else is adding this to the front of your buffer on the C++ end -- these bytes are NOT coming from protocol buffers, as your screenshots plainly demonstrate. The 17 appears to be the varint size (it is only one byte in this case). > > > On 10 июл, 19:33, Evan Jones <[email protected]> wrote: > > On Jul 10, 2010, at 7:47 , Maxim Leonovich wrote: > > > > > ArrayOutputStream(buffer,msg.ByteSize() + 4,sizeof(char)); > > > > The documentation states: > > > > block_size is mainly useful for testing; in production you would > > probably never want to set it. > > > > So you should get rid of the "sizeof(char)" part. > > > > > cos->WriteLittleEndian32(msg.ByteSize()); //Tryed > > > "WriteVariant32", didn't help > > > msg.SerializeToCodedStream(cos); > > > > If you want to use Java's .parseDelimitedFrom, you *must* use > > WriteVarint32, because that is the format it expects the length > > prefix. In this case, you'll need to call ArrayOutputStream:: > > ByteCount() to figure out how many bytes were actually serialized. > > > > You also probably should create the ArrayOutputStream and > > CodedOutputStream on the stack, rather than using new. This will be > > slightly faster. > > > > That said, the only issue here that affects correctness is the > > WriteVarint32 part. The rest shouldn't matter unless I missed > > something. You should change your code to do that, then if you are > > still having problems you should try dumping the contents of the > > buffer on both the C++ and the Java side. Maybe the input/output is > > getting messed up somewhere? > > > > Good luck, > > > > Evan > > > > -- > > Evan Joneshttp://evanjones.ca/ > > -- > You received this message because you are subscribed to the Google Groups > "Protocol Buffers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<protobuf%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/protobuf?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to [email protected]. 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.
