Отправить уже сериализованное сообщение внутри сообщения - PullRequest
0 голосов
/ 20 апреля 2020

Я использую Protobuf с C ++ API, и у меня есть стандартное сообщение, которое я посылаю между двумя различными программами, и я хочу добавить необработанное вложенное сообщение в качестве данных. Поэтому я добавил сообщение, подобное этому:

    Message main{
string id=1;
string data=2;
}

Я попытался сериализовать некоторые вложенные сообщения, которые я сделал, в строку и отправить их как «данные» с «основным» сообщением, но это плохо работает на сторона синтаксического анализатора.

Как я могу отправить вложенное сериализованное сообщение внутри сообщения, используя c ++ и python api.

1 Ответ

2 голосов
/ 20 апреля 2020

Как правило, используйте bytes:

message main {
    string id=1;
    bytes data=2;
}

В дополнение к тому, что данные не повреждаются (string строго UTF-8), пока полезная нагрузка является стандартным сообщением, это также совместим с последующим изменением его (на любом конце или на обоих) на известный тип:

``` proto
message main {
    string id=1;
    TheOtherMessageType data=2;
}
message TheOtherMessageType  {...}

(или даже на использование обеих версий в разное время, в зависимости от того, что наиболее удобно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...