From 3e4cf58df1cf823efb19358605e273b2cd92dbb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Gonz=C3=A1lez?= Date: Fri, 30 Sep 2022 08:54:00 +0200 Subject: [PATCH] DDS Exclusive Ownership QoS (#56) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Refs #14570. Add Ownership DDS QoS Signed-off-by: Ricardo González Moreno * Refs #14570. Add disposed shape draw Signed-off-by: Ricardo González Moreno * Refs #14570. Add incompatible_qos callbacks Signed-off-by: Ricardo González Moreno Signed-off-by: Ricardo González Moreno --- .../shapesdemo/ShapeHistory.h | 4 - .../eprosimashapesdemo/shapesdemo/ShapeInfo.h | 10 +- .../shapesdemo/ShapePublisher.h | 4 + .../shapesdemo/ShapeSubscriber.h | 9 +- .../shapesdemo/ShapesDemo.h | 56 +------ src/qt/DrawArea.cpp | 46 ++++-- src/qt/subscribedialog.cpp | 1 - src/shapesdemo/ShapeHistory.cpp | 44 +----- src/shapesdemo/ShapePublisher.cpp | 31 +++- src/shapesdemo/ShapeSubscriber.cpp | 76 +++------ src/shapesdemo/ShapesDemo.cpp | 145 ++++++++++++++---- 11 files changed, 217 insertions(+), 209 deletions(-) diff --git a/include/eprosimashapesdemo/shapesdemo/ShapeHistory.h b/include/eprosimashapesdemo/shapesdemo/ShapeHistory.h index 4836352..3b64dd6 100644 --- a/include/eprosimashapesdemo/shapesdemo/ShapeHistory.h +++ b/include/eprosimashapesdemo/shapesdemo/ShapeHistory.h @@ -63,7 +63,6 @@ class ShapeHistory ShapeHistory() : m_history_depth(0) - , m_isExclusiveOwnership(false) { } @@ -105,12 +104,9 @@ class ShapeHistory const SD_COLOR color); void adjustContentFilter( ShapeFilter& filter); - void removedOwner( - const rtps::GUID_t& guid); uint32_t m_history_depth; ShapeFilter m_filter; - bool m_isExclusiveOwnership; }; #endif // SHAPEHISTORY_H diff --git a/include/eprosimashapesdemo/shapesdemo/ShapeInfo.h b/include/eprosimashapesdemo/shapesdemo/ShapeInfo.h index b4d859a..4d7438d 100644 --- a/include/eprosimashapesdemo/shapesdemo/ShapeInfo.h +++ b/include/eprosimashapesdemo/shapesdemo/ShapeInfo.h @@ -43,9 +43,7 @@ class Shape public: Shape() - : m_strength(0) - , m_hasOwner(true) - , m_dirX(0) + : m_dirX(0) , m_dirY(0) , m_changeDir(true) , m_max_speed_variance(0.1f) @@ -66,19 +64,17 @@ class Shape m_shape.x(x); m_shape.y(y); m_shape.shapesize(size); - m_strength = 0; } ShapeType m_shape; TYPESHAPE m_type; Time_t m_time; - rtps::GUID_t m_writerGuid; - uint32_t m_strength; - bool m_hasOwner; float m_dirX; float m_dirY; bool m_changeDir; float m_max_speed_variance; + + bool dispose = false; }; typedef std::pair colorPair; diff --git a/include/eprosimashapesdemo/shapesdemo/ShapePublisher.h b/include/eprosimashapesdemo/shapesdemo/ShapePublisher.h index 15fee16..4944548 100644 --- a/include/eprosimashapesdemo/shapesdemo/ShapePublisher.h +++ b/include/eprosimashapesdemo/shapesdemo/ShapePublisher.h @@ -100,6 +100,10 @@ class ShapePublisher : public DataWriterListener DataWriter* writer, const LivelinessLostStatus& status) override; + void on_offered_incompatible_qos( + DataWriter* writer, + const OfferedIncompatibleQosStatus& status) override; + private: ShapePublisher* parent_; diff --git a/include/eprosimashapesdemo/shapesdemo/ShapeSubscriber.h b/include/eprosimashapesdemo/shapesdemo/ShapeSubscriber.h index 79b47ba..513b9ff 100644 --- a/include/eprosimashapesdemo/shapesdemo/ShapeSubscriber.h +++ b/include/eprosimashapesdemo/shapesdemo/ShapeSubscriber.h @@ -95,10 +95,6 @@ class ShapeSubscriber void on_data_available( DataReader* reader) override; - void on_subscription_matched( - DataReader* reader, - const eprosima::fastdds::dds::SubscriptionMatchedStatus& info) override; - void on_requested_deadline_missed( DataReader* reader, const eprosima::fastrtps::RequestedDeadlineMissedStatus& status) override; @@ -107,6 +103,10 @@ class ShapeSubscriber DataReader* reader, const eprosima::fastrtps::LivelinessChangedStatus& status) override; + void on_requested_incompatible_qos( + DataReader* reader, + const RequestedIncompatibleQosStatus& status) override; + private: ShapeSubscriber* parent_; @@ -121,7 +121,6 @@ class ShapeSubscriber bool hasReceived; QMutex m_mutex; - std::vector m_remoteWriters; ShapeHistory m_shapeHistory; TYPESHAPE m_shapeType; ContentFilterSelector* mp_contentFilter; diff --git a/include/eprosimashapesdemo/shapesdemo/ShapesDemo.h b/include/eprosimashapesdemo/shapesdemo/ShapesDemo.h index 38bdb33..1fd7ab4 100644 --- a/include/eprosimashapesdemo/shapesdemo/ShapesDemo.h +++ b/include/eprosimashapesdemo/shapesdemo/ShapesDemo.h @@ -24,6 +24,7 @@ #define SHAPESDEMO_H_ #include +#include #include @@ -42,6 +43,9 @@ using namespace eprosima::fastdds::dds; +std::string qos_policy_id_to_string( + QosPolicyId_t policy_id); + /** * @brief The ShapesDemoOptions class, used to transmit the options between the options menu and the ShapesDemo class. */ @@ -211,26 +215,8 @@ class ShapesDemo return m_data_sharing_enable; } - // NOTE: there is no other way to check ownership strength unless using DomainParticipant callback listener - // on_publisher_discovery and storing to a map - - //! Add ownership strength to a writer - bool add_writer_strength( - const eprosima::fastrtps::rtps::GUID_t& guid, - uint32_t strength); - - //! Erase ownership strength from a writer (When writer drops) - bool remove_writer_strength( - eprosima::fastrtps::rtps::GUID_t guid); - - //! Get writer strength - uint32_t writer_strength( - eprosima::fastrtps::rtps::GUID_t guid); - private: - std::map m_ownership_strength_map; - std::vector m_publishers; std::vector m_subscribers; eprosima::fastdds::dds::DomainParticipant* mp_participant; @@ -257,40 +243,6 @@ class ShapesDemo #endif // ifdef ENABLE_ROS_COMPONENTS std::map m_topics; bool m_data_sharing_enable; - - class Listener : public eprosima::fastdds::dds::DomainParticipantListener - { - public: - - Listener( - ShapesDemo* participant) - : mp_parent_(participant) - { - } - - /* Custom Callback on_publisher_discovery */ - virtual void on_publisher_discovery( - eprosima::fastdds::dds::DomainParticipant*, - eprosima::fastrtps::rtps::WriterDiscoveryInfo&& info) - { - switch (info.status){ - case eprosima::fastrtps::rtps::WriterDiscoveryInfo::DISCOVERED_WRITER: - case eprosima::fastrtps::rtps::WriterDiscoveryInfo::CHANGED_QOS_WRITER: - // Add strength to Participant map - mp_parent_->add_writer_strength(info.info.guid(), info.info.m_qos.m_ownershipStrength.value); - break; - case eprosima::fastrtps::rtps::WriterDiscoveryInfo::REMOVED_WRITER: - // Erase strength to Participant map - mp_parent_->remove_writer_strength(info.info.guid()); - break; - } - } - - private: - - ShapesDemo* mp_parent_; - } - m_listener; }; #endif /* SHAPESDEMO_H_ */ diff --git a/src/qt/DrawArea.cpp b/src/qt/DrawArea.cpp index 8cf255c..511d102 100644 --- a/src/qt/DrawArea.cpp +++ b/src/qt/DrawArea.cpp @@ -132,14 +132,11 @@ void DrawArea::drawShapes( { size_t total = vit->size(); int index = 0; - if (vit->begin()->m_writerGuid != rtps::c_Guid_Unknown) + for (std::list::reverse_iterator sit = vit->rbegin(); + sit != vit->rend(); ++sit) { - for (std::list::reverse_iterator sit = vit->rbegin(); - sit != vit->rend(); ++sit) - { - paintShape(painter, *sit, getAlpha(index, total), true); - ++index; - } + paintShape(painter, *sit, getAlpha(index, total), true); + ++index; } } } @@ -165,15 +162,27 @@ void DrawArea::paintShape( painter->save(); m_pen.setColor(SD_QT_BLACK); m_pen.setStyle(isHistory ? Qt::DotLine : Qt::SolidLine); - painter->setPen(m_pen); QColor auxc = SD_QT_BLACK; - if (shape.m_shape.color().size() >= 3) + if (!shape.dispose) { - auxc = SD_COLOR2QColor(getColor(shape.m_shape.color().at(0), shape.m_shape.color().at(2))); + if (shape.m_shape.color().size() >= 3) + { + auxc = SD_COLOR2QColor(getColor(shape.m_shape.color().at(0), shape.m_shape.color().at(2))); + } + auxc.setAlpha(alpha); + m_brush.setColor(auxc); + } + else + { + auxc = SD_QT_WHITE; + m_brush.setColor(auxc); + if (shape.m_shape.color().size() >= 3) + { + m_pen.setColor(SD_COLOR2QColor(getColor(shape.m_shape.color().at(0), shape.m_shape.color().at(2)))); + } } - auxc.setAlpha(alpha); - m_brush.setColor(auxc); m_brush.setStyle(Qt::SolidPattern); + painter->setPen(m_pen); painter->setBrush(m_brush); switch (shape.m_type) { @@ -184,6 +193,19 @@ void DrawArea::paintShape( shape.m_shape.shapesize(), shape.m_shape.shapesize()); painter->drawRect(rect); + if (shape.dispose) + { + QLine line(shape.m_shape.x() - shape.m_shape.shapesize() / 2, + shape.m_shape.y() - shape.m_shape.shapesize() / 2, + shape.m_shape.x() + shape.m_shape.shapesize() / 2, + shape.m_shape.y() + shape.m_shape.shapesize() / 2); + painter->drawLine(line); + QLine line2(shape.m_shape.x() + shape.m_shape.shapesize() / 2, + shape.m_shape.y() - shape.m_shape.shapesize() / 2, + shape.m_shape.x() - shape.m_shape.shapesize() / 2, + shape.m_shape.y() + shape.m_shape.shapesize() / 2); + painter->drawLine(line2); + } break; } case TRIANGLE: diff --git a/src/qt/subscribedialog.cpp b/src/qt/subscribedialog.cpp index 2d306ea..01c4f80 100644 --- a/src/qt/subscribedialog.cpp +++ b/src/qt/subscribedialog.cpp @@ -172,7 +172,6 @@ void SubscribeDialog::on_buttonBox_accepted() case 1: { SSub->m_dr_qos.ownership().kind = eprosima::fastdds::dds::EXCLUSIVE_OWNERSHIP_QOS; - SSub->m_shapeHistory.m_isExclusiveOwnership = true; break; } } diff --git a/src/shapesdemo/ShapeHistory.cpp b/src/shapesdemo/ShapeHistory.cpp index 626b571..ff5fc37 100644 --- a/src/shapesdemo/ShapeHistory.cpp +++ b/src/shapesdemo/ShapeHistory.cpp @@ -76,33 +76,6 @@ void ShapeHistory::addShapeToList( std::list& list) { if (passTimeFilter(sh, list.front())) - { - if (this->m_isExclusiveOwnership) - { - addShapeExclusive(sh, list); - } - else - { - addShape(sh, list); - } - } -} - -void ShapeHistory::addShapeExclusive( - Shape& sh, - std::list& list) -{ - if (sh.m_strength > list.front().m_strength || list.front().m_hasOwner == false) - { - list.pop_front(); - addShape(sh, list); - } - else if (sh.m_strength == list.front().m_strength && sh.m_writerGuid == list.front().m_writerGuid ) - { - addShape(sh, list); - } - else if (sh.m_strength == list.front().m_strength && - compareGUID(sh.m_writerGuid, list.front().m_writerGuid)) { addShape(sh, list); } @@ -191,7 +164,7 @@ void ShapeHistory::dispose( { if (it->front().m_shape.color() == getColorStr(color)) { - it->front().m_hasOwner = false; + it->front().dispose = true; return; } } @@ -224,18 +197,3 @@ void ShapeHistory::adjustContentFilter( m_filter.m_minY = filter.m_minY; } } - -void ShapeHistory::removedOwner( - const GUID_t& guid) -{ - for (std::vector>::iterator it = m_history.begin(); - it != m_history.end(); ++it) - { - if (it->front().m_writerGuid == guid) - { - it->front().m_hasOwner = false; - return; - } - } - return; -} diff --git a/src/shapesdemo/ShapePublisher.cpp b/src/shapesdemo/ShapePublisher.cpp index bc11e7f..7b3bcd4 100644 --- a/src/shapesdemo/ShapePublisher.cpp +++ b/src/shapesdemo/ShapePublisher.cpp @@ -121,16 +121,35 @@ void ShapePublisher::PubListener::on_offered_deadline_missed( DataWriter* writer, const OfferedDeadlineMissedStatus& status) { - static_cast(writer); - static_cast(status); - parent_->m_mainWindow->addMessageToOutput(QString("Offered deadline missed")); + if (0 < status.total_count_change) + { + std::stringstream str; + str << "DataWriter " << writer->guid() << " detects deadline missed"; + parent_->m_mainWindow->addMessageToOutput(QString(str.str().c_str())); + } } void ShapePublisher::PubListener::on_liveliness_lost( DataWriter* writer, const LivelinessLostStatus& status) { - static_cast(writer); - static_cast(status); - parent_->m_mainWindow->addMessageToOutput(QString("Publisher lost liveliness")); + if (0 < status.total_count_change) + { + std::stringstream str; + str << "DataWriter " << writer->guid() << " detects liveliness lost"; + parent_->m_mainWindow->addMessageToOutput(QString(str.str().c_str())); + } +} + +void ShapePublisher::PubListener::on_offered_incompatible_qos( + DataWriter* writer, + const OfferedIncompatibleQosStatus& status) +{ + if (0 < status.total_count_change) + { + std::stringstream str; + str << "DataWriter " << writer->guid() << " detects incompatible QoS " << qos_policy_id_to_string( + status.last_policy_id); + parent_->m_mainWindow->addMessageToOutput(QString(str.str().c_str())); + } } diff --git a/src/shapesdemo/ShapeSubscriber.cpp b/src/shapesdemo/ShapeSubscriber.cpp index 104f9ce..7fdb68b 100644 --- a/src/shapesdemo/ShapeSubscriber.cpp +++ b/src/shapesdemo/ShapeSubscriber.cpp @@ -124,10 +124,6 @@ void ShapeSubscriber::SubListener::on_data_available( while (reader->take_next_sample(&shape.m_shape, &info) == ReturnCode_t::RETCODE_OK) { shape.m_time = info.source_timestamp.to_duration_t(); - shape.m_writerGuid = info.sample_identity.writer_guid(); - - shape.m_strength = parent_->mp_sd->writer_strength( - eprosima::fastrtps::rtps::iHandle2GUID(info.publication_handle)); QMutexLocker locck(&parent_->m_mutex); if (info.instance_state == ALIVE_INSTANCE_STATE) @@ -150,44 +146,6 @@ void ShapeSubscriber::SubListener::on_data_available( } } -void ShapeSubscriber::SubListener::on_subscription_matched( - DataReader* reader, - const eprosima::fastdds::dds::SubscriptionMatchedStatus& info) -{ - static_cast(reader); - if (info.current_count_change > 1) - { - bool found = false; - for (std::vector::iterator it = parent_->m_remoteWriters.begin(); - it != parent_->m_remoteWriters.end(); ++it) - { - if (*it == iHandle2GUID(info.last_publication_handle)) - { - found = true; - - // Get ownership (to fake not implemented feature) - eprosima::fastdds::dds::builtin::PublicationBuiltinTopicData writer_data; - - reader->get_matched_publication_data( - writer_data, - eprosima::fastrtps::rtps::iHandle2GUID(info.last_publication_handle)); - - break; - } - } - if (!found) - { - parent_->m_remoteWriters.push_back(iHandle2GUID(info.last_publication_handle)); - } - } - else - { - parent_->m_mutex.lock(); - parent_->m_shapeHistory.removedOwner(iHandle2GUID(info.last_publication_handle)); - parent_->m_mutex.unlock(); - } -} - void ShapeSubscriber::adjustContentFilter( ShapeFilter& filter) { @@ -209,24 +167,40 @@ void ShapeSubscriber::SubListener::on_requested_deadline_missed( DataReader* reader, const eprosima::fastrtps::RequestedDeadlineMissedStatus& status) { - static_cast(reader); - static_cast(status); - parent_->m_mainWindow->addMessageToOutput(QString("Requested deadline missed")); + if (0 < status.total_count_change) + { + std::stringstream str; + str << "DataReader " << reader->guid() << " detects deadline missed"; + parent_->m_mainWindow->addMessageToOutput(QString(str.str().c_str())); + } } void ShapeSubscriber::SubListener::on_liveliness_changed( DataReader* reader, const eprosima::fastrtps::LivelinessChangedStatus& status) { - static_cast(reader); - if (status.alive_count_change == 1) + std::stringstream str; + if (0 < status.alive_count_change) { - parent_->m_mainWindow->addMessageToOutput(QString("Liveliness recovered")); + str << "DataReader " << reader->guid() << " detects liveliness recovered"; + parent_->m_mainWindow->addMessageToOutput(QString(str.str().c_str())); } - else if (status.not_alive_count_change == 1) + if (0 < status.not_alive_count_change) { - parent_->m_mainWindow->addMessageToOutput(QString("Liveliness lost")); + str << "DataReader " << reader->guid() << " detects liveliness lost"; + parent_->m_mainWindow->addMessageToOutput(QString(str.str().c_str())); } } -//void ShapeSubscriber::removeSamplesFromWriter(GUID_t) +void ShapeSubscriber::SubListener::on_requested_incompatible_qos( + DataReader* reader, + const RequestedIncompatibleQosStatus& status) +{ + if (0 < status.total_count_change) + { + std::stringstream str; + str << "DataReader " << reader->guid() << " detects incompatible QoS " << qos_policy_id_to_string( + status.last_policy_id); + parent_->m_mainWindow->addMessageToOutput(QString(str.str().c_str())); + } +} diff --git a/src/shapesdemo/ShapesDemo.cpp b/src/shapesdemo/ShapesDemo.cpp index c0b286b..2f67f59 100644 --- a/src/shapesdemo/ShapesDemo.cpp +++ b/src/shapesdemo/ShapesDemo.cpp @@ -57,7 +57,6 @@ ShapesDemo::ShapesDemo( , m_ros_type(new shapes_demo_typesupport::idl::KeylessShapeTypePubSubType()) #endif // ifdef ENABLE_ROS_COMPONENTS , m_data_sharing_enable(false) - , m_listener(this) { srand (time(nullptr)); minX = 0; @@ -75,7 +74,6 @@ ShapesDemo::ShapesDemo( registerKeylessShapeTypes(); #endif // ifdef ENABLE_ROS_COMPONENTS - std::cout << "Creating ShapesDemo : " << m_ownership_strength_map.size() << std::endl; registerShapeTypes(); } @@ -209,9 +207,7 @@ bool ShapesDemo::init() mp_participant = DomainParticipantFactory::get_instance()->create_participant( m_options.m_domainId, - qos, - &m_listener, - eprosima::fastdds::dds::StatusMask::none()); + qos); if (nullptr == mp_participant) { @@ -259,9 +255,6 @@ void ShapesDemo::stop() } m_topics.clear(); - // Reset all ownerships from remote writers - m_ownership_strength_map.clear(); - // Remove Participant if (eprosima::fastrtps::types::ReturnCode_t::RETCODE_OK != DomainParticipantFactory::get_instance()->delete_participant(mp_participant)) @@ -477,27 +470,123 @@ Topic* ShapesDemo::getTopic( } } -bool ShapesDemo::add_writer_strength( - const GUID_t& guid, - uint32_t strength) -{ - m_ownership_strength_map[guid] = strength; - return true; -} - -bool ShapesDemo::remove_writer_strength( - GUID_t guid) +std::string qos_policy_id_to_string( + QosPolicyId_t policy_id) { - return m_ownership_strength_map.erase(guid); -} - -uint32_t ShapesDemo::writer_strength( - GUID_t guid) -{ - auto it = m_ownership_strength_map.find(guid); - if (it != m_ownership_strength_map.end()) + std::string ret_val{"UnknownQoS"}; + switch (policy_id) { - return it->second; + case USERDATA_QOS_POLICY_ID: + ret_val = "USERDATA_QOS"; + break; + case DURABILITY_QOS_POLICY_ID: + ret_val = "DURABILITY_QOS"; + break; + case PRESENTATION_QOS_POLICY_ID: + ret_val = "PRESENTATION_QOS"; + break; + case DEADLINE_QOS_POLICY_ID: + ret_val = "DEADLINE_QOS"; + break; + case LATENCYBUDGET_QOS_POLICY_ID: + ret_val = "LATENCYBUDGET_QOS"; + break; + case OWNERSHIP_QOS_POLICY_ID: + ret_val = "OWNERSHIP_QOS"; + break; + case OWNERSHIPSTRENGTH_QOS_POLICY_ID: + ret_val = "OWNERSHIPSTRENGTH_QOS"; + break; + case LIVELINESS_QOS_POLICY_ID: + ret_val = "LIVELINESS_QOS"; + break; + case TIMEBASEDFILTER_QOS_POLICY_ID: + ret_val = "TIMEBASEDFILTER_QOS"; + break; + case PARTITION_QOS_POLICY_ID: + ret_val = "PARTITION_QOS"; + break; + case RELIABILITY_QOS_POLICY_ID: + ret_val = "RELIABILITY_QOS"; + break; + case DESTINATIONORDER_QOS_POLICY_ID: + ret_val = "DESTINATIONORDER_QOS"; + break; + case HISTORY_QOS_POLICY_ID: + ret_val = "HISTORY_QOS"; + break; + case RESOURCELIMITS_QOS_POLICY_ID: + ret_val = "RESOURCELIMITS_QOS"; + break; + case ENTITYFACTORY_QOS_POLICY_ID: + ret_val = "ENTITYFACTORY_QOS"; + break; + case WRITERDATALIFECYCLE_QOS_POLICY_ID: + ret_val = "WRITERDATALIVECYCLE_QOS"; + break; + case READERDATALIFECYCLE_QOS_POLICY_ID: + ret_val = "READERDATALIFECYCLE_QOS"; + break; + case TOPICDATA_QOS_POLICY_ID: + ret_val = "TOPICDATA_QOS"; + break; + case GROUPDATA_QOS_POLICY_ID: + ret_val = "GROUPDATA_QOS"; + break; + case TRANSPORTPRIORITY_QOS_POLICY_ID: + ret_val = "TRANSPORTPRIORITY_QOS"; + break; + case LIFESPAN_QOS_POLICY_ID: + ret_val = "LIFESPAN_QOS"; + break; + case DURABILITYSERVICE_QOS_POLICY_ID: + ret_val = "DURABILITYSERVICE_QOS"; + break; + case DATAREPRESENTATION_QOS_POLICY_ID: + ret_val = "DATAREPRESENTATION_QOS"; + break; + case TYPECONSISTENCYENFORCEMENT_QOS_POLICY_ID: + ret_val = "TYPECONSISTENCYENFORCEMENT_QOS"; + break; + case DISABLEPOSITIVEACKS_QOS_POLICY_ID: + ret_val = "DISABLEPOSITIVEACKS_QOS"; + break; + case PARTICIPANTRESOURCELIMITS_QOS_POLICY_ID: + ret_val = "PARTICIPANTRESOURCELIMITS_QOS"; + break; + case PROPERTYPOLICY_QOS_POLICY_ID: + ret_val = "PROPERTYPOLICY_QOS"; + break; + case PUBLISHMODE_QOS_POLICY_ID: + ret_val = "PUBLISHMODE_QOS"; + break; + case READERRESOURCELIMITS_QOS_POLICY_ID: + ret_val = "READERRESOURCELIMITS_QOS"; + break; + case RTPSENDPOINT_QOS_POLICY_ID: + ret_val = "RTPSENDPOINT_QOS"; + break; + case RTPSRELIABLEREADER_QOS_POLICY_ID: + ret_val = "RTPSRELIABLEREADER_QOS"; + break; + case RTPSRELIABLEWRITER_QOS_POLICY_ID: + ret_val = "RTPSRELIABLEWRITER_QOS"; + break; + case TRANSPORTCONFIG_QOS_POLICY_ID: + ret_val = "TRANSPORTCONFIG_QOS"; + break; + case TYPECONSISTENCY_QOS_POLICY_ID: + ret_val = "TYPECONSISTENCY_QOS"; + break; + case WIREPROTOCOLCONFIG_QOS_POLICY_ID: + ret_val = "WIREPROTOCOLCONFIG_QOS"; + break; + case WRITERRESOURCELIMITS_QOS_POLICY_ID: + ret_val = "WRITERRESOURCELIMITS_QOS"; + break; + default: + break; } - return 0; + + return ret_val; }