-
Notifications
You must be signed in to change notification settings - Fork 15.5k
Home
xfxyjwf edited this page Sep 12, 2014
·
2 revisions
Protocol Buffers are a way of encoding structured data in an efficient yet extensible format. Google uses Protocol Buffers for almost all of its internal RPC protocols and file formats.
https://github.com/google/protobuf/blob/master/CHANGES.txt
You write a .proto
file like this:
message Person { required int32 id = 1; required string name = 2; optional string email = 3; }
Then you compile it with protoc
, the protocol buffer compiler, to produce code in C++, Java, or Python.
Then, if you are using C++, you use that code like this:
Person person;
person.set_id(123);
person.set_name("Bob");
person.set_email("bob@example.com");
fstream out("person.pb", ios::out | ios::binary | ios::trunc);
person.SerializeToOstream(&out);
out.close();
Or like this:
Person person;
fstream in("person.pb", ios::in | ios::binary);
if (!person.ParseFromIstream(&in)) {
cerr << "Failed to parse person.pb." << endl;
exit(1);
}
cout << "ID: " << person.id() << endl;
cout << "name: " << person.name() << endl;
if (person.has_email()) {
cout << "e-mail: " << person.email() << endl;
}
For a more complete example, see the tutorials.