是否必须为每个域参与者以相同的方式定义DDS主题?

时间:2018-02-22 14:58:51

标签: data-distribution-service

假设我在一个系统上将主题定义为这样的联合:

union MyType switch (letterId) {
    case a: TypeA typeA;
    case b: TypeB typeB;
    case c: TypeC typeC;
};

但是,如果以TypeC的形式发送联合,则另一个系统对该主题不感兴趣。实际上,定义TypeC本身具有大量的依赖关系,省略它会更方便。我可以在系统2中定义主题,因为它们仍然具有相同的名称吗?

union MyType switch (letterId) {
    case a: TypeA typeA;
    case b: TypeB typeB;
};

它根本不起作用吗?如果它能够在收到TypeC时会发生什么?

1 个答案:

答案 0 :(得分:0)

不必为每个DomainParticipant以完全相同的方式定义主题。 OMG DDS-XTypes specification描述了主题类型如何包含可选字段以及如何扩展或修改它们。

要使DataWriters和DataReader匹配,它们的类型需要根据规范中的 7.2.4类型兼容性部分进行兼容。同一部分定义了有关如何在具有不同定义的兼容类型之间进行分配的规则。

对于联合类型,表7.17中的第一行 - 聚合类型的is-assignable-from关系的定义将告诉您如何使用联合定义执行此操作,同时保持其在不同类型之间的兼容性版本

作为快速评估: 7.2.2.4.4.5可选成员提到联盟成员,包括鉴别者,永远不会是可选的,因此您可能必须找到适合您特殊情况的创意解决方案。

请注意,并非所有DDS供应商都支持XTypes类型系统。

相关问题