Skip to content

Commit ffe00e7

Browse files
MiguelCompanymergify[bot]
authored andcommitted
Make on_xxx_matched thread-safe (#6371)
* Refs #21355. Added regression test. Signed-off-by: Miguel Company <miguelcompany@eprosima.com> * Refs #21355. Improve readability in EDP.cpp. Signed-off-by: Miguel Company <miguelcompany@eprosima.com> * Refs #21355. Protect `InnerDataWriterListener::on_writer_matched`. Signed-off-by: Miguel Company <miguelcompany@eprosima.com> * Refs #21355. Protect `InnerDataReaderListener::on_reader_matched`. Signed-off-by: Miguel Company <miguelcompany@eprosima.com> --------- Signed-off-by: Miguel Company <miguelcompany@eprosima.com> (cherry picked from commit de70d42) # Conflicts: # src/cpp/fastdds/publisher/DataWriterImpl.hpp # src/cpp/rtps/builtin/discovery/endpoint/EDP.cpp # test/blackbox/common/DDSBlackboxTestsDiscovery.cpp
1 parent d96f0eb commit ffe00e7

6 files changed

Lines changed: 431 additions & 8 deletions

File tree

src/cpp/fastdds/publisher/DataWriterImpl.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1286,6 +1286,8 @@ void DataWriterImpl::InnerDataWriterListener::onWriterMatched(
12861286
RTPSWriter* /*writer*/,
12871287
const PublicationMatchedStatus& info)
12881288
{
1289+
std::lock_guard<std::mutex> scoped_lock(matching_info_mutex_);
1290+
12891291
data_writer_->update_publication_matched_status(info);
12901292

12911293
StatusMask notify_status = StatusMask::publication_matched();

src/cpp/fastdds/publisher/DataWriterImpl.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,11 +459,17 @@ class DataWriterImpl : protected rtps::IReaderDataFilter
459459
const uint32_t& status_id);
460460
#endif //FASTDDS_STATISTICS
461461

462+
private:
463+
462464
DataWriterImpl* data_writer_;
465+
<<<<<<< HEAD
463466

464467
private:
465468

466469
using fastrtps::rtps::WriterListener::onWriterMatched;
470+
=======
471+
std::mutex matching_info_mutex_;
472+
>>>>>>> de70d42f6 (Make `on_xxx_matched` thread-safe (#6371))
467473
}
468474
writer_listener_;
469475

src/cpp/fastdds/subscriber/DataReaderImpl.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -941,6 +941,8 @@ void DataReaderImpl::InnerDataReaderListener::onReaderMatched(
941941
RTPSReader* /*reader*/,
942942
const SubscriptionMatchedStatus& info)
943943
{
944+
std::lock_guard<std::mutex> scoped_lock(matching_info_mutex_);
945+
944946
data_reader_->update_subscription_matched_status(info);
945947

946948
StatusMask notify_status = StatusMask::subscription_matched();

src/cpp/fastdds/subscriber/DataReaderImpl.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,10 @@ class DataReaderImpl
448448
const uint32_t& status_id);
449449
#endif //FASTDDS_STATISTICS
450450

451+
private:
452+
451453
DataReaderImpl* data_reader_;
454+
std::mutex matching_info_mutex_;
452455

453456
private:
454457

0 commit comments

Comments
 (0)