DCPS发布模块由以下类组成:
发布者(Publisher)代表属于它的一个或多个数据写入者(DataWriter)对象。当其中一个DataWriter对象关联的数据发生改变时,发布者决定何时真正发送数据更新消息。在做出此决定时,发布者会考虑与数据有关的(时间戳,写入者等)以及与发布者(Publisher)和数据写入者(DataWriter)的QoS有关的额外信息,根据这些信息判断何时执行数据发送或者取消数据发送。
除基类方法set_qos,get_qos,set_listener,get_listener,enable,get_statuscondition,create_datawriter和delete_datawriter之外的所有方法都可能返回NOT_ENABLED。
通过扩展实体(Entity)类,发布者(Publisher)可以在创建时或创建后使用set_listener方法将其与监听器(Listener)进行绑定。附加的Listener必须继承自PublisherListener。
监听器在2.2.4 监听器,条件和等待集中描述。
获取Publisher附加绑定的PublisherListener。
通过扩展实体(Entity)类,发布者(Publisher)可以在创建时或创建后使用set_qos方法设置QoS策略。关于可以在Publisher上设置的QoS策略,请参阅2.2.3 支持的QoS。
除标准错误代码外,还可能返回错误代码:IMMUTABLE_POLICY,INCONSISTENT_POLICY。
此方法允许访问QoS策略的取值。
此方法将创建一个DataWriter。返回的DataWriter将附加并属于此Publisher。
create_datawriter方法返回的DataWriter实际上是一个派生类,特定于与主题关联的数据类型。如2.2.2.3.7所述,对于每个应用程序定义的数据类型“Foo”,都有一个隐含的,自动生成的类FooDataWriter,它扩展了DataWriter并包含写入“Foo”类型数据的方法。
如果方法调用失败,将返回“nil”值(由平台指定)。
请注意,为DataWriter构建QoS的常见模式如下:
特殊值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。
此方法删除属于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。