Class BabelFishServiceClient

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

  • public rclcpp::ClientBase

Class Documentation

class BabelFishServiceClient : public rclcpp::ClientBase

Public Types

using SharedRequest = CompoundMessage::SharedPtr
using SharedResponse = CompoundMessage::SharedPtr
using Promise = std::promise<SharedResponse>
using PromiseWithRequest = std::promise<std::pair<SharedRequest, SharedResponse>>
using SharedPromise = std::shared_ptr<Promise>
using SharedPromiseWithRequest = std::shared_ptr<PromiseWithRequest>
using SharedFuture = std::shared_future<SharedResponse>
using SharedFutureWithRequest = std::shared_future<std::pair<SharedRequest, SharedResponse>>
using CallbackType = std::function<void(SharedFuture)>
using CallbackWithRequestType = std::function<void(const SharedFutureWithRequest&)>

Public Functions

BabelFishServiceClient(rclcpp::node_interfaces::NodeBaseInterface *node_base, rclcpp::node_interfaces::NodeGraphInterface::SharedPtr node_graph, const std::string &service_name, ServiceTypeSupport::ConstSharedPtr type_support, rcl_client_options_t client_options)
bool take_response(CompoundMessage &response_out, rmw_request_id_t &request_header_out)
std::shared_ptr<void> create_response() override
std::shared_ptr<rmw_request_id_t> create_request_header() override
void handle_response(const std::shared_ptr<rmw_request_id_t> &request_header, const std::shared_ptr<void> &response) override
FutureAndRequestId async_send_request(const SharedRequest &request)
template<typename CallbackT, typename std::enable_if<rclcpp::function_traits::same_arguments<CallbackT, CallbackType>::value>::type* = nullptr>
inline SharedFutureAndRequestId async_send_request(const SharedRequest &request, CallbackT &&cb)
template<typename CallbackT, typename std::enable_if<rclcpp::function_traits::same_arguments<CallbackT, CallbackWithRequestType>::value>::type* = nullptr>
inline SharedFutureWithRequestAndRequestId async_send_request(const SharedRequest &request, CallbackT &&cb)
bool remove_pending_request(int64_t request_id)
bool remove_pending_request(const FutureAndRequestId &future)
bool remove_pending_request(const SharedFutureAndRequestId &future)
bool remove_pending_request(const SharedFutureWithRequestAndRequestId &future)
size_t prune_pending_requests()
template<typename AllocatorT = std::allocator<int64_t>>
inline size_t prune_requests_older_than(std::chrono::time_point<std::chrono::system_clock> time_point, std::vector<int64_t, AllocatorT> *pruned_requests = nullptr)
void configure_introspection(const rclcpp::Clock::SharedPtr &clock, const rclcpp::QoS &qos_service_event_pub, rcl_service_introspection_state_t introspection_state)

Protected Types

using CallbackTypeValueVariant = std::tuple<CallbackType, SharedFuture, Promise>
using CallbackWithRequestTypeValueVariant = std::tuple<CallbackWithRequestType, SharedRequest, SharedFutureWithRequest, PromiseWithRequest>
using CallbackInfoVariant = std::variant<Promise, CallbackTypeValueVariant, CallbackWithRequestTypeValueVariant>

Protected Functions

int64_t async_send_request_impl(const SharedRequest &request, CallbackInfoVariant value)

Protected Attributes

std::map<int64_t, std::pair<std::chrono::time_point<std::chrono::system_clock>, CallbackInfoVariant>> pending_requests_
std::mutex pending_requests_mutex_
struct FutureAndRequestId : public rclcpp::detail::FutureAndRequestId<std::future<SharedResponse>>

Public Functions

inline SharedFuture share() noexcept
struct SharedFutureAndRequestId : public rclcpp::detail::FutureAndRequestId<SharedFuture>
struct SharedFutureWithRequestAndRequestId : public rclcpp::detail::FutureAndRequestId<SharedFutureWithRequest>