35 const rclcpp::QoS& qos,
const rclcpp::CallbackGroup::SharedPtr& callback_group)
36 : callback_group_(callback_group), service_server_(node->create_service<ServiceType>(address, cbk, qos, callback_group))
38 RCLCPP_INFO_STREAM(node->get_logger(),
"Created service: " << service_server_->get_service_name());
51 rclcpp::Node::SharedPtr& node,
const std::string& address,
52 mrs_lib::Task<bool> (ClassType::*method)(const std::shared_ptr<typename ServiceType::Request> request,
53 const std::shared_ptr<typename ServiceType::Response> response),
54 ClassType* instance, const rclcpp::QoS& qos, const rclcpp::CallbackGroup::SharedPtr& callback_group)
55 : callback_group_(callback_group)
57 internal::require_callback_group_coro_compatible(callback_group);
59 auto is_running = std::make_shared<std::atomic<bool>>(
false);
63 auto safe_server_ptr = std::make_shared<typename rclcpp::Service<ServiceType>::SharedPtr>();
66 auto deferred_cbk = [safe_server_ptr, is_running, method, instance](
const std::shared_ptr<rmw_request_id_t> req_id,
67 const std::shared_ptr<typename ServiceType::Request> req) ->
void {
68 bool was_running = is_running->exchange(
true);
73 [](std::shared_ptr<
typename rclcpp::Service<ServiceType>::SharedPtr> server,
74 std::shared_ptr<std::atomic<bool>> is_running,
75 mrs_lib::Task<bool> (ClassType::*method)(
const std::shared_ptr<typename ServiceType::Request>,
76 const std::shared_ptr<typename ServiceType::Response>),
77 ClassType* instance, std::shared_ptr<rmw_request_id_t> req_id, std::shared_ptr<typename ServiceType::Request> req) ->
mrs_lib::Task<void> {
78 auto res = std::make_shared<typename ServiceType::Response>();
80 co_await std::invoke(method, instance, req, res);
85 (*server)->send_response(*req_id, *res);
88 is_running->store(
false);
90 safe_server_ptr, is_running, method, instance, req_id, req);
95 service_server_ = node->create_service<ServiceType>(address, deferred_cbk, qos, callback_group);
96 *safe_server_ptr = service_server_;
All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition attitude_converter.h:24