10#ifndef NROS_CPP_GUARD_CONDITION_HPP
11#define NROS_CPP_GUARD_CONDITION_HPP
24#include "nros_cpp_ffi.h"
52 return Result(nros_cpp_guard_condition_trigger(storage_));
61 nros_cpp_guard_condition_destroy(storage_);
70 : initialized_(other.initialized_)
73 closure_(std::move(other.closure_))
76 if (other.initialized_) {
77 nros_cpp_guard_condition_relocate(other.storage_, storage_);
78 other.initialized_ =
false;
85 nros_cpp_guard_condition_destroy(storage_);
88 if (other.initialized_) {
89 nros_cpp_guard_condition_relocate(other.storage_, storage_);
91 other.initialized_ =
false;
94 closure_ = std::move(other.closure_);
108 void attach_std_closure(std::unique_ptr<std::function<
void()>> closure) {
109 closure_ = std::move(closure);
119 alignas(8) uint8_t storage_[NROS_GUARD_CONDITION_SIZE];
123 std::unique_ptr<std::function<void()>> closure_;
Definition guard_condition.hpp:45
GuardCondition()
Definition guard_condition.hpp:102
~GuardCondition()
Destructor — releases guard condition resources.
Definition guard_condition.hpp:59
Result trigger()
Definition guard_condition.hpp:50
GuardCondition(GuardCondition &&other)
Definition guard_condition.hpp:69
bool is_valid() const
Check if the guard condition is initialized and valid.
Definition guard_condition.hpp:56
GuardCondition & operator=(GuardCondition &&other)
Definition guard_condition.hpp:82
Inline storage-size macros for opaque entity buffers.
nros::Result, nros::ErrorCode, and the NROS_TRY macro.