私は最近、フラットバッファにかなり苦労しており、助けが必要です。フラットバッファを使用して、さまざまなデータを含むイベントを TCP 経由で送信したいと考えています (ZeroMQ を使用)。したがって、私はUnionを使用しています。
// 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 経由でイベントを送信する Publisher クラスに転送したいと考えています。これを行う良いまたは一般的な方法はありますか?私は次のようなことを考えていました:
mPublisher.publishEvent(event::Event("event1", 0, "dataString"));
mPublisher.publishEvent(event::Event("event2", 1, byteArray));
そのようなコンストラクターがないため、上記の例は機能しません。異なるデータで複数のイベントを作成する良い方法はありますか? これらの flatbuffer-events をパブリッシャーなどの別のクラスに渡すにはどうすればよいですか? フラットバッファまたはイベントオフセットを渡す必要がありますか?