Ich google protobuf Bibliothek Version 2.61 und will mit Erweiterungen verwenden,Protobuf C++ Erweiterungen verwenden
Ich habe folgende proto-Dateien:
package communication;
message BaseMessage {
required uint64 server_id = 1;
required string uuid = 2;
required uint64 message_id = 3;
extensions 100 to max;
}
message GetIdentify {
extend BaseMessage {
optional GetIdentify message = 100;
}
required string hostname = 1;
}
Ich bin in der Lage, die Nachricht mit dem folgenden bauen Code:
communication::BaseMessage base_message;
base_message.set_message_id(123456);
base_message.set_server_id(112313123);
base_message.set_uuid("asdaskdjasd213123123asd");
base_message.MutableExtension(communication::GetIdentify::message)->set_hostname("http://test123123123ing");
jedoch habe ich das Gegenteil Aktion möchte und mit unbekannter Erweiterung bekommen Nachricht tun und es zu analysieren und die Erweiterung ist und analysieren nach ihm zu finden.
Ich habe nanobb für mein c-Projekt und Python-Version verwendet. aber ich finde es sehr schwer, in C++ protobuf-code zu schreiben, weil ich nicht genügend Dokumentation und Codebeispiele finden kann.
Gibt es eine Möglichkeit, dies zu tun, ohne zusätzliche Variable des Typs der Erweiterung hinzuzufügen?
Auch was ist die eleganteste Art und Weise so in C++ zu tun
Ok danke, so durch einzige Option iterieren Sie jedes Mal auf alle Arten von Erweiterungen, bis ich die Erweiterung finde? – RythemOfTheDay
Sie können auch das Aufzählungsfeld 'type' zur Basisnachricht hinzufügen und den Typ der tatsächlichen Nachricht angeben. –