这些天来,我在 flatbuffers 方面遇到了很多困难,我可以使用一些帮助。我想使用 flatbuffer 通过 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 发送事件的发布者类。有没有一种很好或常见的方法来做到这一点?我在想这样的事情:
mPublisher.publishEvent(event::Event("event1", 0, "dataString"));
mPublisher.publishEvent(event::Event("event2", 1, byteArray));
上面的示例不起作用,因为没有这样的构造函数。有没有一种用不同数据创建多个事件的好方法?我应该如何将这些 flatbuffer-events 传递给像我的发布者这样的另一个类?我应该通过 flatbuffer 还是 event-offset?