创建数据读取器

DataReader始终属于Subscriber 。DataReader 的创建是通过create_datareader()Subscriber 实例上的成员函数完成的,它充当 DataReader 的工厂。

强制性论点是:

绑定到将要传输的数据类型的主题。

DataReaderQos描述 DataReader的行为。如果提供DATAREADER_QOS_DEFAULT的值为 ,则使用Default DataReaderQos的值。

可选参数是:

派生自DataReaderListener的侦听器,实现将触发的回调以响应 DataReader 上的事件和状态更改。默认情况下使用空回调。

StatusMask激活或停用触发 DataReaderListener 上的单个回调的A。默认情况下,所有事件都已启用。

create_datareader()如果在操作过程中出现错误,将返回一个空指针,例如,如果提供的 QoS 不兼容或不受支持。建议检查返回值是否为有效指针。

// Create a DataReader with default DataReaderQos and no Listener
// The value DATAREADER_QOS_DEFAULT is used to denote the default QoS.
DataReader* data_reader_with_default_qos =subscriber->create_datareader(topic, DATAREADER_QOS_DEFAULT);
if (nullptr == data_reader_with_default_qos)
{// Errorreturn;
}// A custom DataReaderQos can be provided to the creation method
DataReaderQos custom_qos;// Modify QoS attributes
// (...)DataReader* data_reader_with_custom_qos =subscriber->create_datareader(topic, custom_qos);
if (nullptr == data_reader_with_custom_qos)
{// Errorreturn;
}// Create a DataReader with default QoS and a custom Listener.
// CustomDataReaderListener inherits from DataReaderListener.
// The value DATAREADER_QOS_DEFAULT is used to denote the default QoS.
CustomDataReaderListener custom_listener;
DataReader* data_reader_with_default_qos_and_custom_listener =subscriber->create_datareader(topic, DATAREADER_QOS_DEFAULT, &custom_listener);
if (nullptr == data_reader_with_default_qos_and_custom_listener)
{// Errorreturn;
}

基于配置文件的 DataReader 创建

不使用 DataReaderQos,配置文件的名称可用于创建具有create_datareader_with_profile() 订阅服务器实例上的成员函数的 DataReader。

强制性论点是:

绑定到将要传输的数据类型的主题。

具有标识 DataReader 的名称的字符串。

可选参数是:

派生自 DataReaderListener 的侦听器,实现将触发的回调,以响应 DataReader 上的事件和状态更改。默认情况下使用空回调。

StatusMask激活或停用触发 DataReaderListener 上的单个回调的A。默认情况下,所有事件都已启用。

create_datareader_with_profile()如果在操作过程中出现错误,将返回一个空指针,例如,如果提供的 QoS 不兼容或不受支持。建议检查返回值是否为有效指针。

XML 配置文件必须先前已加载。请参阅从 XML 文件加载配置文件。

// First load the XML with the profiles
DomainParticipantFactory::get_instance()->load_XML_profiles_file("profiles.xml");// Create a DataReader using a profile and no Listener
DataReader* data_reader_with_profile =subscriber->create_datareader_with_profile(topic, "data_reader_profile");
if (nullptr == data_reader_with_profile)
{// Errorreturn;
}// Create a DataReader using a profile and a custom Listener.
// CustomDataReaderListener inherits from DataReaderListener.
CustomDataReaderListener custom_listener;
DataReader* data_reader_with_profile_and_custom_listener =subscriber->create_datareader_with_profile(topic, "data_reader_profile", &custom_listener);
if (nullptr == data_reader_with_profile_and_custom_listener)
{// Errorreturn;
}

删除数据读取器

可以使用创建 DataReader 的订阅服务器实例delete_datareader()上的成员函数 删除 DataReader。

只有当属于 DataReader (QueryConditions) 的所有实体都已被删除时,才能删除 DataReader。否则,函数会报错,DataReader 不会被删除。这可以通过使用DataReaderdelete_contained_entities()的成员函数 来执行。

// Create a DataReader
DataReader* data_reader =subscriber->create_datareader(topic, DATAREADER_QOS_DEFAULT);
if (nullptr == data_reader)
{// Errorreturn;
}// Use the DataReader to communicate
// (...)// Delete the entities the DataReader created
if (data_reader->delete_contained_entities() != ReturnCode_t::RETCODE_OK)
{// DataReader failed to delete the entities it created.return;
}// Delete the DataReader
if (subscriber->delete_datareader(data_reader) != ReturnCode_t::RETCODE_OK)
{// Errorreturn;
}

