From 57534696c09ea34770565309874204b45e2f4d93 Mon Sep 17 00:00:00 2001 From: cferreiragonz Date: Thu, 23 May 2024 15:47:14 +0200 Subject: [PATCH 1/6] Refs #21077: Homogenize QoS API Signed-off-by: cferreiragonz --- include/fastdds/dds/publisher/qos/DataWriterQos.hpp | 6 ++++++ include/fastdds/dds/subscriber/qos/DataReaderQos.hpp | 4 ++-- src/cpp/fastdds/subscriber/DataReaderImpl.cpp | 6 +++--- src/cpp/fastdds/subscriber/qos/DataReaderQos.cpp | 2 +- src/cpp/fastdds/utils/QosConverters.cpp | 2 +- test/blackbox/api/dds-pim/PubSubReader.hpp | 4 ++-- test/unittest/dds/subscriber/SubscriberTests.cpp | 12 ++++++------ 7 files changed, 21 insertions(+), 15 deletions(-) diff --git a/include/fastdds/dds/publisher/qos/DataWriterQos.hpp b/include/fastdds/dds/publisher/qos/DataWriterQos.hpp index de82cad9a0d..634afb025c5 100644 --- a/include/fastdds/dds/publisher/qos/DataWriterQos.hpp +++ b/include/fastdds/dds/publisher/qos/DataWriterQos.hpp @@ -58,6 +58,12 @@ class RTPSReliableWriterQos (this->disable_heartbeat_piggyback == b.disable_heartbeat_piggyback); } + inline void clear() + { + RTPSReliableWriterQos reset = RTPSReliableWriterQos(); + std::swap(*this, reset); + } + //!Writer Timing Attributes fastdds::rtps::WriterTimes times; diff --git a/include/fastdds/dds/subscriber/qos/DataReaderQos.hpp b/include/fastdds/dds/subscriber/qos/DataReaderQos.hpp index e9e3db92f36..64b85b227e0 100644 --- a/include/fastdds/dds/subscriber/qos/DataReaderQos.hpp +++ b/include/fastdds/dds/subscriber/qos/DataReaderQos.hpp @@ -55,7 +55,7 @@ class RTPSReliableReaderQos const RTPSReliableReaderQos& b) const { return (this->times == b.times) && - (this->disable_positive_ACKs == b.disable_positive_ACKs); + (this->disable_positive_acks == b.disable_positive_acks); } inline void clear() @@ -72,7 +72,7 @@ class RTPSReliableReaderQos /*! * @brief Control the sending of positive ACKs */ - DisablePositiveACKsQosPolicy disable_positive_ACKs; + DisablePositiveACKsQosPolicy disable_positive_acks; }; //! Qos Policy to configure the limit of the reader resources diff --git a/src/cpp/fastdds/subscriber/DataReaderImpl.cpp b/src/cpp/fastdds/subscriber/DataReaderImpl.cpp index 7dde2e62aec..684cf9f5e68 100644 --- a/src/cpp/fastdds/subscriber/DataReaderImpl.cpp +++ b/src/cpp/fastdds/subscriber/DataReaderImpl.cpp @@ -181,7 +181,7 @@ ReturnCode_t DataReaderImpl::enable() att.liveliness_kind = qos_.liveliness().kind; att.matched_writers_allocation = qos_.reader_resource_limits().matched_publisher_allocation; att.expects_inline_qos = qos_.expects_inline_qos(); - att.disable_positive_acks = qos_.reliable_reader_qos().disable_positive_ACKs.enabled; + att.disable_positive_acks = qos_.reliable_reader_qos().disable_positive_acks.enabled; att.data_sharing_listener_thread = qos_.data_sharing().data_sharing_listener_thread(); // TODO(Ricardo) Remove in future @@ -1633,8 +1633,8 @@ bool DataReaderImpl::can_qos_be_updated( EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, "Unique network flows request cannot be changed after the creation of a DataReader."); } - if (to.reliable_reader_qos().disable_positive_ACKs.enabled != - from.reliable_reader_qos().disable_positive_ACKs.enabled) + if (to.reliable_reader_qos().disable_positive_acks.enabled != + from.reliable_reader_qos().disable_positive_acks.enabled) { updatable = false; EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, diff --git a/src/cpp/fastdds/subscriber/qos/DataReaderQos.cpp b/src/cpp/fastdds/subscriber/qos/DataReaderQos.cpp index 43548533d5d..a7218824892 100644 --- a/src/cpp/fastdds/subscriber/qos/DataReaderQos.cpp +++ b/src/cpp/fastdds/subscriber/qos/DataReaderQos.cpp @@ -46,7 +46,7 @@ ReaderQos DataReaderQos::get_readerqos( qos.m_lifespan = lifespan(); //qos.m_topicData --> TODO: Fill with TopicQos info qos.m_durabilityService = durability_service(); - qos.m_disablePositiveACKs = reliable_reader_qos().disable_positive_ACKs; + qos.m_disablePositiveACKs = reliable_reader_qos().disable_positive_acks; qos.type_consistency = type_consistency(); qos.representation = representation(); qos.data_sharing = data_sharing(); diff --git a/src/cpp/fastdds/utils/QosConverters.cpp b/src/cpp/fastdds/utils/QosConverters.cpp index 5b20e188ab3..cfa1bbc7d30 100644 --- a/src/cpp/fastdds/utils/QosConverters.cpp +++ b/src/cpp/fastdds/utils/QosConverters.cpp @@ -98,7 +98,7 @@ void set_qos_from_attributes( qos.endpoint().user_defined_id = attr.getUserDefinedID(); qos.endpoint().entity_id = attr.getEntityID(); qos.reliable_reader_qos().times = attr.times; - qos.reliable_reader_qos().disable_positive_ACKs = attr.qos.m_disablePositiveACKs; + qos.reliable_reader_qos().disable_positive_acks = attr.qos.m_disablePositiveACKs; qos.durability() = attr.qos.m_durability; qos.durability_service() = attr.qos.m_durabilityService; qos.deadline() = attr.qos.m_deadline; diff --git a/test/blackbox/api/dds-pim/PubSubReader.hpp b/test/blackbox/api/dds-pim/PubSubReader.hpp index 5645510f38d..28ea48cc0d1 100644 --- a/test/blackbox/api/dds-pim/PubSubReader.hpp +++ b/test/blackbox/api/dds-pim/PubSubReader.hpp @@ -1002,8 +1002,8 @@ class PubSubReader PubSubReader& keep_duration( const eprosima::fastdds::Duration_t duration) { - datareader_qos_.reliable_reader_qos().disable_positive_ACKs.enabled = true; - datareader_qos_.reliable_reader_qos().disable_positive_ACKs.duration = duration; + datareader_qos_.reliable_reader_qos().disable_positive_acks.enabled = true; + datareader_qos_.reliable_reader_qos().disable_positive_acks.duration = duration; return *this; } diff --git a/test/unittest/dds/subscriber/SubscriberTests.cpp b/test/unittest/dds/subscriber/SubscriberTests.cpp index b667f484810..f2f0d43f567 100644 --- a/test/unittest/dds/subscriber/SubscriberTests.cpp +++ b/test/unittest/dds/subscriber/SubscriberTests.cpp @@ -306,9 +306,9 @@ TEST(SubscriberTests, ChangeDefaultDataReaderQos) qos.reliable_reader_qos().times.initial_acknack_delay.nanosec = 32u; qos.reliable_reader_qos().times.heartbeat_response_delay.seconds = 432; qos.reliable_reader_qos().times.heartbeat_response_delay.nanosec = 43u; - qos.reliable_reader_qos().disable_positive_ACKs.enabled = true; - qos.reliable_reader_qos().disable_positive_ACKs.duration.seconds = 13; - qos.reliable_reader_qos().disable_positive_ACKs.duration.nanosec = 320u; + qos.reliable_reader_qos().disable_positive_acks.enabled = true; + qos.reliable_reader_qos().disable_positive_acks.duration.seconds = 13; + qos.reliable_reader_qos().disable_positive_acks.duration.nanosec = 320u; // .type_consistency qos.representation().m_value.push_back(XML_DATA_REPRESENTATION); qos.representation().m_value.push_back(XCDR_DATA_REPRESENTATION); @@ -428,9 +428,9 @@ TEST(SubscriberTests, ChangeDefaultDataReaderQos) EXPECT_EQ(32u, rqos.reliable_reader_qos().times.initial_acknack_delay.nanosec); EXPECT_EQ(432, rqos.reliable_reader_qos().times.heartbeat_response_delay.seconds); EXPECT_EQ(43u, rqos.reliable_reader_qos().times.heartbeat_response_delay.nanosec); - EXPECT_TRUE(rqos.reliable_reader_qos().disable_positive_ACKs.enabled); - EXPECT_EQ(13, rqos.reliable_reader_qos().disable_positive_ACKs.duration.seconds); - EXPECT_EQ(320u, rqos.reliable_reader_qos().disable_positive_ACKs.duration.nanosec); + EXPECT_TRUE(rqos.reliable_reader_qos().disable_positive_acks.enabled); + EXPECT_EQ(13, rqos.reliable_reader_qos().disable_positive_acks.duration.seconds); + EXPECT_EQ(320u, rqos.reliable_reader_qos().disable_positive_acks.duration.nanosec); // .type_consistency EXPECT_EQ(XML_DATA_REPRESENTATION, rqos.representation().m_value.at(0)); EXPECT_EQ(XCDR_DATA_REPRESENTATION, rqos.representation().m_value.at(1)); From 58f12e0982d207fd1e3cd96991bfb50a9996ec21 Mon Sep 17 00:00:00 2001 From: cferreiragonz Date: Thu, 23 May 2024 15:47:24 +0200 Subject: [PATCH 2/6] Refs #21077: Spelling Signed-off-by: cferreiragonz --- src/cpp/fastdds/domain/DomainParticipantImpl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cpp/fastdds/domain/DomainParticipantImpl.cpp b/src/cpp/fastdds/domain/DomainParticipantImpl.cpp index 21e56ba07ca..19e43db755a 100644 --- a/src/cpp/fastdds/domain/DomainParticipantImpl.cpp +++ b/src/cpp/fastdds/domain/DomainParticipantImpl.cpp @@ -1713,7 +1713,7 @@ bool DomainParticipantImpl::can_qos_be_updated( if (!(to.properties() == from.properties())) { updatable = false; - EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, "PropertyPolilyQos cannot be changed after the participant is enabled"); + EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, "PropertyPolicyQos cannot be changed after the participant is enabled"); } if (!(to.wire_protocol() == from.wire_protocol())) { From 414d70ef1e8ec5f1836e50eb3cd3a4eb7d4595c0 Mon Sep 17 00:00:00 2001 From: cferreiragonz Date: Thu, 23 May 2024 16:14:03 +0200 Subject: [PATCH 3/6] Refs #21077: Make Endpoints Properties unmutable Signed-off-by: cferreiragonz --- src/cpp/fastdds/publisher/DataWriterImpl.cpp | 6 ++++++ src/cpp/fastdds/subscriber/DataReaderImpl.cpp | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/cpp/fastdds/publisher/DataWriterImpl.cpp b/src/cpp/fastdds/publisher/DataWriterImpl.cpp index b1fa87a0a83..617bb73b6b0 100644 --- a/src/cpp/fastdds/publisher/DataWriterImpl.cpp +++ b/src/cpp/fastdds/publisher/DataWriterImpl.cpp @@ -1998,6 +1998,12 @@ bool DataWriterImpl::can_qos_be_updated( EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, "Only the period of Positive ACKs can be changed after the creation of a DataWriter."); } + if (!(to.properties() == from.properties())) + { + updatable = false; + EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, "PropertyPolicyQos cannot be changed after the DataWriter is enabled."); + } + return updatable; } diff --git a/src/cpp/fastdds/subscriber/DataReaderImpl.cpp b/src/cpp/fastdds/subscriber/DataReaderImpl.cpp index 684cf9f5e68..09cb62ded93 100644 --- a/src/cpp/fastdds/subscriber/DataReaderImpl.cpp +++ b/src/cpp/fastdds/subscriber/DataReaderImpl.cpp @@ -1644,7 +1644,12 @@ bool DataReaderImpl::can_qos_be_updated( { updatable = false; EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, - "data_sharing_listener_thread cannot be changed after the DataReader is enabled"); + "data_sharing_listener_thread cannot be changed after the DataReader is enabled."); + } + if (!(to.properties() == from.properties())) + { + updatable = false; + EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, "PropertyPolicyQos cannot be changed after the DataReader is enabled."); } return updatable; } From c38a7a919e2a91345e449d574ffef6037025863b Mon Sep 17 00:00:00 2001 From: cferreiragonz Date: Thu, 13 Jun 2024 17:08:19 +0200 Subject: [PATCH 4/6] Refs #21077: Update new examples Signed-off-by: cferreiragonz --- examples/cpp/configuration/SubscriberApp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/cpp/configuration/SubscriberApp.cpp b/examples/cpp/configuration/SubscriberApp.cpp index 4c6b38b191f..44a8f7b9b51 100644 --- a/examples/cpp/configuration/SubscriberApp.cpp +++ b/examples/cpp/configuration/SubscriberApp.cpp @@ -126,7 +126,7 @@ SubscriberApp::SubscriberApp( reader_qos.resource_limits().max_samples_per_instance = config.max_samples_per_instance; reader_qos.ownership().kind = config.ownership; reader_qos.deadline().period = eprosima::fastdds::Duration_t(config.deadline * 1e-3); - reader_qos.reliable_reader_qos().disable_positive_ACKs.enabled = config.disable_positive_ack; + reader_qos.reliable_reader_qos().disable_positive_acks.enabled = config.disable_positive_ack; reader_qos.lifespan().duration = eprosima::fastdds::Duration_t(config.lifespan * 1e-3); reader_qos.liveliness().kind = config.liveliness; reader_qos.liveliness().lease_duration = eprosima::fastdds::Duration_t( From 88ee29919aa1db49d9e8935a8f226781fbc1b385 Mon Sep 17 00:00:00 2001 From: cferreiragonz Date: Mon, 17 Jun 2024 15:57:18 +0200 Subject: [PATCH 5/6] Refs #21077: Revision - Clear method Signed-off-by: cferreiragonz --- include/fastdds/dds/publisher/qos/DataWriterQos.hpp | 3 +-- include/fastdds/dds/subscriber/qos/DataReaderQos.hpp | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/include/fastdds/dds/publisher/qos/DataWriterQos.hpp b/include/fastdds/dds/publisher/qos/DataWriterQos.hpp index 634afb025c5..0c0cd2a275f 100644 --- a/include/fastdds/dds/publisher/qos/DataWriterQos.hpp +++ b/include/fastdds/dds/publisher/qos/DataWriterQos.hpp @@ -60,8 +60,7 @@ class RTPSReliableWriterQos inline void clear() { - RTPSReliableWriterQos reset = RTPSReliableWriterQos(); - std::swap(*this, reset); + *this = RTPSReliableWriterQos(); } //!Writer Timing Attributes diff --git a/include/fastdds/dds/subscriber/qos/DataReaderQos.hpp b/include/fastdds/dds/subscriber/qos/DataReaderQos.hpp index 64b85b227e0..17339fd2c2d 100644 --- a/include/fastdds/dds/subscriber/qos/DataReaderQos.hpp +++ b/include/fastdds/dds/subscriber/qos/DataReaderQos.hpp @@ -60,8 +60,7 @@ class RTPSReliableReaderQos inline void clear() { - RTPSReliableReaderQos reset = RTPSReliableReaderQos(); - std::swap(*this, reset); + *this = RTPSReliableReaderQos(); } /*! From 19d5c6833ea7449494984b57bfed76df1e663788 Mon Sep 17 00:00:00 2001 From: cferreiragonz Date: Mon, 17 Jun 2024 15:57:48 +0200 Subject: [PATCH 6/6] Refs #21077: Revision - != operator Signed-off-by: cferreiragonz --- include/fastdds/rtps/attributes/PropertyPolicy.h | 6 ++++++ src/cpp/fastdds/domain/DomainParticipantImpl.cpp | 4 ++-- src/cpp/fastdds/publisher/DataWriterImpl.cpp | 2 +- src/cpp/fastdds/subscriber/DataReaderImpl.cpp | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/include/fastdds/rtps/attributes/PropertyPolicy.h b/include/fastdds/rtps/attributes/PropertyPolicy.h index ac673936b39..936e32d16ad 100644 --- a/include/fastdds/rtps/attributes/PropertyPolicy.h +++ b/include/fastdds/rtps/attributes/PropertyPolicy.h @@ -71,6 +71,12 @@ class PropertyPolicy (this->binary_properties_ == b.binary_properties_); } + FASTDDS_EXPORTED_API bool operator !=( + const PropertyPolicy& b) const + { + return !(*this == b); + } + //!Get properties FASTDDS_EXPORTED_API const PropertySeq& properties() const { diff --git a/src/cpp/fastdds/domain/DomainParticipantImpl.cpp b/src/cpp/fastdds/domain/DomainParticipantImpl.cpp index 19e43db755a..6b387d4b08f 100644 --- a/src/cpp/fastdds/domain/DomainParticipantImpl.cpp +++ b/src/cpp/fastdds/domain/DomainParticipantImpl.cpp @@ -1663,7 +1663,7 @@ bool DomainParticipantImpl::set_qos( { to.allocation() = from.allocation(); } - if (first_time && !(to.properties() == from.properties())) + if (first_time && (to.properties() != from.properties())) { to.properties() = from.properties(); } @@ -1710,7 +1710,7 @@ bool DomainParticipantImpl::can_qos_be_updated( EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, "ParticipantResourceLimitsQos cannot be changed after the participant is enabled"); } - if (!(to.properties() == from.properties())) + if ((to.properties() != from.properties())) { updatable = false; EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, "PropertyPolicyQos cannot be changed after the participant is enabled"); diff --git a/src/cpp/fastdds/publisher/DataWriterImpl.cpp b/src/cpp/fastdds/publisher/DataWriterImpl.cpp index 617bb73b6b0..c82df633c35 100644 --- a/src/cpp/fastdds/publisher/DataWriterImpl.cpp +++ b/src/cpp/fastdds/publisher/DataWriterImpl.cpp @@ -1998,7 +1998,7 @@ bool DataWriterImpl::can_qos_be_updated( EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, "Only the period of Positive ACKs can be changed after the creation of a DataWriter."); } - if (!(to.properties() == from.properties())) + if (to.properties() != from.properties()) { updatable = false; EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, "PropertyPolicyQos cannot be changed after the DataWriter is enabled."); diff --git a/src/cpp/fastdds/subscriber/DataReaderImpl.cpp b/src/cpp/fastdds/subscriber/DataReaderImpl.cpp index 09cb62ded93..fa864c546b3 100644 --- a/src/cpp/fastdds/subscriber/DataReaderImpl.cpp +++ b/src/cpp/fastdds/subscriber/DataReaderImpl.cpp @@ -1646,7 +1646,7 @@ bool DataReaderImpl::can_qos_be_updated( EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, "data_sharing_listener_thread cannot be changed after the DataReader is enabled."); } - if (!(to.properties() == from.properties())) + if (to.properties() != from.properties()) { updatable = false; EPROSIMA_LOG_WARNING(RTPS_QOS_CHECK, "PropertyPolicyQos cannot be changed after the DataReader is enabled."); @@ -1749,7 +1749,7 @@ void DataReaderImpl::set_qos( to.expects_inline_qos(from.expects_inline_qos()); } - if (first_time && !(to.properties() == from.properties())) + if (first_time && (to.properties() != from.properties())) { to.properties() = from.properties(); }