имеется протокол
package ru.cow.moo;
message Message1 {
string Id = 1;
int32 code = 2;
}
message Message2 { ...
Каким-то образом получены строки foo и bar, например отсылающая сторона из запаковала и прислала
std::string foo, bar;
int foo_id = 1, bar_id = 2;
moo::Message1 m1;
m1.set_id("123");
m1.set_code(1);
m1.SerializeToString(&foo);
...
Как написать единую функцию ParseMessage, которая распарсит строку и вернет сообщение в соответсвии с его id
moo::Message1 m1 = ParseMessage(foo, foo_id);
moo::Message2 m2 = ParseMessage(bar, bar_id);
P.S. далее вот этого, что не вытянул
void ParseMessage(const std::string & data, int i, google::protobuf::Message* mess) {
switch (i) {
case 1:
mess->ParseFromString(data);
mess->PrintDebugString();
// other actions
// case 2:
}
}
google::protobuf::Message *m = new moo::Message1;
ParseMessage(foo, 1, m);
std::cout << "id = " << static_cast<moo::Message1*>(m)->id() << std::endl;
delete m;