From 9426838cf5cceb2706282b8834e56938ed5e8e76 Mon Sep 17 00:00:00 2001 From: Chris Lalancette Date: Tue, 21 Feb 2023 16:24:05 +0000 Subject: [PATCH] Switch Client constructor to use std::string. This make it more similar to the Service constructor. Also make both of them use const std::string & to avoid a copy. Signed-off-by: Chris Lalancette --- rclpy/src/rclpy/client.cpp | 6 +++--- rclpy/src/rclpy/client.hpp | 3 ++- rclpy/src/rclpy/service.cpp | 7 +++---- rclpy/src/rclpy/service.hpp | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/rclpy/src/rclpy/client.cpp b/rclpy/src/rclpy/client.cpp index af22bb720..d4b986c41 100644 --- a/rclpy/src/rclpy/client.cpp +++ b/rclpy/src/rclpy/client.cpp @@ -40,7 +40,7 @@ Client::destroy() } Client::Client( - Node & node, py::object pysrv_type, const char * service_name, py::object pyqos_profile) + Node & node, py::object pysrv_type, const std::string & service_name, py::object pyqos_profile) : node_(node) { auto srv_type = static_cast( @@ -77,7 +77,7 @@ Client::Client( *rcl_client_ = rcl_get_zero_initialized_client(); rcl_ret_t ret = rcl_client_init( - rcl_client_.get(), node_.rcl_ptr(), srv_type, service_name, &client_ops); + rcl_client_.get(), node_.rcl_ptr(), srv_type, service_name.c_str(), &client_ops); if (RCL_RET_OK != ret) { if (RCL_RET_SERVICE_NAME_INVALID == ret) { std::string error_text{"failed to create client due to invalid service name '"}; @@ -150,7 +150,7 @@ void define_client(py::object module) { py::class_>(module, "Client") - .def(py::init()) + .def(py::init()) .def_property_readonly( "pointer", [](const Client & client) { return reinterpret_cast(client.rcl_ptr()); diff --git a/rclpy/src/rclpy/client.hpp b/rclpy/src/rclpy/client.hpp index ff1f29d59..73c60ed1f 100644 --- a/rclpy/src/rclpy/client.hpp +++ b/rclpy/src/rclpy/client.hpp @@ -20,6 +20,7 @@ #include #include +#include #include "destroyable.hpp" #include "node.hpp" @@ -45,7 +46,7 @@ class Client : public Destroyable, public std::enable_shared_from_this * \param[in] service_name The service name * \param[in] pyqos rmw_qos_profile_t object for this client */ - Client(Node & node, py::object pysrv_type, const char * service_name, py::object pyqos); + Client(Node & node, py::object pysrv_type, const std::string & service_name, py::object pyqos); ~Client() = default; diff --git a/rclpy/src/rclpy/service.cpp b/rclpy/src/rclpy/service.cpp index 02b7ba88d..b9ec0b2ae 100644 --- a/rclpy/src/rclpy/service.cpp +++ b/rclpy/src/rclpy/service.cpp @@ -38,7 +38,7 @@ Service::destroy() } Service::Service( - Node & node, py::object pysrv_type, std::string service_name, + Node & node, py::object pysrv_type, const std::string & service_name, py::object pyqos_profile) : node_(node) { @@ -75,8 +75,7 @@ Service::Service( *rcl_service_ = rcl_get_zero_initialized_service(); rcl_ret_t ret = rcl_service_init( - rcl_service_.get(), node_.rcl_ptr(), srv_type, - service_name.c_str(), &service_ops); + rcl_service_.get(), node_.rcl_ptr(), srv_type, service_name.c_str(), &service_ops); if (RCL_RET_OK != ret) { if (ret == RCL_RET_SERVICE_NAME_INVALID) { std::string error_text{"failed to create service due to invalid topic name '"}; @@ -148,7 +147,7 @@ void define_service(py::object module) { py::class_>(module, "Service") - .def(py::init()) + .def(py::init()) .def_property_readonly( "pointer", [](const Service & service) { return reinterpret_cast(service.rcl_ptr()); diff --git a/rclpy/src/rclpy/service.hpp b/rclpy/src/rclpy/service.hpp index 95c2dd05c..db1b96f60 100644 --- a/rclpy/src/rclpy/service.hpp +++ b/rclpy/src/rclpy/service.hpp @@ -51,7 +51,7 @@ class Service : public Destroyable, public std::enable_shared_from_this * \return capsule containing the rcl_service_t */ Service( - Node & node, py::object pysrv_type, std::string service_name, + Node & node, py::object pysrv_type, const std::string & service_name, py::object pyqos_profile); Service(