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

本文介绍了DDS规范中的平台无关模型(PIM),重点关注DomainParticipant类,包括create_publisher、delete_publisher、create_subscriber、delete_subscriber、create_topic和delete_topic等方法,探讨DCPS域模块在分布式通信中的角色和功能。
摘要由CSDN通过智能技术生成

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

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

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

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

2.2.2.2 域模块

在这里插入图片描述

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)有关的任何信息。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

即使未启用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

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值