15 #ifndef RCLCPP__CLIENT_HPP_    16 #define RCLCPP__CLIENT_HPP_    43 namespace node_interfaces
    45 class NodeBaseInterface;
    59     rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph,
    63   virtual ~ClientBase();
    67   get_service_name() 
const;
    71   get_client_handle() 
const;
    75   service_is_ready() 
const;
    77   template<
typename RatioT = std::milli>
    82     return wait_for_service_nanoseconds(
    83       std::chrono::duration_cast<std::chrono::nanoseconds>(timeout)
    89   virtual void handle_response(
   101   get_rcl_node_handle() 
const;
   110 template<
typename ServiceT>
   132     rclcpp::node_interfaces::NodeBaseInterface * node_base,
   133     rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph,
   134     const 
std::
string & service_name,
   136   : ClientBase(node_base, node_graph, service_name)
   138     using rosidl_typesupport_cpp::get_service_type_support_handle;
   139     auto service_type_support_handle =
   140       get_service_type_support_handle<ServiceT>();
   142       service_type_support_handle, service_name.c_str(), &client_options) != 
RCL_RET_OK)
   180     int64_t sequence_number = request_header->sequence_number;
   182     if (this->pending_requests_.count(sequence_number) == 0) {
   183       fprintf(stderr, 
"Received invalid sequence number. Ignoring...\n");
   186     auto tuple = this->pending_requests_[sequence_number];
   187     auto call_promise = std::get<0>(tuple);
   188     auto callback = std::get<1>(tuple);
   189     auto future = std::get<2>(tuple);
   190     this->pending_requests_.erase(sequence_number);
   191     call_promise->set_value(typed_response);
   198     return async_send_request(request, [](
SharedFuture) {});
   214     int64_t sequence_number;
   224     pending_requests_[sequence_number] =
   244     auto wrapping_cb = [future_with_request, promise, request, &cb](
SharedFuture future) {
   245         auto response = future.
get();
   247         cb(future_with_request);
   250     async_send_request(request, wrapping_cb);
   252     return future_with_request;
   265 #endif  // RCLCPP__CLIENT_HPP_ SharedFuture async_send_request(SharedRequest request)
Definition: client.hpp:196
 
typename rcl_interfaces::srv::GetParameters ::Response::SharedPtr SharedResponse
Definition: client.hpp:115
 
SharedFutureWithRequest async_send_request(SharedRequest request, CallbackT &&cb)
Definition: client.hpp:239
 
virtual ~Client()
Definition: client.hpp:152
 
Definition: client.hpp:111
 
#define RCLCPP_DISABLE_COPY(...)
Definition: macros.hpp:26
 
std::shared_ptr< void > create_response()
Definition: client.hpp:161
 
Definition: allocator_common.hpp:24
 
rcl_ret_t rcl_send_request(const rcl_client_t *client, const void *ros_request, int64_t *sequence_number)
 
const char * rmw_get_error_string_safe(void)
 
SharedFuture async_send_request(SharedRequest request, CallbackT &&cb)
Definition: client.hpp:211
 
void handle_response(std::shared_ptr< rmw_request_id_t > request_header, std::shared_ptr< void > response)
Definition: client.hpp:175
 
rcl_ret_t rcl_client_init(rcl_client_t *client, const rcl_node_t *node, const rosidl_service_type_support_t *type_support, const char *service_name, const rcl_client_options_t *options)
 
#define RCLCPP_SMART_PTR_DEFINITIONS(...)
Definition: macros.hpp:36
 
Definition: function_traits.hpp:141
 
Definition: client.hpp:51
 
T static_pointer_cast(T... args)
 
#define rcl_get_error_string_safe
 
#define RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE(...)
Definition: macros.hpp:51
 
#define RCLCPP_PUBLIC
Definition: visibility_control.hpp:50
 
std::shared_ptr< rcl_node_t > node_handle_
Definition: client.hpp:104
 
bool wait_for_service(std::chrono::duration< int64_t, RatioT > timeout=std::chrono::duration< int64_t, RatioT >(-1))
Definition: client.hpp:79
 
Pure virtual interface class for the NodeBase part of the Node API. 
Definition: node_base_interface.hpp:36
 
rclcpp::node_interfaces::NodeGraphInterface::WeakPtr node_graph_
Definition: client.hpp:103
 
rcl_client_t rcl_get_zero_initialized_client(void)
 
rcl_ret_t rcl_client_fini(rcl_client_t *client, rcl_node_t *node)
 
std::string service_name_
Definition: client.hpp:107
 
std::shared_ptr< rmw_request_id_t > create_request_header()
Definition: client.hpp:167
 
typename rcl_interfaces::srv::GetParameters ::Request::SharedPtr SharedRequest
Definition: client.hpp:114