フラットバッファではかなり苦労しています。 フラットバッファを使用して、TCP(ZeroMQを使用)上で異なるデータを含むイベントを送信したいと考えています。したがって、Unionを使用しています。フラットバッファユニオンを使用してZeroMQ経由で別のイベントを送信
// event.fbs
namespace event;
table ByteArray {
bytes:[byte];
}
table OtherData {
id:uint;
value:uint;
}
union EventData {
ByteArray,
OtherData,
String:string
}
table Event {
name:string (key);
timestamp:ulong = -1;
data:EventData;
}
root_type Event;
私のC++クラスでは、新しいイベントを作成し、ZeroMQ経由でイベントを送信するパブリッシャークラスに転送したいと考えています。これを行うには良い、または一般的な方法がありますか?
mPublisher.publishEvent(event::Event("event1", 0, "dataString"));
mPublisher.publishEvent(event::Event("event2", 1, byteArray));
このようなコンストラクタがないため、上記の例は機能しません。異なるデータを持つ複数のイベントを作成する良い方法はありますか?これらのフラットバッファイベントをパブリッシャーのような別のクラスにどのように渡す必要がありますか?フラットバッファまたはイベントオフセットを渡すべきですか?