A reactor element for receiving events from external sources. More...
#include <xronos/sdk/physical_event.hh>
Public Member Functions | |
| PhysicalEvent (std::string_view name, const ReactorContext &context) | |
| Constructor. | |
| auto | trigger () noexcept -> TriggerStatus requires(std::is_same_v< T, void >) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| template<class U> | |
| auto | trigger (const U &value) -> TriggerStatus requires(!std::is_same_v< U, void > &&std::is_same_v< T, U >) |
| Emit a new event with an associated value and trigger reactions. | |
| auto | trigger (const Value< T > &value) -> TriggerStatus requires(!std::is_same_v< T, void >) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| auto | trigger (const ValueView< T > &view) -> TriggerStatus requires(!std::is_same_v< T, void >) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| template<class U> | |
| auto | trigger (U &&value) -> TriggerStatus requires(!std::is_same_v< U, void > &&std::is_same_v< T, U >) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| Public Member Functions inherited from xronos::sdk::Element | |
| Element (Element &&)=default | |
| Move constructor. | |
| virtual | ~Element ()=default |
| Virtual destructor. | |
| auto | add_attribute (std::string_view key, const AttributeValue &value) noexcept -> bool |
| Annotate an element with an attribute. | |
| template<std::ranges::input_range R> requires requires(std::ranges::range_value_t<R> pair) { { pair.first } -> std::convertible_to<std::string_view>; { pair.second } -> std::convertible_to<AttributeValue>; } | |
| auto | add_attributes (const R &range) noexcept -> bool |
| Annotate an element with multiple attributes. | |
| auto | add_attributes (std::initializer_list< std::pair< std::string_view, AttributeValue > > attributes) -> bool |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| auto | fqn () const noexcept -> const std::string & |
| Get the element's fully qualified name. | |
| auto | name () const noexcept -> const std::string & |
| Get the element's name. | |
| auto | operator= (Element &&) -> Element &=default |
| Move assignment operator. | |
| auto | uid () const noexcept -> std::uint64_t |
| Get the element's unique ID. | |
A reactor element for receiving events from external sources.
Physical events may be used to trigger reactions from a context outside of the scope of the reactor program. These could be external event handlers that respond to sensor inputs.
Can be used as a reaction trigger allowing the reaction handler to read the associated value.
trigger may be called from any thread, and is safe while this element and its Environment are alive. This includes calls concurrent with program startup, with shutdown, and with Environment::execute returning. Once the program has stopped, every attempt returns TriggerStatus::Stopped; sensor threads should treat that status as the signal to exit.
| T | The type of values carried by emitted events. |
| xronos::sdk::PhysicalEvent< T >::PhysicalEvent | ( | std::string_view | name, |
| const ReactorContext & | context ) |
Constructor.
| name | The name of the physical event. |
| context | The containing reactor's context. |
|
nodiscardnoexcept |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Emits an event without an associated value. This is only available if T is void.
|
nodiscard |
Emit a new event with an associated value and trigger reactions.
The event will be assigned a timestamp equal to the current wall-clock time.
May be called from any thread while this element and its Environment are alive (see PhysicalEvent). Events emitted while the program is not running are dropped, and the status reports why.
| value | The value to be associated with the emitted event. |
|
nodiscard |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Emits the given value without copying it.
| std::invalid_argument | If the value is empty. |
|
nodiscard |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Emits the viewed value without copying it.
| std::invalid_argument | If the view is absent. |
|
nodiscard |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Move constructs the value using the given rvalue reference.