16#ifndef NROS_CPP_STD_COMPAT_HPP
17#define NROS_CPP_STD_COMPAT_HPP
44 auto*
fn =
static_cast<std::function<
void()
>*>(context);
61inline Result create_timer(Node& node, Timer& out, std::chrono::milliseconds period,
62 std::function<
void()> callback) {
64 std::unique_ptr<std::function<void()>>(
new std::function<void()>(std::move(callback)));
66 Result r = node.create_timer(out,
static_cast<uint64_t
>(period.count()),
67 detail::std_function_trampoline, raw);
69 out.attach_std_closure(std::move(fn));
78inline Result create_timer_oneshot(Node& node, Timer& out, std::chrono::milliseconds delay,
79 std::function<
void()> callback) {
81 std::unique_ptr<std::function<void()>>(
new std::function<void()>(std::move(callback)));
83 Result r = node.create_timer_oneshot(out,
static_cast<uint64_t
>(delay.count()),
84 detail::std_function_trampoline, raw);
86 out.attach_std_closure(std::move(fn));
94inline Result create_guard_condition(Node& node, GuardCondition& out,
95 std::function<
void()> callback) {
97 std::unique_ptr<std::function<void()>>(
new std::function<void()>(std::move(callback)));
99 Result r = node.create_guard_condition(out, detail::std_function_trampoline, raw);
101 out.attach_std_closure(std::move(fn));
111inline Result
init(
const std::string& locator, uint8_t domain_id = 0) {
112 return init(locator.c_str(), domain_id);
116inline Result
create_node(Node& out,
const std::string& name,
117 const std::string& ns = std::string()) {
118 return create_node(out, name.c_str(), ns.empty() ?
nullptr : ns.c_str());
125Result create_publisher(Node& node, Publisher<M>& out,
const std::string& topic,
127 return node.create_publisher(out, topic.c_str(), qos);
132Result create_subscription(Node& node, Subscription<M>& out,
const std::string& topic,
134 return node.create_subscription(out, topic.c_str(), qos);
139Result create_service(Node& node, Service<S>& out,
const std::string& service_name,
141 return node.create_service(out, service_name.c_str(), qos);
146Result create_client(Node& node, Client<S>& out,
const std::string& service_name,
148 return node.create_client(out, service_name.c_str(), qos);
153Result create_action_server(Node& node, ActionServer<A>& out,
const std::string& action_name,
155 return node.create_action_server(out, action_name.c_str(), qos);
160Result create_action_client(Node& node, ActionClient<A>& out,
const std::string& action_name,
162 return node.create_action_client(out, action_name.c_str(), qos);
168inline Result create_executor(Executor& out,
const std::string& locator, uint8_t domain_id = 0) {
173inline Result
create_node(Executor& exec, Node& out,
const std::string& name,
174 const std::string& ns = std::string()) {
175 return exec.create_node(out, name.c_str(), ns.empty() ?
nullptr : ns.c_str());
183inline Result
spin_once(std::chrono::milliseconds timeout) {
184 return spin_once(
static_cast<int32_t
>(timeout.count()));
188inline Result
spin(std::chrono::milliseconds duration,
189 std::chrono::milliseconds poll = std::chrono::milliseconds(10)) {
190 return spin(
static_cast<uint32_t
>(duration.count()),
static_cast<int32_t
>(poll.count()));
200inline Result executor_spin_once(Executor& exec, std::chrono::milliseconds timeout) {
201 return exec.spin_once(
static_cast<int32_t
>(timeout.count()));
205inline Result executor_spin(Executor& exec, std::chrono::milliseconds duration,
206 std::chrono::milliseconds poll = std::chrono::milliseconds(10)) {
207 return exec.spin(
static_cast<uint32_t
>(duration.count()),
static_cast<int32_t
>(poll.count()));
static Result create(Executor &out, const char *locator=nullptr, uint8_t domain_id=0)
Definition executor.hpp:64
Future()
Default constructor – creates an empty/consumed future.
Definition future.hpp:145
static constexpr QoS default_profile()
Default profile: RELIABLE + VOLATILE + KEEP_LAST(10).
Definition qos.hpp:160
static constexpr QoS services()
Services profile: RELIABLE + VOLATILE + KEEP_LAST(10).
Definition qos.hpp:166
Result spin()
Definition nros.hpp:77
Result spin_once(int32_t timeout_ms=10)
Definition nros.hpp:62
Result init(const char *locator=nullptr, uint8_t domain_id=0)
Definition node.hpp:568
Result create_node(Node &out, const char *name, const char *ns=nullptr)
Definition node.hpp:728