An 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. | |
An element for receiving events from external sources.
Physical events carry input arriving from outside the application, for example from a sensor thread, into it. The timestamp of each event is the wall-clock time at which its input arrived.
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 application startup, with shutdown, and with Environment::execute returning. Once the application 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 application 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.