15 #ifndef RMW_FASTRTPS_SHARED_CPP__CUSTOM_PARTICIPANT_INFO_HPP_
16 #define RMW_FASTRTPS_SHARED_CPP__CUSTOM_PARTICIPANT_INFO_HPP_
23 #include "fastrtps/rtps/common/InstanceHandle.h"
24 #include "fastrtps/attributes/ParticipantAttributes.h"
25 #include "fastrtps/participant/Participant.h"
26 #include "fastrtps/participant/ParticipantListener.h"
35 #include "rmw_dds_common/context.hpp"
41 using rmw_dds_common::operator<<;
62 const char * identifier,
63 rmw_dds_common::Context * context)
65 identifier_(identifier)
69 eprosima::fastrtps::Participant *,
70 eprosima::fastrtps::rtps::ParticipantDiscoveryInfo && info)
override
72 switch (info.status) {
73 case eprosima::fastrtps::rtps::ParticipantDiscoveryInfo::DISCOVERED_PARTICIPANT:
75 auto map = rmw::impl::cpp::parse_key_value(info.info.m_userData);
76 auto name_found = map.find(
"enclave");
78 if (name_found == map.end()) {
82 std::string(name_found->second.begin(), name_found->second.end());
84 context->graph_cache.add_participant(
86 identifier_, info.info.m_guid),
90 case eprosima::fastrtps::rtps::ParticipantDiscoveryInfo::REMOVED_PARTICIPANT:
92 case eprosima::fastrtps::rtps::ParticipantDiscoveryInfo::DROPPED_PARTICIPANT:
93 context->graph_cache.remove_participant(
95 identifier_, info.info.m_guid));
103 eprosima::fastrtps::Participant *,
104 eprosima::fastrtps::rtps::ReaderDiscoveryInfo && info)
override
106 if (eprosima::fastrtps::rtps::ReaderDiscoveryInfo::CHANGED_QOS_READER != info.status) {
108 eprosima::fastrtps::rtps::ReaderDiscoveryInfo::DISCOVERED_READER == info.status;
109 process_discovery_info(info.info, is_alive,
true);
114 eprosima::fastrtps::Participant *,
115 eprosima::fastrtps::rtps::WriterDiscoveryInfo && info)
override
117 if (eprosima::fastrtps::rtps::WriterDiscoveryInfo::CHANGED_QOS_WRITER != info.status) {
119 eprosima::fastrtps::rtps::WriterDiscoveryInfo::DISCOVERED_WRITER == info.status;
120 process_discovery_info(info.info, is_alive,
false);
127 process_discovery_info(T & proxyData,
bool is_alive,
bool is_reader)
134 context->graph_cache.add_entity(
138 proxyData.topicName().to_string(),
139 proxyData.typeName().to_string(),
142 iHandle2GUID(proxyData.RTPSParticipantKey())),
146 context->graph_cache.remove_entity(
155 rmw_dds_common::Context * context;
156 const char *
const identifier_;
159 #endif // RMW_FASTRTPS_SHARED_CPP__CUSTOM_PARTICIPANT_INFO_HPP_