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

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

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

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

2.2.2.2 域模块

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

DCPS域模块由以下类组成:

  • DomainParticipant
  • DomainParticipantFactory
  • DomainParticipantListener
2.2.2.2.1 DomainParticipant类

DomainParticipant对象扮演多个角色:

  • 它充当所有其他Entity对象的容器。
  • 它充当Publisher,Subscriber,Topic和MultiTopic Entity对象的工厂。
  • 它表示应用程序在通信平面上的参与,该通信平面将在同一物理计算机上运行的应用程序彼此隔离。域建立“虚拟网络”,链接共享相同domainId的所有应用程序,并将它们与在不同域上运行的应用程序隔离。通过这种方式,独立的分布式应用程序可以在同一物理网络中共存,而不会干扰甚至了解彼此。
  • 它在域中提供管理服务,允许应用程序在本地“忽略”与给定参与者(ignore_participant),发布(ignore_publication),订阅(ignore_subscription)或主题(ignore_topic)有关的任何信息。
    DDS (Data Distribution Service) 数据分发服务-规范中文翻译_006
    DDS (Data Distribution Service) 数据分发服务-规范中文翻译_006
    DDS (Data Distribution Service) 数据分发服务-规范中文翻译_006

以下详细说明了所有方法。

即使未启用DomainParticipant,也可以调用以下方法。除此以外如果在禁用的DomainParticipant上调用其他方法,则返回NOT_ENABLED:

  • 在基类级别定义的方法,即set_qos,get_qos,set_listener,get_listener和enable。

  • 工厂方法:create_topic,create_publisher,create_subscriber,delete_topic,delete_publisher,delete_subscriber

  • 访问状态的方法:get_statuscondition

2.2.2.2.1.1 create_publisher

此方法将创建具有所需QoS策略的Publisher,并将指定的PublisherListener附加到该Publisher。

如果指定的QoS策略不一致,方法调用将失败,且不会创建Publisher。

特殊值PUBLISHER_QOS_DEFAULT表明应使用工厂中设置的默认Publisher QoS创建Publisher。使用这个特殊值等同于应用程序通过get_default_publisher_qos(2.2.2.2.1.21)方法获取默认Publisher QoS并使用返回的QoS创建Publisher。

创建的Publisher隶属于作为其工厂的DomainParticipant。

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

2.2.2.2.1.2 delete_publisher

此方法将删除现有的Publisher。

如果Publisher还有需要管理的DataWriter对象,则无法将该Publisher删除。在这种情况下调用delete_publisher方法,将返回PRECONDITION_NOT_MET。

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

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

2.2.2.2.1.3 create_subscriber

此方法将创建具有所需QoS策略的Subscriber,并将指定的SubscriberListener附加到该Subscriber。

如果指定的QoS策略不一致,方法调用将失败,且不会创建Subscriber。

特殊值SUBSCRIBER_QOS_DEFAULT表明应使用工厂中设置的默认Subscriber QoS创建Subscriber。使用这个特殊值等同于应用程序通过get_default_subscriber_qos(2.2.2.2.1.23)方法获取默认Subscriber QoS并使用返回的QoS创建Subscriber。

创建的Subscriber隶属于作为其工厂的DomainParticipant。

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

2.2.2.2.1.4 delete_subscriber

此方法将删除现有的Subscriber。

如果Subscriber还有需要管理的DataReader对象,则无法将该Subscriber删除。在这种情况下调用delete_subscriber方法,将返回PRECONDITION_NOT_MET。

必须在创建Subscriber的同一DomainParticipant对象上调用delete_subscriber方法。如果在另一个DomainParticipant上调用delete_subscriber,该方法将不起作用,返回PRECONDITION_NOT_MET。
除标准错误代码外,还可能返回错误代码:PRECONDITION_NOT_MET。

2.2.2.2.1.5 create_topic

此方法创建具有所需QoS策略的Topic,并将指定的TopicListener附加到该Topic。

如果指定的QoS策略不一致,方法调用将失败,并且不会创建Topic。

特殊值TOPIC_QOS_DEFAULT表明应使用工厂中设置的默认Topic QoS创建Topic。使用这个特殊值等同于应用程序通过get_default_topic_qos(2.2.2.2.1.25)方法获取默认Topic QoS并使用返回的QoS创建Topic。

创建的Topic隶属于作为其工厂的DomainParticipant。

Topic需要绑定type_name参数描述的类型。在创建Topic之前,必须在服务中完成该类型的注册。这是在TypeSupport接口的派生类上使用register_type方法完成的,如2.2.2.3.6 TypeSupport接口中所述。
如果方法调用失败,将返回“nil”值(由平台指定)。

2.2.2.2.1.6 delete_topic

此方法将删除一个Topic。

如果还有存在的DataReader,DataWriter,ContentFilteredTopic或MultiTopic需要使用该Topic,则无法将该Topic删除。在这种情况下调用delete_topic方法,将返回PRECONDITION_NOT_MET。

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

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


译文连载

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

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

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


相关链接

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

DDS定义:什么是DDS?

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

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


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

相关文章:

  • 2021-09-03
  • 2021-12-02
  • 2021-06-24
  • 2021-11-20
  • 2021-09-02
  • 2021-10-14
  • 2021-05-17
  • 2021-04-25
猜你喜欢
  • 2021-07-28
  • 2021-10-03
  • 2021-07-18
  • 2022-01-06
  • 2021-09-07
  • 2021-06-24
  • 2021-05-25
相关资源
相似解决方案