首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Flatbuffer通过ZeroMQ发送不同的事件

使用Flatbuffer通过ZeroMQ发送不同的事件
EN

Stack Overflow用户
提问于 2017-11-21 10:28:39
回答 1查看 350关注 0票数 0

这些天来,我很难吃平缓冲,我需要一些帮助。我想使用平面缓冲区在TCP上发送包含不同数据的事件(使用ZeroMQ)。因此,我使用的是Union

代码语言:javascript
运行
复制
// 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类。这样做有什么好的或常见的方法吗?我在想这样的事情:

代码语言:javascript
运行
复制
mPublisher.publishEvent(event::Event("event1", 0, "dataString"));
mPublisher.publishEvent(event::Event("event2", 1, byteArray));

上面的示例不起作用,因为没有这样的构造函数。有一种用不同数据创建多个事件的好方法吗?我应该如何将这些平面缓冲区事件传递给像我的出版商这样的另一个类?我应该传递平面缓冲区还是事件偏移量?

EN

Stack Overflow用户

回答已采纳

发布于 2017-11-21 14:52:55

您只需要使用所提供的实际构造函数,因此它看起来如下所示:

代码语言:javascript
运行
复制
event::CreateEvent(fbb, "event1", 0, fbb.CreateString("dataString"));

还有一个event::CreateByteArray等等,请参阅生成的代码或教程。

event::CreateEvent将偏移量返回到未完成的FlatBuffer中,因此通常不适合传递给非FlatBuffer函数。您将希望对该偏移量调用fbb.Finish(),然后将结果缓冲区传递给其他函数(同样,请参阅本教程)。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47410801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档