バイトからロードされたprotobufのタイプを取得する方法を教えてください。
元:
Worklist work = Worklist.newBuilder().build();
byte[] msg = work.toByteArray();
基本的に、msgタイプを取得する方法を見つける必要があり、ワークリストを出力する必要があります。
ありがとう。
バイトからロードされたprotobufのタイプを取得する方法を教えてください。
元:
Worklist work = Worklist.newBuilder().build();
byte[] msg = work.toByteArray();
基本的に、msgタイプを取得する方法を見つける必要があり、ワークリストを出力する必要があります。
ありがとう。
Protobufメッセージは、本質的に自己記述的ではありません。バイトを解析する前に、メッセージタイプを知る必要があります。あなたの場合、バイト配列msgの解析に関するコードは、それらのバイトがワークリストを表していることを認識してから、ワークリストクラスで解析実装を呼び出す必要があります。
ただし、テクニックで説明されているように、ペイロードの一部としてメタデータを提供するクラスを設計できます。
[アップデート]
別のアプローチ-特にprotobufを使用して送受信用のメッセージを作成する場合は、最上位のメッセージクラスを定義することです。送受信されるすべてのメッセージはこのタイプです。次に、このメッセージに含まれる可能性のあるさまざまなタイプのコンテンツ(WorkItemなど)に対して、protobuf拡張機能を使用します。拡張機能に関するドキュメントは、自己記述型メッセージよりも少し優れていると思います。
双方が利用可能な拡張機能を知る必要がありますが、メッセージを解析したら、メッセージオブジェクトに動的にクエリを実行して、どの拡張機能(WorkItemなど)が入力されているかを確認できます。