DDS QoS:是不是可以在不指定密钥的情况下发送数据?
Posted
技术标签:
【中文标题】DDS QoS:是不是可以在不指定密钥的情况下发送数据?【英文标题】:DDS QoS: Is it possible to send data without specifying a key?DDS QoS:是否可以在不指定密钥的情况下发送数据? 【发布时间】:2021-07-28 14:57:33 【问题描述】:我目前正在使用 Eclipse Cyclone DDS C++,我想知道是否可以在 IDL 中不使用#pragma keylist
指定任何密钥的情况下发送数据。
是否可以通过 QoS 设置来实现?如果有,怎么做?
【问题讨论】:
【参考方案1】:如果您在没有列出任何关键字段的情况下执行#pragma keylist TYPE
,IDL 编译器将生成创建没有任何关键字段的主题所需的一切。所以
struct S
long something;
string orother;
;
#pragma keylist S
完全有效,然后你可以为S
创建一个主题。
我不完全确定你的意思
在这种情况下,读者无法区分同一主题的写入。
以上将导致该主题的单个实例。您仍然可以拥有历史记录,例如,读者仍然可以通过指定 KEEP_ALL
历史记录设置来确保它看到每个更新。因此,读者仍然可以通过查看内容和/或示例信息来区分写入,但对于 DDS,这些都是对这一实例的更新。
是否可以通过 QoS 设置来实现?
不,您(当前)不能使用 QoS 设置覆盖关键字段。
【讨论】:
我不想更改 IDL 文件,因此无法添加 `#pragma keylist S'。 在那种情况下,为什么不 ``` #include "S.idl" #pragma keylist S ``` 呢? 这几乎就是我所做的。我用一个键和原始文件制作了一个包装器 IDL 文件。但我想知道是否可以在不指定密钥的情况下传输数据。 我更新了问题以使其更加清晰。感谢您的 cmets,这有帮助。以上是关于DDS QoS:是不是可以在不指定密钥的情况下发送数据?的主要内容,如果未能解决你的问题,请参考以下文章