dds:subscribe:DataReader相关推荐

  1. fastdds的快速使用

    1.1.什么是 DDS? 数据分发服务 (DDS)是一种以 数据为中心的通信协议,用于分布式软件应用程序通信.它描述了支持数据提供者和数据消费者之间通信的通信应用程序编程接口 (API) 和通信语义. ...

  2. OpenDDS学习笔记(3):OpenDDS概述

    文章目录 一.DCPS概述 1.1 基本组成 1.2 内置主题 1.3 QoS策略 1.4 Listener 1.5 条件 二.OpenDDS实现 2.1 兼容性 2.1.1 DDS兼容性 2.1.2 ...

  3. 什么是OpenDDS???What is OpenDDS???开源项目???

    文章目录 OpenDDS ACE TAO ACE+TAO OpenDDS类型定义 OpenDDS Demo Code OpenDDS 可扩展的传输框架 OpenDDS 发现 利用DCPSInfoRep ...

  4. DDS、openDDS和fast DDS介绍

    上一篇文章讲了什么是DDS,以及一些技术特点和openDDS下载,今天继续科普下DDS技术特点和其他版本的实现. DDS DDS采用订阅/发布体系结构,以数据为中心,也就是通过订阅/发布这个结构来实现 ...

  5. 深入浅出 Fast DDS网络协议(入门篇)

    如果你是机器人领域的学者,那一定听说过ROS1和ROS2,但这两个有什么区别呢? ROS1作为一个通信中间件,在两两节点建立TCP/UDP连接之前,通过发布者和订阅者通过xmlRPC和master进行 ...

  6. DDS协议解读及测试开发实践

    DDS概述 DDS是OMG在2004年发布的中间件协议和应用程序接口(API)标准,它为分布式系统提供了低延迟.高可靠性.可扩展的通信架构标准.DDS目前在工业.医疗.交通.能源.国防领域都有广泛的应 ...

  7. DDS(Date-Distribution Service)协议解读和测试解决方案

    文章目录 1.DDS运行背景以及概述 2.DDS实现方案 3.DDS测试范围 4.DDS测试解决方案 1.DDS运行背景以及概述 通信的本质 在正确额时间内把正确的数据送达正确的地点 (1)数据在哪里 ...

  8. 【DDS】DDS与OpenDDS

    DDS与openDDS DDS 什么是DDS? Data Distribution Service(DDS),根据字面理解就是数据分发服务.这套服务,在分布式应用环境下,可以高效率地分发参与者(应用) ...

  9. 【自动驾驶】4.分布式实时通信——DDS技术

    近期,在汽车通信圈讨论较火的话题中,DDS绝对排得上号.而对于面向服务的通信协议,DDS与SOME/IP各自的优劣?DDS能否替换SOME/IP等问题也随之而来.孰优孰劣,今天暂且不探讨这些问题,我们 ...

最新文章

  1. JVM 垃圾回收器工作原理及使用实例介绍
  2. sql语句换行_Spark随笔|关于Bucket Table与SQL语句转换
  3. 通过反射运行配置文件内容
  4. CodeForces - 1109A Sasha and a Bit of Relax(思维+异或和,好题)
  5. Android 8款开源游戏引擎
  6. Practice 10
  7. 强大的 function adapters
  8. 适合iOS的15大网站推荐
  9. 面向对象程序设计语言和面向过程程序设计
  10. 服务器组态文件在哪里,组态王怎么读取服务器数据库
  11. 计算机默认网络密码是多少,中国电信的默认服务密码是什么
  12. 微信小程序 选择器 picker ;demo大全附效果图
  13. 三角函数π/2转化_数学集训营 | NO.16 任意角的三角函数之必考点
  14. 什么时候跳槽,为什么离职,你想好了么?
  15. UE4- 粒子朝向问题
  16. java自定义权限注解
  17. python高级编程
  18. (每日水题004-1)(DP,滚动数组)洛谷P1508 Likecloud-吃、吃、吃
  19. web前端学习第一周总结
  20. 离散数学第二章 谓词逻辑

热门文章

  1. Windows中使用netsh命令进行端口转发
  2. iPAD低价挡不住Android平板崛起
  3. vue 统计中英文字符串长度_Ant Design Vue 添加区分中英文的长度校验功能
  4. 恐怖的银行信用卡复利
  5. 正则表达式详解-附带Java操作
  6. Linux控制GPIO
  7. 我用c语言把何同学的代码跑起来了
  8. 随机过程基础4--非平稳过程
  9. 【以太网硬件十六】双绞线有哪些种类?
  10. 关于数据库冗余字段设计的利与弊