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

本文介绍了DDS规范中以数据为中心的订阅发布模型,特别是ContentFilteredTopic和MultiTopic的详细内容。ContentFilteredTopic支持基于内容的订阅,允许订阅者仅接收满足特定条件的数据。MultiTopic则允许订阅者组合、过滤和重新排列来自多个主题的数据。内容涉及这两个类的属性、方法及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

2.2.2.3 主题定义(Topic-Definition)模块
2.2.2.3.3 ContentFilteredTopic类

ContentFilteredTopic类是TopicDescription类的一种特殊化,允许基于内容的订阅。
在这里插入图片描述
ContentFilteredTopic描述了一种更复杂的订阅场景,这种情况下订阅者不一定要收到此主题(Tpic)下发布的每个实例的内容。相反,订阅者只想接收内容满足特定条件的值。 因此,ContentFilteredTopic类可用于发起基于内容的订阅。

通过使用参数为expression_parameters的filter_expression属性完成基于内容的选择。

  • filter_expression属性是一个字符串,用于指定选择感兴趣的数据样本的条件。它类似于SQL语句中的WHERE部分。
  • expression_parameters属性是一系列字符串,它们为filter_expression中的“parameters”(即“%n”标记)赋值。提供的参数的数量必须与filter_expression中的请求值一致(即%n符号的数量)。

附件B描述了filter_expression和expression_parameters的语法。

2.2.2.3.3.1 get_related_topic

此方法返回与ContentFilteredTopic关联的主题(Topic),即在创建ContentFilteredTopic时指定的主题。

2.2.2.3.3.2 filter_expression

与ContentFilteredTopic关联的filter_expression,即创建ContentFilteredTopic时指定的表达式。

2.2.2.3.3.3 get_expression_parameters

此方法返回与ContentFilteredTopic关联的expression_parameters,即上次成功调用set_expression_parameters时指定的参数,或者从未调用set_expression_parameters,在创建ContentFilteredTopic时指定的参数。

2.2.2.3.3.4 set_expression_parameters

此方法设置与ContentFilteredTopic关联的expression_parameters。

2.2.2.3.4 MultiTopic类[可选]

MultiTopic类是TopicDescription类的一种特殊化,允许订阅方组合/过滤/重新排列来自多个主题的数据。
在这里插入图片描述

MultiTopic允许一种更复杂的订阅场景,这种场景下订阅方可以选择同时订阅多个主题的数据,并将从多个主题接收的数据组合成单个结果类型(由继承的type_name指定)。然后根据参数为expression_parameters的subscription_expression属性,对这些数据进行过滤(选择)甚至重新排列(聚合/投影)。

  • subscription_expression属性是一个字符串,用于标识从关联主题中选择和重新排列数据。它类似于一个SQL语句,其中SELECT部分提供要保留的字段,FROM部分提供字段来源的主题名称,WHERE部分提供内容过滤器。组合的主题可能具有不同的类型,但它们受到限制,因为用于NATURAL JOIN操作的字段类型必须相同。
  • expression_parameters属性是一个字符串序列,它为subscription_expression中的“parameters”(即“%n”标记)赋值。提供的参数数量必须与subscription_expression中的请求值一致(即%n符号的数量)。
  • 只要与MultiTopic相关的任何主题的数据发生修改,就会通过常规的监听器或条件机制(参见2.2.4,监听器,条件和等待集)提醒与MultiTopic关联的DataReader实体。
  • 与MultiTopic关联的DataReader实体会访问以下实例,这些实例在DataReader端通过多个DataWriter实体写入的实例“构造”。只要所有构成主题实例都存在,MultiTopic访问实例就会存在。view_state和instance_state是根据构成实例的相应状态计算的:
  • 如果至少有一个构成实例具有view_state = NEW,则MultiTopic实例的view_state(参见2.2.2.5.1)为NEW,否则为NOT_NEW。
  • 如果所有构成主题实例的instance_state为ALIVE,则MultiTopic实例的instance_state(参见2.2.2.5.1)为“ALIVE”。如果至少有一个构成主题实例是NOT_ALIVE_DISPOSED,则为“NOT_ALIVE_DISPOSED”,否则为NOT_ALIVE_NO_WRITERS。

附件B描述了subscription_expression和expression_parameters的语法。

2.2.2.3.4.1 subscription_expression

与MultiTopic相关联的subscription_expressionjie,即创建MultiTopic时指定的表达式。

2.2.2.3.4.2 get_expression_parameters

此方法返回与MultiTopic关联的expression_parameters,即上次成功调用set_expression_parameters时指定的参数,或者从未调用set_expression_parameters,创建MultiTopic时指定的参数。

2.2.2.3.4.3 set_expression_parameters

此方法改变与MultiTopic关联的expression_parameters。


译文连载

DDS规范-上一篇:DDS (Data Distribution Service) 数据分发服务-规范中文翻译_011
DDS规范-下一篇:DDS (Data Distribution Service) 数据分发服务-规范中文翻译_013
RTPS规范-译文连载:实时发布订阅协议(RTPS)DDS互操作网络协议规范-中文翻译_001

相关链接

【What:什么是DDS? 】【Why:为什么选择DDS?
【How:DDS如何工作?
DDS科普:一文读懂DDS(数据分发服务)
产品介绍:BLUE DCS分布式数据连接解决方案
产品试用:海蓝云平台-Blue DCS
博文汇总:博文汇总(技术博客_行业应用_规范翻译)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值