【问题标题】: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 设置来实现?如果有,怎么做?

【问题讨论】:

    标签: c++ key data-distribution-service 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,这有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2022-08-24
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多