CycloneDDS源码中enable()和disable()函数的作用以及如何在HelloWorld中加入Qos(先创建Qos再传参数进入)

早呀早呀~

1 enable()和disable()函数作用介绍

在C++版本的CycloneDDS中,enable()disable()函数是用于启用和禁用实体(Entity)的方法。

实体可以是DomainParticipant、Publisher、Subscriber、Topic、DataWriterDataReader

这些方法的作用如下:

enable(): 该方法用于启用实体。启用后,实体将开始执行其相应的功能,例如发布数据、接收数据等。

disable(): 该方法用于禁用实体。禁用后,实体将停止执行其功能,并且不会再执行任何与其相关的操作。

对于不同类型的实体,它们在创建时的初始状态可能不同

一般情况下,默认情况下实体是可用的(enabled),但这可能因具体的应用程序和使用方式而有所不同。

默认的状态下所有的实体都以启动的状态创建,意味着实体创建好了以后做好了立刻被使用的准备,在某些情况下用户可能更希望以禁用的状态去创建实体来达到某些特殊的需求

因此,在使用CycloneDDS时,对于特定的实体,你需要查看相关文档或源代码来确定其初始状态是启用还是禁用。

需要注意的是,无论实体的状态是启用还是禁用,你都可以通过相应的方法来进行切换。这使得你可以在运行时根据需要启用或禁用实体

2 enable()和disable()函数使用

enable()函数直接存在于源码中的,disable()函数不能直接调用。
也就是说启用实体可以实在实体被创建之前,即实体创建以后进行函数调用:writer.enable()都行。

但是禁用实体一定是在创建实体之前就已经设置完成的,而且不是对实体本身进行修改,而是修改其对应工厂实体的Qos来达到效果

至于如何通过修改对应工厂的Qos来达到效果,暂时不知,还在学习中

3 HelloWorld中加入QOS(先创建QOS在创建实体)

以下是在HelloWorld示例中如何加入可靠性的QoS策略,并在创建DataReader时传入的步骤:

首先,你需要包含相应的头文件:
#include <dds/dds.hpp>
#include <dds/core/ddscore.hpp>
#include <dds/core/QosProvider.hpp>

创建DomainParticipantTopic
dds::domain::DomainParticipant participant(0);
dds::topic::Topic<YOUR_TOPIC_TYPE> topic(participant, "YourTopicName");

其中,YOUR_TOPIC_TYPE应替换为你实际使用的主题类型,YourTopicName应替换为你自定义的主题名称。

创建DataReader时传入可靠性QoS策略:

dds::sub::qos::DataReaderQos readerQos;
dds::core::Duration max_blocking_time(X,X)
readerQos << dds::core::policy::Reliability::Reliable(max_blocking_time);
dds::sub::DataReader<YOUR_TOPIC_TYPE> reader(subscriber, topic, readerQos);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南霹雳堂雷家雷无桀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值