I have message defined as
message Person
{
  required int32 id;
}

and than, after protoc-compiling I dump 500 Million of such buffers
using a c++ application into a file.

Now, when I read it back using a different C++ application (and
ParseFromIoStream, I get an error "message too long and look at the
file ..."

My intended behavior is to read the pb-message one at a time, analyze
its content and than read next message. For some reason. when I
deseralize from iostream, pb is reading and deseralizing full content
of the file.

How can I make the deserialization to work online, one message at a
time from the IoStream.

My code is attached below.

Many Thanks, Amit


#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
#include "temp.pb.h"

using namespace std;

#define MAX 500000000

void write()
{
  fstream output("out.db", ios::out | ios::trunc | ios::binary);

  for(int num = 0; num < MAX; ++num)
  {
    Person p;
    p.set_id(num);
    p.SerializeToOstream(&output);
  }
}

void read()
{
  fstream input("out.db", ios::in  | ios::binary);

  int num = 0;
  for(; num < MAX; ++num)
  {
    Person p;
    p.ParseFromIstream(&input);
  }
  cout << endl << num << endl;
}

int main()
{
  write();
  //cout << "Done Writing";
  read();
  cout << "Done reading" << endl;
  return 0;
}



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