From ea76716982a2ee1825ee20fe4eed8bdf369b7160 Mon Sep 17 00:00:00 2001 From: gerkey Date: Fri, 8 Jul 2016 13:39:18 -0700 Subject: [PATCH] use the param profile for param services (#236) * use the param profile for param services * expose qos to users of param clients / services --- rclcpp/include/rclcpp/parameter_client.hpp | 10 ++++++--- rclcpp/include/rclcpp/parameter_service.hpp | 4 +++- rclcpp/src/rclcpp/parameter_client.cpp | 23 ++++++++++++--------- rclcpp/src/rclcpp/parameter_service.cpp | 22 +++++++++++++------- 4 files changed, 38 insertions(+), 21 deletions(-) diff --git a/rclcpp/include/rclcpp/parameter_client.hpp b/rclcpp/include/rclcpp/parameter_client.hpp index 94dd62b..3b146e3 100644 --- a/rclcpp/include/rclcpp/parameter_client.hpp +++ b/rclcpp/include/rclcpp/parameter_client.hpp @@ -48,7 +48,8 @@ public: RCLCPP_PUBLIC AsyncParametersClient( const rclcpp::node::Node::SharedPtr node, - const std::string & remote_node_name = ""); + const std::string & remote_node_name = "", + const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters); RCLCPP_PUBLIC std::shared_future> @@ -119,12 +120,15 @@ public: RCLCPP_SMART_PTR_DEFINITIONS(SyncParametersClient); RCLCPP_PUBLIC - explicit SyncParametersClient(rclcpp::node::Node::SharedPtr node); + explicit SyncParametersClient( + rclcpp::node::Node::SharedPtr node, + const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters); RCLCPP_PUBLIC SyncParametersClient( rclcpp::executor::Executor::SharedPtr executor, - rclcpp::node::Node::SharedPtr node); + rclcpp::node::Node::SharedPtr node, + const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters); RCLCPP_PUBLIC std::vector diff --git a/rclcpp/include/rclcpp/parameter_service.hpp b/rclcpp/include/rclcpp/parameter_service.hpp index dbb1ce0..e5432d3 100644 --- a/rclcpp/include/rclcpp/parameter_service.hpp +++ b/rclcpp/include/rclcpp/parameter_service.hpp @@ -41,7 +41,9 @@ public: RCLCPP_SMART_PTR_DEFINITIONS(ParameterService); RCLCPP_PUBLIC - explicit ParameterService(const rclcpp::node::Node::SharedPtr node); + explicit ParameterService( + const rclcpp::node::Node::SharedPtr node, + const rmw_qos_profile_t & qos_profile = rmw_qos_profile_parameters); private: const rclcpp::node::Node::SharedPtr node_; diff --git a/rclcpp/src/rclcpp/parameter_client.cpp b/rclcpp/src/rclcpp/parameter_client.cpp index 5c1cfc9..5d82a6d 100644 --- a/rclcpp/src/rclcpp/parameter_client.cpp +++ b/rclcpp/src/rclcpp/parameter_client.cpp @@ -23,7 +23,8 @@ using rclcpp::parameter_client::SyncParametersClient; AsyncParametersClient::AsyncParametersClient( const rclcpp::node::Node::SharedPtr node, - const std::string & remote_node_name) + const std::string & remote_node_name, + const rmw_qos_profile_t & qos_profile) : node_(node) { if (remote_node_name != "") { @@ -32,15 +33,15 @@ AsyncParametersClient::AsyncParametersClient( remote_node_name_ = node_->get_name(); } get_parameters_client_ = node_->create_client( - remote_node_name_ + "__get_parameters"); + remote_node_name_ + "__get_parameters", qos_profile); get_parameter_types_client_ = node_->create_client( - remote_node_name_ + "__get_parameter_types"); + remote_node_name_ + "__get_parameter_types", qos_profile); set_parameters_client_ = node_->create_client( - remote_node_name_ + "__set_parameters"); + remote_node_name_ + "__set_parameters", qos_profile); list_parameters_client_ = node_->create_client( - remote_node_name_ + "__list_parameters"); + remote_node_name_ + "__list_parameters", qos_profile); describe_parameters_client_ = node_->create_client( - remote_node_name_ + "__describe_parameters"); + remote_node_name_ + "__describe_parameters", qos_profile); } std::shared_future> @@ -228,19 +229,21 @@ AsyncParametersClient::list_parameters( } SyncParametersClient::SyncParametersClient( - rclcpp::node::Node::SharedPtr node) + rclcpp::node::Node::SharedPtr node, + const rmw_qos_profile_t & qos_profile) : node_(node) { executor_ = std::make_shared(); - async_parameters_client_ = std::make_shared(node); + async_parameters_client_ = std::make_shared(node, "", qos_profile); } SyncParametersClient::SyncParametersClient( rclcpp::executor::Executor::SharedPtr executor, - rclcpp::node::Node::SharedPtr node) + rclcpp::node::Node::SharedPtr node, + const rmw_qos_profile_t & qos_profile) : executor_(executor), node_(node) { - async_parameters_client_ = std::make_shared(node); + async_parameters_client_ = std::make_shared(node, "", qos_profile); } std::vector diff --git a/rclcpp/src/rclcpp/parameter_service.cpp b/rclcpp/src/rclcpp/parameter_service.cpp index 9f18943..6b8a574 100644 --- a/rclcpp/src/rclcpp/parameter_service.cpp +++ b/rclcpp/src/rclcpp/parameter_service.cpp @@ -19,7 +19,9 @@ using rclcpp::parameter_service::ParameterService; -ParameterService::ParameterService(const rclcpp::node::Node::SharedPtr node) +ParameterService::ParameterService( + const rclcpp::node::Node::SharedPtr node, + const rmw_qos_profile_t & qos_profile) : node_(node) { std::weak_ptr captured_node = node_; @@ -39,7 +41,8 @@ ParameterService::ParameterService(const rclcpp::node::Node::SharedPtr node) for (auto & pvariant : values) { response->values.push_back(pvariant.get_parameter_value()); } - } + }, + qos_profile ); get_parameter_types_service_ = node_->create_service( @@ -58,7 +61,8 @@ ParameterService::ParameterService(const rclcpp::node::Node::SharedPtr node) std::back_inserter(response->types), [](const uint8_t & type) { return static_cast(type); }); - } + }, + qos_profile ); set_parameters_service_ = node_->create_service( @@ -78,7 +82,8 @@ ParameterService::ParameterService(const rclcpp::node::Node::SharedPtr node) } auto results = node->set_parameters(pvariants); response->results = results; - } + }, + qos_profile ); set_parameters_atomically_service_ = @@ -102,7 +107,8 @@ ParameterService::ParameterService(const rclcpp::node::Node::SharedPtr node) }); auto result = node->set_parameters_atomically(pvariants); response->result = result; - } + }, + qos_profile ); describe_parameters_service_ = node_->create_service( @@ -118,7 +124,8 @@ ParameterService::ParameterService(const rclcpp::node::Node::SharedPtr node) } auto descriptors = node->describe_parameters(request->names); response->descriptors = descriptors; - } + }, + qos_profile ); list_parameters_service_ = node_->create_service( @@ -134,7 +141,8 @@ ParameterService::ParameterService(const rclcpp::node::Node::SharedPtr node) } auto result = node->list_parameters(request->prefixes, request->depth); response->result = result; - } + }, + qos_profile ); // *INDENT-ON* }