From 4a3167b713268b10b95f81d6a71a638c9e4b2d9f Mon Sep 17 00:00:00 2001 From: Dirk Thomas Date: Tue, 4 Aug 2015 15:32:22 -0700 Subject: [PATCH] add domain id to rmw_create_node --- rclcpp/include/rclcpp/node_impl.hpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/rclcpp/include/rclcpp/node_impl.hpp b/rclcpp/include/rclcpp/node_impl.hpp index 47f7102..8d126b8 100644 --- a/rclcpp/include/rclcpp/node_impl.hpp +++ b/rclcpp/include/rclcpp/node_impl.hpp @@ -16,7 +16,9 @@ #define RCLCPP_RCLCPP_NODE_IMPL_HPP_ #include +#include #include +#include #include #include #include @@ -46,7 +48,19 @@ Node::Node(const std::string & node_name, context::Context::SharedPtr context) : name_(node_name), context_(context), number_of_subscriptions_(0), number_of_timers_(0), number_of_services_(0) { - auto node = rmw_create_node(name_.c_str()); + size_t domain_id = 0; + char * ros_domain_id = getenv("ROS_DOMAIN_ID"); + if (ros_domain_id) { + unsigned long number = strtoul(ros_domain_id, NULL, 0); + if (number == (std::numeric_limits::max)()) { + fprintf(stderr, + "Failed to interpret ROS_DOMAIN_ID '%s' as integral number\n", ros_domain_id); + } else { + domain_id = static_cast(number); + } + } + + auto node = rmw_create_node(name_.c_str(), domain_id); if (!node) { // *INDENT-OFF* throw std::runtime_error(