29
29
#include < fastdds/rtps/common/LocatorList.hpp>
30
30
#include < fastdds/rtps/history/WriterHistory.hpp>
31
31
#include < fastdds/rtps/transport/NetworkBuffer.hpp>
32
+ #include < fastdds/utils/collections/ResourceLimitedVector.hpp>
32
33
#include < fastdds/utils/TimedMutex.hpp>
33
34
34
35
#include < rtps/builtin/data/ReaderProxyData.hpp>
@@ -47,6 +48,7 @@ PDPStatelessWriter::PDPStatelessWriter(
47
48
WriterHistory* history,
48
49
WriterListener* listener)
49
50
: StatelessWriter(participant, guid, attributes, flow_controller, history, listener)
51
+ , interested_readers_(participant->get_attributes ().allocation.participants)
50
52
{
51
53
}
52
54
@@ -131,7 +133,8 @@ bool PDPStatelessWriter::is_relevant(
131
133
const fastdds::rtps::CacheChange_t& /* change */ ,
132
134
const fastdds::rtps::GUID_t& reader_guid) const
133
135
{
134
- return interested_readers_.count (reader_guid) > 0 ;
136
+ return interested_readers_.end () !=
137
+ std::find (interested_readers_.begin (), interested_readers_.end (), reader_guid);
135
138
}
136
139
137
140
void PDPStatelessWriter::mark_all_readers_interested ()
@@ -150,16 +153,20 @@ void PDPStatelessWriter::add_interested_reader(
150
153
std::lock_guard<RecursiveTimedMutex> guard (mp_mutex);
151
154
if (!should_reach_all_destinations_)
152
155
{
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
+ }
155
162
}
156
163
}
157
164
158
165
void PDPStatelessWriter::remove_interested_reader (
159
166
const GUID_t& reader_guid)
160
167
{
161
168
std::lock_guard<RecursiveTimedMutex> guard (mp_mutex);
162
- interested_readers_.erase (reader_guid);
169
+ interested_readers_.remove (reader_guid);
163
170
}
164
171
165
172
void PDPStatelessWriter::reschedule_all_samples ()
0 commit comments