generic_client.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <future>
4 
5 #include <rclcpp/client.hpp>
6 #include <rclcpp/serialized_message.hpp>
7 #include <rcpputils/shared_library.hpp>
8 
9 namespace foxglove_bridge {
10 
11 class GenericClient : public rclcpp::ClientBase {
12 public:
13  using SharedRequest = std::shared_ptr<rclcpp::SerializedMessage>;
14  using SharedResponse = std::shared_ptr<rclcpp::SerializedMessage>;
15  using Promise = std::promise<SharedResponse>;
16  using PromiseWithRequest = std::promise<std::pair<SharedRequest, SharedResponse>>;
17  using SharedPromise = std::shared_ptr<Promise>;
18  using SharedPromiseWithRequest = std::shared_ptr<PromiseWithRequest>;
19  using SharedFuture = std::shared_future<SharedResponse>;
20  using SharedFutureWithRequest = std::shared_future<std::pair<SharedRequest, SharedResponse>>;
21  using CallbackType = std::function<void(SharedFuture)>;
22  using CallbackWithRequestType = std::function<void(SharedFutureWithRequest)>;
23 
24  RCLCPP_SMART_PTR_DEFINITIONS(GenericClient)
25 
26  GenericClient(rclcpp::node_interfaces::NodeBaseInterface* node_base,
27  rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph,
28  std::string service_name, std::string service_type,
29  rcl_client_options_t& client_options);
30  virtual ~GenericClient() {}
31 
32  std::shared_ptr<void> create_response() override;
33  std::shared_ptr<rmw_request_id_t> create_request_header() override;
34  void handle_response(std::shared_ptr<rmw_request_id_t> request_header,
35  std::shared_ptr<void> response) override;
38 
39 private:
40  RCLCPP_DISABLE_COPY(GenericClient)
41 
44  std::shared_ptr<rcpputils::SharedLibrary> _typeSupportLib;
45  std::shared_ptr<rcpputils::SharedLibrary> _typeIntrospectionLib;
46  const rosidl_service_type_support_t* _serviceTypeSupportHdl;
47  const rosidl_message_type_support_t* _requestTypeSupportHdl;
48  const rosidl_message_type_support_t* _responseTypeSupportHdl;
49  const rosidl_service_type_support_t* _typeIntrospectionHdl;
50 };
51 
52 } // namespace foxglove_bridge
const rosidl_service_type_support_t * _serviceTypeSupportHdl
std::promise< SharedResponse > Promise
std::shared_future< SharedResponse > SharedFuture
std::shared_ptr< rclcpp::SerializedMessage > SharedResponse
const rosidl_message_type_support_t * _responseTypeSupportHdl
std::function< void(SharedFuture)> CallbackType
void handle_response(std::shared_ptr< rmw_request_id_t > request_header, std::shared_ptr< void > response) override
std::promise< std::pair< SharedRequest, SharedResponse > > PromiseWithRequest
std::shared_ptr< PromiseWithRequest > SharedPromiseWithRequest
std::shared_ptr< void > create_response() override
const rosidl_service_type_support_t * _typeIntrospectionHdl
std::shared_ptr< rclcpp::SerializedMessage > SharedRequest
SharedFuture async_send_request(SharedRequest request)
GenericClient(rclcpp::node_interfaces::NodeBaseInterface *node_base, rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph, std::string service_name, std::string service_type, rcl_client_options_t &client_options)
std::shared_ptr< rcpputils::SharedLibrary > _typeSupportLib
std::function< void(SharedFutureWithRequest)> CallbackWithRequestType
std::map< int64_t, std::tuple< SharedPromise, CallbackType, SharedFuture > > pending_requests_
std::shared_ptr< rmw_request_id_t > create_request_header() override
std::shared_future< std::pair< SharedRequest, SharedResponse > > SharedFutureWithRequest
const rosidl_message_type_support_t * _requestTypeSupportHdl
std::shared_ptr< rcpputils::SharedLibrary > _typeIntrospectionLib
std::shared_ptr< Promise > SharedPromise
const std::string response


foxglove_bridge
Author(s): Foxglove
autogenerated on Mon Jul 3 2023 02:12:22