首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在CycloneDDS C++中设置服务质量?

如何在CycloneDDS C++中设置服务质量?
EN

Stack Overflow用户
提问于 2021-04-09 15:41:59
回答 1查看 79关注 0票数 2

我用的是CycloneDDS C++ version

正在尝试为编写器DDS_HISTORY_KEEP_ALL、DDS_DURABILITY_TRANSIENT_LOCAL、DDS_RELIABILITY_RELIABLE设置以下QOS

我正在尝试在dds publisher中设置数据编写器的Qos

代码语言:javascript
复制
dds::domain::DomainParticipant local_participant(domain::default_id());
dds::pub::Publisher local_publisher(local_participant);
dds::topic::Topic<DDSData::myData> topicMyData(local_participant, "DDS");

dds::pub::qos::DataWriterQos  QosW( dds_history_kind(DDS_HISTORY_KEEP_ALL), 
                                        dds_durability_kind(DDS_DURABILITY_TRANSIENT_LOCAL), 
                                        dds_reliability_kind(DDS_RELIABILITY_RELIABLE));

m_ReplyDataWriter = std::make_shared < dds::pub::DataWriter<DDSData::myData>>(local_publisher, topicMyData, QosW, NULL, ::dds::core::status::StatusMask::none());

具有服务质量的DataWriter构造函数

代码语言:javascript
复制
DataWriter(const dds::pub::Publisher& pub,
           const ::dds::topic::Topic<T>& topic,
           const dds::pub::qos::DataWriterQos& qos,
           dds::pub::DataWriterListener<T>* listener = NULL,
           const dds::core::status::StatusMask& mask = ::dds::core::status::StatusMask::none());

它不工作,我在这里错过了什么?

代码语言:javascript
复制
Error   C2664'dds::pub::DataWriter<DDSData::myData,dds::pub::detail::DataWriter>::DataWriter(const dds::pub::DataWriter<DDSData::myData,dds::pub::detail::DataWriter> &)': cannot convert argument 3 from '_Ty' to 'const dds::pub::qos::DataWriterQos &'       
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-10 11:51:02

Check this out

错误是因为QoS设置不正确,您可以尝试下面的代码,

使用您自己的QoS创建DataWriter

代码语言:javascript
复制
dds::domain::DomainParticipant local_participant(domain::default_id());
dds::pub::Publisher local_publisher(local_participant);
dds::topic::Topic<DDSData::myData> topicMyData(local_participant, "DDS");       

dds::pub::qos::DataWriterQos dwqos = topicMyData.qos();

dwqos << dds_history_kind(DDS_HISTORY_KEEP_ALL) 
      << dds_durability_kind(DDS_DURABILITY_TRANSIENT_LOCAL) 
      << dds_reliability_kind(DDS_RELIABILITY_RELIABLE);

dds::pub::DataWriter<Foo::Type> writer2(local_publisher, topicMyData, dwqos);

//m_ReplyDataWriter = std::make_shared < dds::pub::DataWriter<DDSData::myData>>(local_publisher, topicMyData, dwqos, NULL, ::dds::core::status::StatusMask::none());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67016991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档