From d7c5b596e25bdf3309a4a56c7061a53347e9a8e2 Mon Sep 17 00:00:00 2001 From: "Eickhoff Bernhard (CC-AD/ESW1)" Date: Thu, 24 Sep 2020 10:22:23 -0700 Subject: [PATCH] iox-#221 roll back receiver_handler receiverList to use cxx::vector Signed-off-by: Eickhoff Bernhard (CC-AD/ESW1) --- .../internal/popo/receiver_handler.hpp | 9 +++--- .../internal/popo/receiver_handler.inl | 30 +++++++++---------- .../test/moduletests/test_roudi_shm.cpp | 28 ++++++++--------- 3 files changed, 34 insertions(+), 33 deletions(-) diff --git a/iceoryx_posh/include/iceoryx_posh/internal/popo/receiver_handler.hpp b/iceoryx_posh/include/iceoryx_posh/internal/popo/receiver_handler.hpp index a9408331e9..017e0ababf 100644 --- a/iceoryx_posh/include/iceoryx_posh/internal/popo/receiver_handler.hpp +++ b/iceoryx_posh/include/iceoryx_posh/internal/popo/receiver_handler.hpp @@ -17,6 +17,7 @@ #include "iceoryx_posh/internal/mepoo/shared_chunk.hpp" #include "iceoryx_posh/internal/popo/receiver_port.hpp" #include "iceoryx_utils/cxx/list.hpp" +#include "iceoryx_utils/cxx/vector.hpp" #include "iceoryx_utils/error_handling/error_handling.hpp" #include "iceoryx_utils/internal/relocatable_pointer/relative_ptr.hpp" @@ -53,7 +54,7 @@ class ReceiverHandler : public LockingPolicy using this_type = ReceiverHandler_t; public: - using ReceiverList_t = cxx::list, MaxReceivers>; + using ReceiverVector_t = cxx::vector, MaxReceivers>; class AppContext { friend ReceiverHandler_t; @@ -64,7 +65,7 @@ class ReceiverHandler : public LockingPolicy void updateLastChunk(const mepoo::SharedChunk f_chunk); bool hasReceivers(); void enableDoDeliverOnSubscription(); - ReceiverList_t& getReceiverList() noexcept; + ReceiverVector_t& getReceiverList() noexcept; private: AppContext(ReceiverHandler_t& receiverHandler); @@ -115,11 +116,11 @@ class ReceiverHandler : public LockingPolicy bool doesDeliverOnSubscribe() const; uint32_t getMaxDeliveryFiFoCapacity(); /// Returns the list of receivers - ReceiverList_t& getReceiverList() noexcept; + ReceiverVector_t& getReceiverList() noexcept; private: std::atomic_bool m_doDeliverOnSubscription{false}; - ReceiverList_t m_receiverList; + ReceiverVector_t m_receiverVector; mepoo::SharedChunk m_lastChunk{nullptr}; }; diff --git a/iceoryx_posh/include/iceoryx_posh/internal/popo/receiver_handler.inl b/iceoryx_posh/include/iceoryx_posh/internal/popo/receiver_handler.inl index da569f0b57..b591c68de3 100644 --- a/iceoryx_posh/include/iceoryx_posh/internal/popo/receiver_handler.inl +++ b/iceoryx_posh/include/iceoryx_posh/internal/popo/receiver_handler.inl @@ -56,7 +56,7 @@ inline void ReceiverHandler::AppContext::enableDoDe } template -inline typename ReceiverHandler::ReceiverList_t& +inline typename ReceiverHandler::ReceiverVector_t& ReceiverHandler::AppContext::getReceiverList() noexcept { return m_receiverHandler.getReceiverList(); @@ -110,7 +110,7 @@ template inline bool ReceiverHandler::hasReceivers() { lockGuard_t lock(*this); - return !m_receiverList.empty(); + return !m_receiverVector.empty(); } template @@ -118,16 +118,16 @@ inline bool ReceiverHandler::addNewReceiver(Receive { lockGuard_t lock(*this); auto l_alreadyKnownReceiver = - std::find_if(m_receiverList.begin(), m_receiverList.end(), [&](ReceiverPortType::MemberType_t* receiverInList) { - return receiverInList == receiver; - }); + std::find_if(m_receiverVector.begin(), + m_receiverVector.end(), + [&](ReceiverPortType::MemberType_t* receiverInList) { return receiverInList == receiver; }); // check if the receiver port is not yet subscribed - if (l_alreadyKnownReceiver == m_receiverList.end()) + if (l_alreadyKnownReceiver == m_receiverVector.end()) { - if (m_receiverList.size() < m_receiverList.capacity()) + if (m_receiverVector.size() < m_receiverVector.capacity()) { - m_receiverList.push_back(receiver); + m_receiverVector.push_back(receiver); if (m_doDeliverOnSubscription.load(std::memory_order_relaxed)) { @@ -156,10 +156,10 @@ template inline void ReceiverHandler::removeReceiver(ReceiverPortType::MemberType_t* const receiver) { lockGuard_t lock(*this); - auto l_iter = std::find(m_receiverList.begin(), m_receiverList.end(), receiver); - if (l_iter != m_receiverList.end()) + auto l_iter = std::find(m_receiverVector.begin(), m_receiverVector.end(), receiver); + if (l_iter != m_receiverVector.end()) { - m_receiverList.erase(l_iter); + m_receiverVector.erase(l_iter); } } @@ -167,7 +167,7 @@ template inline void ReceiverHandler::removeAll() { lockGuard_t lock(*this); - m_receiverList.clear(); + m_receiverVector.clear(); } template @@ -183,10 +183,10 @@ inline bool ReceiverHandler::doesDeliverOnSubscribe } template -inline typename ReceiverHandler::ReceiverList_t& +inline typename ReceiverHandler::ReceiverVector_t& ReceiverHandler::getReceiverList() noexcept { - return m_receiverList; + return m_receiverVector; } template @@ -196,7 +196,7 @@ inline uint32_t ReceiverHandler::getMaxDeliveryFiFo uint64_t maxDeliveryFiFoCapacity = 0u; - for (auto receiver : m_receiverList) + for (auto receiver : m_receiverVector) { ReceiverPort port(receiver); auto deliveryFiFoCapacity = port.getDeliveryFiFoCapacity(); diff --git a/iceoryx_posh/test/moduletests/test_roudi_shm.cpp b/iceoryx_posh/test/moduletests/test_roudi_shm.cpp index 579327bc6f..2008e526b6 100644 --- a/iceoryx_posh/test/moduletests/test_roudi_shm.cpp +++ b/iceoryx_posh/test/moduletests/test_roudi_shm.cpp @@ -136,8 +136,8 @@ TEST_F(PortManager_test, doDiscovery_singleShotSenderFirst) m_shmManager->doDiscovery(); - ASSERT_THAT(sender.getMembers()->m_receiverHandler.m_receiverList.size(), Eq(1u)); - auto it = sender.getMembers()->m_receiverHandler.m_receiverList.begin(); + ASSERT_THAT(sender.getMembers()->m_receiverHandler.m_receiverVector.size(), Eq(1u)); + auto it = sender.getMembers()->m_receiverHandler.m_receiverVector.begin(); // is the correct receiver in the receiver list EXPECT_THAT(iox::popo::ReceiverPort(*it).getMembers()->m_processName, Eq(receiver1.getMembers()->m_processName)); @@ -159,8 +159,8 @@ TEST_F(PortManager_test, doDiscovery_singleShotReceiverFirst) m_shmManager->doDiscovery(); - ASSERT_THAT(sender.getMembers()->m_receiverHandler.m_receiverList.size(), Eq(1u)); - auto it = sender.getMembers()->m_receiverHandler.m_receiverList.begin(); + ASSERT_THAT(sender.getMembers()->m_receiverHandler.m_receiverVector.size(), Eq(1u)); + auto it = sender.getMembers()->m_receiverHandler.m_receiverVector.begin(); // is the correct receiver in the receiver list EXPECT_THAT(iox::popo::ReceiverPort(*it).getMembers()->m_processName, Eq(receiver1.getMembers()->m_processName)); @@ -182,8 +182,8 @@ TEST_F(PortManager_test, doDiscovery_singleShotReceiverFirstWithDiscovery) m_shmManager->doDiscovery(); - ASSERT_THAT(sender.getMembers()->m_receiverHandler.m_receiverList.size(), Eq(1u)); - auto it = sender.getMembers()->m_receiverHandler.m_receiverList.begin(); + ASSERT_THAT(sender.getMembers()->m_receiverHandler.m_receiverVector.size(), Eq(1u)); + auto it = sender.getMembers()->m_receiverHandler.m_receiverVector.begin(); // is the correct receiver in the receiver list EXPECT_THAT(iox::popo::ReceiverPort(*it).getMembers()->m_processName, Eq(receiver1.getMembers()->m_processName)); @@ -209,8 +209,8 @@ TEST_F(PortManager_test, doDiscovery_rightOrdering) m_shmManager->doDiscovery(); // check if all receivers are subscribed - ASSERT_THAT(sender.getMembers()->m_receiverHandler.m_receiverList.size(), Eq(2u)); - auto it = sender.getMembers()->m_receiverHandler.m_receiverList.begin(); + ASSERT_THAT(sender.getMembers()->m_receiverHandler.m_receiverVector.size(), Eq(2u)); + auto it = sender.getMembers()->m_receiverHandler.m_receiverVector.begin(); // check if the receivers are in the right order EXPECT_THAT(iox::popo::ReceiverPort(*it).getMembers()->m_processName, Eq(receiver1.getMembers()->m_processName)); @@ -365,10 +365,10 @@ TEST_F(PortManager_test, PortDestroy) m_shmManager->doDiscovery(); - ASSERT_THAT(sender1.getMembers()->m_receiverHandler.m_receiverList.size(), Eq(1u)); + ASSERT_THAT(sender1.getMembers()->m_receiverHandler.m_receiverVector.size(), Eq(1u)); EXPECT_TRUE(receiver1.isSubscribed()); - ASSERT_THAT(sender2.getMembers()->m_receiverHandler.m_receiverList.size(), Eq(1u)); + ASSERT_THAT(sender2.getMembers()->m_receiverHandler.m_receiverVector.size(), Eq(1u)); EXPECT_TRUE(receiver1.isSubscribed()); } @@ -388,7 +388,7 @@ TEST_F(PortManager_test, PortDestroy) m_shmManager->doDiscovery(); - ASSERT_THAT(sender1.getMembers()->m_receiverHandler.m_receiverList.size(), Eq(0u)); + ASSERT_THAT(sender1.getMembers()->m_receiverHandler.m_receiverVector.size(), Eq(0u)); EXPECT_FALSE(receiver1.isSubscribed()); } @@ -412,10 +412,10 @@ TEST_F(PortManager_test, PortDestroy) m_shmManager->doDiscovery(); - ASSERT_THAT(sender1.getMembers()->m_receiverHandler.m_receiverList.size(), Eq(1u)); + ASSERT_THAT(sender1.getMembers()->m_receiverHandler.m_receiverVector.size(), Eq(1u)); EXPECT_TRUE(receiver1.isSubscribed()); - ASSERT_THAT(sender2.getMembers()->m_receiverHandler.m_receiverList.size(), Eq(1u)); + ASSERT_THAT(sender2.getMembers()->m_receiverHandler.m_receiverVector.size(), Eq(1u)); EXPECT_TRUE(receiver1.isSubscribed()); } @@ -427,7 +427,7 @@ TEST_F(PortManager_test, PortDestroy) ReceiverPort receiver1(receiverData1); ASSERT_TRUE(receiver1); - ASSERT_THAT(sender1.getMembers()->m_receiverHandler.m_receiverList.size(), Eq(0u)); + ASSERT_THAT(sender1.getMembers()->m_receiverHandler.m_receiverVector.size(), Eq(0u)); EXPECT_FALSE(receiver1.isSubscribed()); } }