DDS (Data Distribution Service) 数据分发服务-规范中文翻译_013

2.以数据为中心的订阅发布(DCPS)

2.2 平台无关模型(Platform Independent Model ,PIM)

2.2.2 平台无关模型(PIM)描述

2.2.2.3.5 TopicListener接口

由于Topic是一种实体(Entity),因此它具有关联监听器的能力。在这种情况下,关联的监听器应该具有具体类型TopicListener。
在这里插入图片描述

2.2.2.3.6 TypeSupport接口

TypeSupport接口是一个抽象接口,必须根据应用程序使用的具体类型进行定制。
此接口要求DDS服务的实现方提供自动的方法,该方法通过类型的描述生成此类型特定的类(例如在OMG IDL映射中使用IDL)。必须先在此类型特定的类上使用register_type方法注册TypeSupport,然后才能使用它创建Topic对象。
在这里插入图片描述

2.2.2.3.6.1 register_type

此方法允许应用程序告知DDS服务其存在的数据类型。该方法的实现包含了需要传递给中间件的所有知识,使得中间件能够管理该数据类型的数据内容。实现还特别地包含了允许DDS服务区分相同类型的不同实例的关键字(Key)定义。

在同一个DomainParticipant中使用相同的type_name注册两个不同的TypeSupport是一种“前提条件错误”。如果应用程序尝试此操作,此方法将失败并返回PRECONDITION_NOT_MET。但是,允许在同一个DomainParticipant中使用相同或不同的type_name值多次注册相同的TypeSupport。如果在一个DomainParticipant中使用相同的type_name在同一个TypeSupport上多次调用register_type,则忽略第二个(和后续)register_type,方法返回正常值OK。

应用程序可以将nil作为type_name的值。在这种情况下,将使用由TypeSupport定义的默认类型名称(即get_type_name方法的返回值)。

除标准错误代码外,还可能返回错误代码:PRECONDITION_NOT_MET和OUT_OF_RESOURCES。

2.2.2.3.6.2 get_type_name

此方法返回TypeSupport代表的数据类型的默认名称。

2.2.2.3.7 应用程序类的派生类

对于应用程序定义的数据类,需要定制的类来促进应用程序与DDS服务之间的类型安全交互。

DDS服务的每个实现方都需要提供自动生成这些特定于类型的类的方法。 TypeSupport是这些自动生成的类必须实现的接口之一。假设应用程序数据类型为“Foo”,为该类型创建的完整自动类集如图2.8所示。
在这里插入图片描述
图 2 8 为名为Foo的应用程序数据类型自动创建的类


译文连载

DDS规范-上一篇:DDS (Data Distribution Service) 数据分发服务-规范中文翻译_012

DDS规范-下一篇:待续

RTPS规范-译文连载:实时发布订阅协议(RTPS)DDS互操作网络协议规范-中文翻译_001


相关链接

【What:什么是DDS? 】【Why:为什么选择DDS? 】

【How:DDS如何工作?】

DDS科普:一文读懂DDS(数据分发服务)

产品介绍:BLUE DCS分布式数据连接解决方案

产品试用:海蓝云平台-Blue DCS

博文汇总:博文汇总(技术博客_行业应用_规范翻译)


在这里插入图片描述