15 #ifndef RMW_FASTRTPS_SHARED_CPP__CUSTOM_SUBSCRIBER_INFO_HPP_
16 #define RMW_FASTRTPS_SHARED_CPP__CUSTOM_SUBSCRIBER_INFO_HPP_
19 #include <condition_variable>
24 #include "fastdds/dds/core/status/DeadlineMissedStatus.hpp"
25 #include "fastdds/dds/core/status/LivelinessChangedStatus.hpp"
26 #include "fastdds/dds/core/status/SubscriptionMatchedStatus.hpp"
27 #include "fastdds/dds/subscriber/DataReader.hpp"
28 #include "fastdds/dds/subscriber/DataReaderListener.hpp"
29 #include "fastdds/dds/topic/TypeSupport.hpp"
31 #include "fastdds/rtps/common/Guid.h"
32 #include "fastdds/rtps/common/InstanceHandle.h"
64 deadline_changes_(false),
65 liveliness_changes_(false),
66 conditionMutex_(nullptr),
67 conditionVariable_(nullptr)
76 eprosima::fastdds::dds::DataReader * reader,
77 const eprosima::fastdds::dds::SubscriptionMatchedStatus & info)
final
81 if (info.current_count_change == 1) {
82 publishers_.insert(eprosima::fastrtps::rtps::iHandle2GUID(info.last_publication_handle));
83 }
else if (info.current_count_change == -1) {
84 publishers_.erase(eprosima::fastrtps::rtps::iHandle2GUID(info.last_publication_handle));
87 update_has_data(reader);
93 update_has_data(reader);
98 on_requested_deadline_missed(
99 eprosima::fastdds::dds::DataReader *,
100 const eprosima::fastrtps::RequestedDeadlineMissedStatus &)
final;
104 on_liveliness_changed(
105 eprosima::fastdds::dds::DataReader *,
106 const eprosima::fastrtps::LivelinessChangedStatus &)
final;
122 conditionMutex_ = conditionMutex;
123 conditionVariable_ = conditionVariable;
130 conditionMutex_ =
nullptr;
131 conditionVariable_ =
nullptr;
137 return data_.load(std::memory_order_relaxed);
145 auto unread_count = reader->get_unread_count();
146 bool has_data = unread_count > 0;
150 data_.store(has_data, std::memory_order_relaxed);
156 return publishers_.size();
162 std::atomic_bool data_;
164 std::atomic_bool deadline_changes_;
165 eprosima::fastdds::dds::RequestedDeadlineMissedStatus requested_deadline_missed_status_
168 std::atomic_bool liveliness_changes_;
169 eprosima::fastdds::dds::LivelinessChangedStatus liveliness_changed_status_
178 #endif // RMW_FASTRTPS_SHARED_CPP__CUSTOM_SUBSCRIBER_INFO_HPP_