Skip to content

Commit 44f0324

Browse files
committed
Refs #22708. Avoid allocations using a ResourceLimitedVector instead of an std::set
Signed-off-by: Miguel Company <[email protected]>
1 parent 8c7fc72 commit 44f0324

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

src/cpp/rtps/builtin/discovery/participant/simple/PDPStatelessWriter.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <fastdds/rtps/common/LocatorList.hpp>
3030
#include <fastdds/rtps/history/WriterHistory.hpp>
3131
#include <fastdds/rtps/transport/NetworkBuffer.hpp>
32+
#include <fastdds/utils/collections/ResourceLimitedVector.hpp>
3233
#include <fastdds/utils/TimedMutex.hpp>
3334

3435
#include <rtps/builtin/data/ReaderProxyData.hpp>
@@ -47,6 +48,7 @@ PDPStatelessWriter::PDPStatelessWriter(
4748
WriterHistory* history,
4849
WriterListener* listener)
4950
: StatelessWriter(participant, guid, attributes, flow_controller, history, listener)
51+
, interested_readers_(participant->get_attributes().allocation.participants)
5052
{
5153
}
5254

@@ -131,7 +133,8 @@ bool PDPStatelessWriter::is_relevant(
131133
const fastdds::rtps::CacheChange_t& /* change */,
132134
const fastdds::rtps::GUID_t& reader_guid) const
133135
{
134-
return interested_readers_.count(reader_guid) > 0;
136+
return interested_readers_.end() !=
137+
std::find(interested_readers_.begin(), interested_readers_.end(), reader_guid);
135138
}
136139

137140
void PDPStatelessWriter::mark_all_readers_interested()
@@ -150,16 +153,20 @@ void PDPStatelessWriter::add_interested_reader(
150153
std::lock_guard<RecursiveTimedMutex> guard(mp_mutex);
151154
if (!should_reach_all_destinations_)
152155
{
153-
interested_readers_.insert(reader_guid);
154-
reader_data_filter(this);
156+
auto it = std::find(interested_readers_.begin(), interested_readers_.end(), reader_guid);
157+
if (it == interested_readers_.end())
158+
{
159+
interested_readers_.emplace_back(reader_guid);
160+
reader_data_filter(this);
161+
}
155162
}
156163
}
157164

158165
void PDPStatelessWriter::remove_interested_reader(
159166
const GUID_t& reader_guid)
160167
{
161168
std::lock_guard<RecursiveTimedMutex> guard(mp_mutex);
162-
interested_readers_.erase(reader_guid);
169+
interested_readers_.remove(reader_guid);
163170
}
164171

165172
void PDPStatelessWriter::reschedule_all_samples()

src/cpp/rtps/builtin/discovery/participant/simple/PDPStatelessWriter.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
#define FASTDDS_RTPS_BUILTIN_DISCOVERY_PARTICIPANT_SIMPLE__PDPSTATELESSWRITER_HPP
2121

2222
#include <chrono>
23-
#include <set>
2423

2524
#include <fastdds/rtps/common/LocatorList.hpp>
2625
#include <fastdds/rtps/interfaces/IReaderDataFilter.hpp>
26+
#include <fastdds/utils/collections/ResourceLimitedVector.hpp>
2727

2828
#include <rtps/writer/StatelessWriter.hpp>
2929

@@ -141,7 +141,7 @@ class PDPStatelessWriter : public StatelessWriter, private IReaderDataFilter
141141
//! Configured initial peers
142142
LocatorList initial_peers_{};
143143
//! The set of readers interested
144-
mutable std::set<GUID_t> interested_readers_{};
144+
mutable ResourceLimitedVector<GUID_t> interested_readers_;
145145
//! Whether we have set that all destinations are interested
146146
mutable bool should_reach_all_destinations_ = false;
147147

0 commit comments

Comments
 (0)