From 9d3fbc63a0cfdc6766b426f848a7f8999217c60b Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 2 Jul 2021 09:51:40 +0200 Subject: [PATCH] Fix graph manager node namespaces (backport #72) (#73) * Fix graph manager node namespaces (#72) (cherry picked from commit a62330850541b80fdfb22fba40508eec7e1f3934) # Conflicts: # micro_ros_agent/src/agent/graph_manager/graph_manager.cpp * Update graph_manager.cpp Co-authored-by: Pablo Garrido --- .../src/agent/graph_manager/graph_manager.cpp | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/micro_ros_agent/src/agent/graph_manager/graph_manager.cpp b/micro_ros_agent/src/agent/graph_manager/graph_manager.cpp index 8993576..0600ddb 100644 --- a/micro_ros_agent/src/agent/graph_manager/graph_manager.cpp +++ b/micro_ros_agent/src/agent/graph_manager/graph_manager.cpp @@ -309,8 +309,36 @@ void GraphManager::add_participant( if (node_name != enclave) // Do not add root node { + // Split node name in domain and node name + std::istringstream iss(node_name); + std::vector result; + std::string token; + + while(std::getline(iss, token, '/')) + { + result.push_back(token); + } + + std::string isolated_node_name = ""; + std::string isolated_namespace = ""; + + if (result.size() > 1) + { + isolated_namespace = result[0]; + for (size_t i = 1; i < result.size(); i++) + { + isolated_node_name.append(result[i] + "/"); + } + isolated_node_name.pop_back(); + } + else + { + isolated_node_name = node_name; + isolated_namespace = ""; + } + rmw_dds_common::msg::ParticipantEntitiesInfo info = - graphCache_.add_node(gid, node_name, enclave_); + graphCache_.add_node(gid, isolated_node_name, isolated_namespace); ros_discovery_datawriter_->write(static_cast(&info)); } } @@ -684,4 +712,4 @@ void GraphManager::DatareaderListener::on_data_available( } // namespace agent } // namespace uros -#endif // _UROS_AGENT_GRAPH_MANAGER_CPP \ No newline at end of file +#endif // _UROS_AGENT_GRAPH_MANAGER_CPP