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

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

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

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

2.2.2.4 发布模块

DDS (Data Distribution Service) 数据分发服务-规范中文翻译_014_第1张图片
图 2 9 DCPS发布模块的类模型

DCPS发布模块由以下类组成:

  • Publisher
  • DataWriter
  • PublisherListener
  • DataWriterListener
2.2.2.4.1 Publisher类

发布者(Publisher)类是负责实际数据发布的对象。
DDS (Data Distribution Service) 数据分发服务-规范中文翻译_014_第2张图片

发布者(Publisher)代表属于它的一个或多个数据写入者(DataWriter)对象。当其中一个DataWriter对象关联的数据发生改变时,发布者决定何时真正发送数据更新消息。在做出此决定时,发布者会考虑与数据有关的(时间戳,写入者等)以及与发布者(Publisher)和数据写入者(DataWriter)的QoS有关的额外信息,根据这些信息判断何时执行数据发送或者取消数据发送。

除基类方法set_qos,get_qos,set_listener,get_listener,enable,get_statuscondition,create_datawriter和delete_datawriter之外的所有方法都可能返回NOT_ENABLED。

2.2.2.4.1.1 set_listener (来自实体类Entity)

通过扩展实体(Entity)类,发布者(Publisher)可以在创建时或创建后使用set_listener方法将其与监听器(Listener)进行绑定。附加的Listener必须继承自PublisherListener。
监听器在2.2.4 监听器,条件和等待集中描述。

2.2.2.4.1.2 get_listener (来自实体类Entity)

获取Publisher附加绑定的PublisherListener。

2.2.2.4.1.3 set_qos (来自实体类Entity)

通过扩展实体(Entity)类,发布者(Publisher)可以在创建时或创建后使用set_qos方法设置QoS策略。关于可以在Publisher上设置的QoS策略,请参阅2.2.3 支持的QoS。

除标准错误代码外,还可能返回错误代码:IMMUTABLE_POLICY,INCONSISTENT_POLICY。

2.2.2.4.1.4 get_qos (来自实体类Entity)

此方法允许访问QoS策略的取值。

2.2.2.4.1.5 create_ datawriter

此方法将创建一个DataWriter。返回的DataWriter将附加并属于此Publisher。

create_datawriter方法返回的DataWriter实际上是一个派生类,特定于与主题关联的数据类型。如2.2.2.3.7所述,对于每个应用程序定义的数据类型“Foo”,都有一个隐含的,自动生成的类FooDataWriter,它扩展了DataWriter并包含写入“Foo”类型数据的方法。

如果方法调用失败,将返回“nil”值(由平台指定)。

请注意,为DataWriter构建QoS的常见模式如下:

  • 通过主题(Topic)对象的get_qos方法获取关联主题(Topic)的QoS策略。
  • 通过Publisher对象的get_default_datawriter_qos方法获取默认的DataWriter QoS。
  • 结合上述两种QoS策略,根据需要有选择地修改。
  • 使用生成的QoS策略创建DataWriter。

特殊值DATAWRITER_QOS_DEFAULT表明应使用工厂中设置的默认DataWriter QoS创建DataWriter。使用这个特殊值等同于应用程序通过get_default_datawriter_qos(2.2.2.4.1.15)方法获取默认DataWriter QoS并使用获得的QoS创建DataWriter。

特殊值DATAWRITER_QOS_USE_TOPIC_QOS表明应使用默认DataWriter QoS和Topic QoS组合创建DataWriter。使用此值等同于应用程序获取默认DataWriter QoS和Topic QoS(通过方法Topic :: get_qos),然后使用copy_from_topic_qos方法组合这两个QoS,从而使用Topic QoS中设置的QoS策略“覆盖”对应的默认QoS策略。最终将生成的QoS用于创建DataWriter。

传递给方法的主题(Topic)所在的DomainParticipant必须与创建此Publisher的DomainParticipant相同。如果主题是在其他DomainParticipant中创建,则此方法将失败并返回nil。

2.2.2.4.1.6 delete_datawriter

此方法删除属于Publisher的DataWriter。

必须在创建DataWriter的同一Publisher对象上调用delete_datawriter方法。如果在另一个Publisher上调用delete_datawriter,该方法将不起作用,并返回PRECONDITION_NOT_MET。

删除DataWriter将自动取消注册所有实例。 根据WRITER_DATA_LIFECYCLE QosPolicy,删除DataWriter也可以处理所有数据实例。详细信息请参阅2.2.3.21。

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


译文连载

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

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

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


相关链接

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

【How:DDS如何工作?】

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

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

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

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


在这里插入图片描述

你可能感兴趣的:(DDS)