早呀早呀~
1 enable()和disable()函数作用介绍
在C++版本的CycloneDDS中,enable()
和disable()
函数是用于启用和禁用实体(Entity)的方法。
实体可以是DomainParticipant、Publisher、Subscriber、Topic、DataWriter
或DataReader
。
这些方法的作用如下:
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>
创建DomainParticipant
和Topic
:
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)
;