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

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

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

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

2.2.2.4 发布模块

2.2.2.4.1 Publisher类
2.2.2.4.1.7 lookup_datawriter

此方法查找获取之前创建成功的属于发布者(Publisher)的DataWriter,需要查找的DataWriter主题为topic_name。如果不存在此类DataWriter,则方法将返回“nil”。

如果Publisher中存在多个DataWriter满足此条件,则方法将返回其中一个,不指定具体是哪一个。

2.2.2.4.1.8 suspend_publications

此方法告知DDS服务,应用程序将利用属于本Publisher的DataWriter对象进行多次修改。

这是对服务的提示,服务可以通过例如控制修改的扩散然后对这些修改进行批处理来优化其性能。

不要求服务以任何方式使用此提示。

使用此方法必须有匹配的resume_publications方法调用,表明修改集合已完成。如果在调用resume_publications之前删除了发布者,则将丢弃尚未发布的所有暂停更新。

2.2.2.4.1.9 resume_publications

此方法告知服务,应用程序已完成之前suspend_publications方法启动的多个修改。服务实现者可以使用这种提示批量处理自suspend_publications以来所做的所有修改。

对resume_publications的调用必须与之前对suspend_publications的调用相匹配, 否则此方法将返回错误值PRECONDITION_NOT_MET。

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

2.2.2.4.1.10 begin_coherent_changes

此方法要求应用程序使用属于Publisher的DataWriter对象开始“一致集”的修改。 “一致集”将使用匹配的end_coherent_changes方法调用来完成。

“一致集”是修改的集合,必须以如下方式传播:它们在接收方被解析为一致的修改集合;也就是说,接收方只能在集合中的所有修改都可用后才能访问数据。

连接变化可能发生在一组一致变化的中间步骤,例如,发布者或其订阅者之一使用的分区集可能会发生变化,后期加入的DataReader可能会出现在网络上,或者可能发生通信故障。如果此类更改阻止实体接收完整的一致修改集合,则该实体必须表现好像它没有收到任何修改集合。

这些调用可以嵌套。在这种情况下,一致集仅在最后一次调用end_coherent_ changes时终止。

对“一致性更改”的支持使发布端的应用程序能够更改可能属于相同或不同主题的多个数据实例的值,并使这些更改被订阅方“原子地”获取。这在数据取值是相互关联的情况下很有用(例如,如果有两个数据实例表示同一架飞机的“高度”和“速度矢量”并且两者都被更改,以“订阅者可以同时观测到两者的变化”这种方式传输这些值就会很有用;否则,它可能被错误地解释成飞机处于碰撞过程中)。

2.2.2.4.1.11 end_coherent_changes

此方法终结由begin_coherent_changes方法的启动的“一致集”。如果之前没有调用匹配的begin_coherent_ changes,则返回错误PRECONDITION_NOT_MET。

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

2.2.2.4.1.12 wait_for_acknowledgments

此方法会阻塞调用线程,直到所有匹配的可靠的DataReader实体都确认收到可靠的DataWriter实体写入的所有数据,或者max_wait参数设定的持续时间已经到期,以先发生者为准。返回值为OK表示所有匹配的可靠的数据读取者已确认收到所有写入的数据样本; 返回值TIMEOUT表示在确认收到所有数据之前已经超过max_wait设定的时间周期。

2.2.2.4.1.13 get_participant

此方法返回发布者Publisher所属的DomainParticipant。

2.2.2.4.1.14 delete_contained_entities

此方法将删除通过Publisher对象的“创建”方法创建的所有实体。也就是说,它会删除所有包含的DataWriter对象。

如果任一包含的实体处于无法删除的状态,则方法将返回PRECONDITION_NOT_MET。

一旦delete_contained_entities成功返回,应用程序可能会删除发布者Publisher,因为应用程序知道它没有包含DataWriter对象。

2.2.2.4.1.15 set_default_datawriter_qos

此方法设置DataWriter QoS策略的默认值。在create_datawriter方法使用默认QoS策略的情况下,该策略值将用于新创建的DataWriter实体。

此方法将检查生成的策略是否是自相容的; 如果不是,则方法调用无效并返回INCONSISTENT_POLICY。

可以将特殊值DATAWRITER_QOS_DEFAULT传递给此方法,表明将默认QoS重置为工厂使用的初始值,即从未调用set_default_datawriter_qos方法时使用的值。

2.2.2.4.1.16 get_default_datawriter_qos

此方法获取DataWriter QoS的默认值,即在create_datawriter方法使用默认QoS策略的情况下用于新创建的DataWriter实体的QoS策略。

get_default_datawriter_qos获取的值与上次成功调用set_default_datawriter_qos时指定的值集保持一致;如果从未调用过set_default_datawriter_qos,则在2.2.3 支持的QoS中的QoS表中列出了DataWriter QoS默认值。

2.2.2.4.1.17 copy_from_topic_qos

此方法将a_topic_qos中的策略复制到a_datawriter_qos中的相应策略(即替换a_datawriter_qos中的值,如果该位置存在值)。

这是一个“方便”的方法,与get_default_datawriter_qos和Topic :: get_qos方法结合使用最为有用。copy_from_topic_qos方法可用于将DataWriter默认QoS策略与Topic的相应QoS策略合并。可以使用生成的QoS创建新的DataWriter,或设置其QoS。

此方法不会检查生成的a_datawriter_qos的一致性。 这是因为“合并的”a_datawriter_qos可能不是最后一个,因为应用程序仍然可以在将策略应用于DataWriter之前修改某些策略。


译文连载

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

DDS规范-下一篇:待续

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


相关链接

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

【How:DDS如何工作?】

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

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

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

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


在这里插入图片描述

你可能感兴趣的:(DDS)