15 #ifndef RMW_FASTRTPS_SHARED_CPP__CUSTOM_PARTICIPANT_INFO_HPP_
16 #define RMW_FASTRTPS_SHARED_CPP__CUSTOM_PARTICIPANT_INFO_HPP_
23 #include "fastdds/dds/domain/DomainParticipant.hpp"
24 #include "fastdds/dds/domain/DomainParticipantListener.hpp"
25 #include "fastdds/dds/publisher/Publisher.hpp"
26 #include "fastdds/dds/subscriber/Subscriber.hpp"
28 #include "fastdds/rtps/participant/ParticipantDiscoveryInfo.h"
29 #include "fastdds/rtps/reader/ReaderDiscoveryInfo.h"
30 #include "fastdds/rtps/writer/WriterDiscoveryInfo.h"
39 #include "rmw_dds_common/context.hpp"
45 using rmw_dds_common::operator<<;
80 const char * identifier,
81 rmw_dds_common::Context * context)
83 identifier_(identifier)
87 eprosima::fastdds::dds::DomainParticipant *,
88 eprosima::fastrtps::rtps::ParticipantDiscoveryInfo && info)
override
90 switch (info.status) {
91 case eprosima::fastrtps::rtps::ParticipantDiscoveryInfo::DISCOVERED_PARTICIPANT:
93 auto map = rmw::impl::cpp::parse_key_value(info.info.m_userData);
94 auto name_found = map.find(
"enclave");
96 if (name_found == map.end()) {
100 std::string(name_found->second.begin(), name_found->second.end());
102 context->graph_cache.add_participant(
104 identifier_, info.info.m_guid),
108 case eprosima::fastrtps::rtps::ParticipantDiscoveryInfo::REMOVED_PARTICIPANT:
110 case eprosima::fastrtps::rtps::ParticipantDiscoveryInfo::DROPPED_PARTICIPANT:
111 context->graph_cache.remove_participant(
113 identifier_, info.info.m_guid));
121 eprosima::fastdds::dds::DomainParticipant *,
122 eprosima::fastrtps::rtps::ReaderDiscoveryInfo && info)
override
124 if (eprosima::fastrtps::rtps::ReaderDiscoveryInfo::CHANGED_QOS_READER != info.status) {
126 eprosima::fastrtps::rtps::ReaderDiscoveryInfo::DISCOVERED_READER == info.status;
127 process_discovery_info(info.info, is_alive,
true);
132 eprosima::fastdds::dds::DomainParticipant *,
133 eprosima::fastrtps::rtps::WriterDiscoveryInfo && info)
override
135 if (eprosima::fastrtps::rtps::WriterDiscoveryInfo::CHANGED_QOS_WRITER != info.status) {
137 eprosima::fastrtps::rtps::WriterDiscoveryInfo::DISCOVERED_WRITER == info.status;
138 process_discovery_info(info.info, is_alive,
false);
145 process_discovery_info(T & proxyData,
bool is_alive,
bool is_reader)
152 context->graph_cache.add_entity(
156 proxyData.topicName().to_string(),
157 proxyData.typeName().to_string(),
160 iHandle2GUID(proxyData.RTPSParticipantKey())),
164 context->graph_cache.remove_entity(
173 rmw_dds_common::Context * context;
174 const char *
const identifier_;
177 #endif // RMW_FASTRTPS_SHARED_CPP__CUSTOM_PARTICIPANT_INFO_HPP_