diff --git a/rclcpp/include/rclcpp/node.hpp b/rclcpp/include/rclcpp/node.hpp index 3dea295..333ceee 100644 --- a/rclcpp/include/rclcpp/node.hpp +++ b/rclcpp/include/rclcpp/node.hpp @@ -113,9 +113,7 @@ public: typename rclcpp::service::Service::SharedPtr create_service( std::string service_name, - std::function &, - std::shared_ptr &)> callback, + typename rclcpp::service::Service::CallbackType 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 98d404b..f7a8d91 100644 --- a/rclcpp/include/rclcpp/node_impl.hpp +++ b/rclcpp/include/rclcpp/node_impl.hpp @@ -186,8 +186,7 @@ template typename service::Service::SharedPtr Node::create_service( std::string service_name, - std::function &, - std::shared_ptr &)> callback, + typename rclcpp::service::Service::CallbackType callback, rclcpp::callback_group::CallbackGroup::SharedPtr group) { using rosidl_generator_cpp::get_service_type_support_handle; diff --git a/rclcpp/include/rclcpp/service.hpp b/rclcpp/include/rclcpp/service.hpp index ad1376c..522fb81 100644 --- a/rclcpp/include/rclcpp/service.hpp +++ b/rclcpp/include/rclcpp/service.hpp @@ -86,8 +86,9 @@ class Service : public ServiceBase { public: typedef std::function< - void (const std::shared_ptr &, - std::shared_ptr &)> CallbackType; + void (const std::shared_ptr &, + const std::shared_ptr &, + std::shared_ptr &)> CallbackType; RCLCPP_MAKE_SHARED_DEFINITIONS(Service); Service( @@ -114,7 +115,7 @@ public: auto typed_request = std::static_pointer_cast(request); auto typed_request_header = std::static_pointer_cast(request_header); auto response = std::shared_ptr(new typename ServiceT::Response); - callback_(typed_request, response); + callback_(typed_request_header, typed_request, response); send_response(typed_request_header, response); }