LINUX.ORG.RU

protobuf одинаковое поле для разных протоколов

 ,


0

1

Нужно передать сообщение полученое по одному протоколу в виде похожего сообщения по другому протоколу.

один протокол, пусть p1

message A { X x; ...}
другой протокол, пусть p2
message B {X x; ...}
message X совпадают в протоколах и я слежу за этим (макросы как порекомендовали).

Пытаюсь заполнить сообщение для передачи вот так, через строку

p1:A a1 = someProcedure();
p2::X *x2 = new p2::X();
std::string tmp;
a.x().SerializeToString(&tmp);
x2->ParseFromString(tmp);
a1->set_allocated_x(x2); // a1 типа p1:A

Все работает конечно. Но, блин, чем то напрягает это решение ... как то коряво )

P.S. я правильно понимаю, что утечки тут нет (x2 = new), т.к. протобуф сам освободит память?



Последнее исправление: cetjs2 (всего исправлений: 3)

Ответ на: комментарий от slovazap

CopyFrom, вызываемый из одного типа протобуфа, для другого типа протобуфа приводит :

libprotobuf FATAL ... Tried to merge messages of different types
cvprog
() автор топика
Последнее исправление: cvprog (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.