Please read the tutorial:

http://code.google.com/apis/protocolbuffers/docs/cpptutorial.html

On Fri, Mar 12, 2010 at 7:39 PM, mk <apollo...@gmail.com> wrote:

> Hi,
>
> Could someone please help me with serialization/deserialization
> classes defined in .proto (protobuf). here is an exp that I am trying
> to build (see server where I get error):
>
> file.proto
>
>    message Data{
>      required string x1 = 1;
>      required uint32 x2 = 2;
>      required float x3 = 3;
>    }
>    message DataExge {
>      repeated Data data = 1;
>    }
>
> client.cpp
>    ...
>    void serialize(const DataExge &data_snd){
>        try {
>          ofstream ofs("DataExge");
>          data_snd.SerializeToOstream(&ofs);
>
>        } catch(exception &e) {
>          cerr << "serialize/exception: " << e.what() << endl;
>          exit(1);
>        }
>    }
>
>    void deserialize(DataExge &data_rec){
>        try {
>          ifstream ifs("DataExge");
>          data_rec.ParseFromIstream(&ifs);
>
>        } catch(exception& e) {
>          cerr << "deserialize/exception: " << e.what() << endl;
>          exit(1);
>        }
>    }
>
>    int main(){
>    ...
>        DataExge dataexge;
>        Data *dat = dataexge.add_data();
>
>        char *y1 = "operation1";
>        uint32_t y2 = 123 ;
>        float y3 = 3.14;
>
>        // assigning data to send()
>        dat->set_set_x1(y1);
>        dat->set_set_x2(y2);
>        dat->set_set_x3(y3);
>
>        //sending data to the client
>        serialize(dataexge);
>
>        if (send(socket, &dataexge, sizeof(dataexge), 0) < 0) {
>           cerr << "send() failed" ;
>           exit(1);
>         }
>
>         //receiving data from the server
>         deserialize(dataexge);
>
>         if (recv(socket, &dataexge, sizeof(dataexge), 0) < 0) {
>            cerr << "recv() failed";
>            exit(1);
>         }
>
>         //printing received data
>         cout << dat->x1() << "\n";
>         cout << dat->x2() << "\n";
>         cout << dat->x3() << "\n";
>    ...
>    }
>
> server.cpp
>    ...
>    void serialize(const DataExge &data_snd){
>        try {
>          ofstream ofs("DataExge");
>          data_snd.SerializeToOstream(&ofs);
>
>        } catch(exception &e) {
>          cerr << "serialize/exception: " << e.what() << endl;
>          exit(1);
>        }
>    }
>
>    void deserialize(DataExge &data_rec){
>        try {
>          ifstream ifs("DataExge");
>          data_rec.ParseFromIstream(&ifs);
>
>        } catch(exception& e) {
>          cerr << "deserialize/exception: " << e.what() << endl;
>          exit(1);
>        }
>    }
>
>    int main(){
>    ...
>    DataExge dataexge;
>    Data *dat = dataexge.add_data();
>
>    //receiving data from the client
>    deserialize(dataexge);
>
>    if (recv(socket, &dataexge, sizeof(dataexge), 0) < 0) {
>       cerr << "recv() failed";
>       exit(1);
>    }
>
>    //printing received data
>    cout << dat->x1() << "\n";
>    cout << dat->x2() << "\n";
>    cout << dat->x3() << "\n";
>
>    // assigning data to send()
>    dat->set_set_x1("operation2");
>    dat->set_set_x2(dat->x2() + 1);
>    dat->set_set_x3(dat->x3() + 1.1);
>
>    //sending data to the client
>    serialize(dataexge);   //... I am getting error at this line ...
>
>    if (send(socket, &dataexge, sizeof(dataexge), 0) < 0) {
>       cerr << "send() failed" ;
>       exit(1);
>    }
>    ...
>    }
>
> Thanks for your help and replies -
>
> --
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To post to this group, send email to proto...@googlegroups.com.
> To unsubscribe from this group, send email to
> protobuf+unsubscr...@googlegroups.com<protobuf%2bunsubscr...@googlegroups.com>
> .
> 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 proto...@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.

Reply via email to