Lely core libraries 2.3.4
strand.hpp
Go to the documentation of this file.
1
24#ifndef LELY_EV_STRAND_HPP_
25#define LELY_EV_STRAND_HPP_
26
27#include <lely/ev/exec.hpp>
28#include <lely/ev/strand.h>
29#include <lely/util/error.hpp>
30
31#include <utility>
32
33namespace lely {
34namespace ev {
35
37class Strand : public Executor {
38 public:
40 explicit Strand(Executor inner_exec)
41 : Executor(ev_strand_create(inner_exec)) {
42 if (!exec_) ::lely::util::throw_errc("Strand");
43 }
44
45 Strand(const Strand&) = delete;
46
47 Strand(Strand&& other) noexcept : Executor(other) { other.exec_ = nullptr; }
48
49 Strand& operator=(const Strand&) = delete;
50
51 Strand&
52 operator=(Strand&& other) noexcept {
53 using ::std::swap;
54 swap(exec_, other.exec_);
55 return *this;
56 }
57
60
66};
67
68} // namespace ev
69} // namespace lely
70
71#endif // !LELY_EV_STRAND_HPP_
A CANopen value.
Definition val.hpp:42
An abstract task executor. This class is a wrapper around #ev_exec_t*.
Definition exec.hpp:38
A strand executor.
Definition strand.hpp:37
Executor get_inner_executor() const noexcept
Definition strand.hpp:63
Strand(Executor inner_exec)
Definition strand.hpp:40
This header file is part of the utilities library; it contains C++ convenience functions for creating...
This header file is part of the event library; it contains the C++ interface for the abstract task ex...
This header file is part of the event library; it contains the strand executor declarations.
void ev_strand_destroy(ev_exec_t *exec)
Destroys a strand executor.
Definition strand.c:180
ev_exec_t * ev_strand_get_inner_exec(const ev_exec_t *exec)
Returns a pointer to the inner executor of a strand.
Definition strand.c:189
ev_exec_t * ev_strand_create(ev_exec_t *inner_exec)
Creates a strand executor.
Definition strand.c:153