Protobuf messages are not aware of their own sizes, and you haven't told the input stream how many bytes of message it should consume. Try this:
coded_input->ReadLittleEndian32(&objtype); coded_input->ReadLittleEndian32(&objlen); CodedInputStream::Limit lim = coded_input->PushLimit(objlen); tMsg.ParseFromCodedStream(coded_input); coded_input->PopLimit(lim); (Note, untested, just I think this is your problem). Chris On Thu, 8 Dec 2011 22:48:25 -0800 (PST) alok <alok.jad...@gmail.com> wrote: > I created a binary file using a c++ program using protocol buffers. I > had issues reading the binary file in my C# program, so I decided to > write a small c++ program to test the reading. > > My proto file is as follows > > message TradeMessage { > required double timestamp = 1; > required string ric_code = 2; > required double price = 3; > required int64 size = 4; > required int64 AccumulatedVolume = 5; > } > > When writing to protocol buffer, I first write the object type, then > object length and the object itself. > > coded_output->WriteLittleEndian32((int) ObjectType_Trade); > coded_output->WriteLittleEndian32(trade.ByteSize()); > trade.SerializeToCodedStream(coded_output); > > Now, when I am trying to read the same file in my c++ program i see > strange behavior. > > My reading code is as follows: > > coded_input->ReadLittleEndian32(&objtype); > coded_input->ReadLittleEndian32(&objlen); > tMsg.ParseFromCodedStream(coded_input); > cout << "Expected Size = " << objlen << endl; > cout<<" Trade message received for: "<< tMsg.ric_code() << endl; > cout << "TradeMessage Size = " << tMsg.ByteSize() << endl; > > In this case, i get following output > > Expected Size = 33 > Trade message received for: .CSAP0104 > TradeMessage Size = 42 > > When I write to file, I write trade.ByteSize() as 33 bytes, but when I > read the same object, the object ByteSize() is 42 bytes i.e. it is > trying to read 42 bytes. But it should be trying to read 33 bytes. > This affects the rest of the fiel reading. I am not sure what is wrong > in this. Please advice. > > just to double check.. I compared the protocol buffer generated files > in my reader and writer projects. The generated files are identical. > So I guess, the file coding is different for some reason. I do not > understand why it is different. > > > Regards, > Alok > > Regards, Alok > -- 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 protobuf+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.