From ad3f5da3a55bdefd7200e6c65c07079469ef7083 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Wed, 29 Apr 2015 17:40:38 -0700 Subject: [PATCH] Let the compiler deduce the appropriate Service constructor to use --- rclcpp/include/rclcpp/node.hpp | 20 +++------------ rclcpp/include/rclcpp/node_impl.hpp | 38 +++-------------------------- 2 files changed, 6 insertions(+), 52 deletions(-) diff --git a/rclcpp/include/rclcpp/node.hpp b/rclcpp/include/rclcpp/node.hpp index 0c9947b..b58f0b4 100644 --- a/rclcpp/include/rclcpp/node.hpp +++ b/rclcpp/include/rclcpp/node.hpp @@ -127,25 +127,11 @@ public: rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr); /* Create and return a Service. */ - template - typename function_arity< - FunctorT, - 2, - typename rclcpp::service::Service::SharedPtr>::type + template + typename rclcpp::service::Service::SharedPtr create_service( const std::string & service_name, - FunctorT functor, - rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr); - - /* Create and return a Service. */ - template - typename function_arity< - FunctorT, - 3, - typename rclcpp::service::Service::SharedPtr>::type - create_service( - const std::string & service_name, - FunctorT functor, + F callback, rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr); private: diff --git a/rclcpp/include/rclcpp/node_impl.hpp b/rclcpp/include/rclcpp/node_impl.hpp index 6fc5b04..795dc0a 100644 --- a/rclcpp/include/rclcpp/node_impl.hpp +++ b/rclcpp/include/rclcpp/node_impl.hpp @@ -182,17 +182,13 @@ Node::create_client( return cli; } -template -typename function_arity< - FunctorT, - 2, - typename rclcpp::service::Service::SharedPtr>::type +template +typename rclcpp::service::Service::SharedPtr Node::create_service( const std::string & service_name, - FunctorT functor, + F callback, rclcpp::callback_group::CallbackGroup::SharedPtr group) { - typename rclcpp::service::Service::CallbackType callback = functor; using rosidl_generator_cpp::get_service_type_support_handle; auto service_type_support_handle = get_service_type_support_handle(); @@ -209,34 +205,6 @@ Node::create_service( return serv; } -template -typename function_arity< - FunctorT, - 3, - typename rclcpp::service::Service::SharedPtr>::type -Node::create_service( - const std::string & service_name, - FunctorT functor, - rclcpp::callback_group::CallbackGroup::SharedPtr group) -{ - typename rclcpp::service::Service::CallbackWithHeaderType callback_with_header = - functor; - using rosidl_generator_cpp::get_service_type_support_handle; - auto service_type_support_handle = - get_service_type_support_handle(); - - rmw_service_t * service_handle = rmw_create_service( - this->node_handle_, service_type_support_handle, service_name.c_str()); - - auto serv = service::Service::make_shared( - service_handle, - service_name, - callback_with_header); - auto serv_base_ptr = std::dynamic_pointer_cast(serv); - register_service(service_name, serv_base_ptr, group); - return serv; -} - void Node::register_service( const std::string & service_name,