ZBLOG

The DDS specification provides a number of operations for reading and writing data samples. In the examples above we used the take_next_sample() operation, to read the next sample and “take” ownership of it from the reader. The Message Data Reader...

在DDS规范中,提供了一些用于读取和写入数据样本的操作。在上面的示例中,我们使用了take_next_sample()操作,来读取下一个样本并从读取器那里“获取”所有权。Message Data Reader还有以下几个take操作:

  • take():从读取器中获取最多max_samples个值的序列。
  • take_instance():获取指定实例的值序列。
  • take_next_instance():获取属于同一实例的样本序列,而无需指定实例。

还有对应于这些“take”操作的“read”操作,它们获取相同的值,但将样本保留在读取器中,并仅在SampleInfo中标记为已读。

由于这些其他操作是批量读取值的,当样本快速到达时效率更高。以下是一个使用take()函数每次读取最多5个样本的示例调用:

MessageSeq messages(5);
DDS::SampleInfoSeq sampleInfos(5);
DDS::ReturnCode_t status = message_dr->take(
    messages,
    sampleInfos,
    5,
    DDS::ANY_SAMPLE_STATE,
    DDS::ANY_VIEW_STATE,
    DDS::ANY_INSTANCE_STATE
);

三个状态参数可以根据需要特化返回哪些样本。详细了解其使用方法请参考DDS规范。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=15610

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?