Google protobuf ライブラリ バージョン 2.61 を使用していて、拡張機能を使用したいのですが、
次の proto ファイルがあります。
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;
}
次のコードを使用してメッセージを作成できます。
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");
ただし、反対のアクションを実行して、拡張子が不明なメッセージを取得して解析し、それがどの拡張子であるかを見つけて、それに応じて解析したいと思います。
CプロジェクトとPythonバージョンにnanopbを使用しました。しかし、十分なドキュメントやコード例が見つからないため、c++ で protobuf コードを書くのは本当に難しいと思います。
拡張子のタイプの変数を追加せずにこれを行う方法はありますか?
また、C ++でこれを行う最もエレガントな方法は何ですか?