1、Topic Discovery
主题发现允许使用内置主题宣告器和检测器端点在端点之间交换主题信息,如DDS RTPS规范第8.5节所述。主题发现基于SEDP协议。
本文档描述了Cyclone DDS中主题发现实现的设计。首先描述了DDSC和DDSI层中用于主题发现的类型(实体)。下一节将介绍使用DDS-SEDP协议的主题发现设计,然后介绍API函数和内置编写器。
DDSC类型
在DDSC层中,以下类型与主题发现相关:
dds_topic
dds_topics具有对dds_ktopic的计数引用,该引用存储主题的类型名称和QoS。共享相同类型名称和QoS的主题引用了相同的dds_ktopic。主题还引用了与其关联的DDSI插入类型。
dds_ktopic
dds_ktropic将主题名称映射到其对应的类型名称和QoS,并包含到相关DDSI主题实体的映射。到DDSI主题的映射使用类型标识符(与dds_topic关联的插入类型)作为关键字,并存储指向DDSI主题实体的指针和该实体的(DDSI)GUID。
dds_ktopics的作用域是参与者:dds_参与者有一个AVL树来跟踪ktopics
DDSI类型
本节介绍用于表示本地和发现的主题的DDSI类型。
ddsi_topicdefinition
主题发现实现引入了ddsi_ttopicdefinition类型。主题定义有一个键,该键是根据其类型标识符和QoS计算的哈希值(后者还包含主题的主题名称和类型名称)。它还包含对DDSI插入类型、QoS结构和类型标识符的引用。主题定义存储在域范围的哈希表中(在域全局变量中