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 "fastrtps/subscriber/Subscriber.h"
25 #include "fastrtps/subscriber/SubscriberListener.h"
58 deadline_changes_(false),
59 liveliness_changes_(false),
60 conditionMutex_(nullptr),
61 conditionVariable_(nullptr)
70 eprosima::fastrtps::Subscriber * sub, eprosima::fastrtps::rtps::MatchingInfo & info)
final
74 if (eprosima::fastrtps::rtps::MATCHED_MATCHING == info.status) {
75 publishers_.insert(info.remoteEndpointGuid);
76 }
else if (eprosima::fastrtps::rtps::REMOVED_MATCHING == info.status) {
77 publishers_.erase(info.remoteEndpointGuid);
91 on_requested_deadline_missed(
92 eprosima::fastrtps::Subscriber *,
93 const eprosima::fastrtps::RequestedDeadlineMissedStatus &)
final;
97 on_liveliness_changed(
98 eprosima::fastrtps::Subscriber *,
99 const eprosima::fastrtps::LivelinessChangedStatus &)
final;
115 conditionMutex_ = conditionMutex;
116 conditionVariable_ = conditionVariable;
123 conditionMutex_ =
nullptr;
124 conditionVariable_ =
nullptr;
130 return data_.load(std::memory_order_relaxed) > 0;
138 #if FASTRTPS_VERSION_MAJOR == 1 && FASTRTPS_VERSION_MINOR < 9
139 uint64_t unread_count = sub->getUnreadCount();
141 uint64_t unread_count = sub->get_unread_count();
146 data_.store(unread_count, std::memory_order_relaxed);
152 return publishers_.size();
158 std::atomic_size_t data_;
160 std::atomic_bool deadline_changes_;
161 eprosima::fastrtps::RequestedDeadlineMissedStatus requested_deadline_missed_status_
164 std::atomic_bool liveliness_changes_;
165 eprosima::fastrtps::LivelinessChangedStatus liveliness_changed_status_
174 #endif // RMW_FASTRTPS_SHARED_CPP__CUSTOM_SUBSCRIBER_INFO_HPP_