Class Trigger
Defined in File trigger.hpp
Class Documentation
-
class Trigger
The Trigger class is usually managed by a factory class like a WaitSet and acquired by classes which would like to signal a notification. Multiple Trigger can share a common ConditionVariableData pointer so that multiple Trigger can signal a single instance.
Public Functions
-
Trigger() noexcept = delete
-
template<typename T, typename UserType>
Trigger(StateBasedTrigger_t, T *const stateOrigin, const cxx::ConstMethodCallback<bool> &hasTriggeredCallback, const cxx::MethodCallback<void, uint64_t> &resetCallback, const uint64_t notificationId, const NotificationCallback<T, UserType> &callback, const uint64_t uniqueId, const uint64_t stateType, const uint64_t stateTypeHash) noexcept Creates a state based Trigger.
- Parameters:
StateBasedTrigger_t – signals that we are creating a state based trigger
stateOrigin – [in] pointer to the class where the signal originates from, if it’s set to nullptr the Trigger is in a defined but invalid state
hasTriggeredCallback – [in] callback to a method which informs the trigger if it was triggered or not. If an empty callback is set the trigger is in a defined but invalid state.
resetCallback – [in] callback which is called when the trigger goes out of scope.
notificationId – [in] id of the corresponding event/state
callback – [in] function pointer of type void(*)(T * const) to a callback which can be called by the trigger.
uniqueId – [in] a context wide unique id to identify the trigger
stateType – [in] the uint64_t value of the state origins state enum
stateTypeHash – [in] the uint64_t type hash of the state enum
-
template<typename T, typename UserType>
Trigger(EventBasedTrigger_t, T *const notificationOrigin, const cxx::MethodCallback<void, uint64_t> &resetCallback, const uint64_t notificationId, const NotificationCallback<T, UserType> &callback, const uint64_t uniqueId, const uint64_t notificationType, const uint64_t notificationTypeHash) noexcept Creates an event based Trigger.
- Parameters:
EventBasedTrigger_t – signals that we are creating an event based trigger
notificationOrigin – [in] pointer to the class where the signal originates from, if it’s set to nullptr the Trigger is in a defined but invalid state
resetCallback – [in] callback which is called when the trigger goes out of scope.
notificationId – [in] id of the corresponding event
callback – [in] function pointer of type void(*)(T * const) to a callback which can be called by the trigger.
uniqueId – [in] a context wide unique id to identify the trigger
notificationType – [in] the uint64_t value of the events origins event enum
notificationTypeHash – [in] the uint64_t type hash of the event enum
-
~Trigger() noexcept
calls reset on destruction
-
explicit operator bool() const noexcept
returns true if the Trigger is valid otherwise false A trigger is valid when:
origin != nullptr
hasTriggeredCallback is set
-
bool isValid() const noexcept
returns true if the trigger is valid otherwise false
-
bool isStateConditionSatisfied() const noexcept
returns the result of the provided hasTriggeredCallback
Note
an event based trigger returns always true when it’s valid
-
uint64_t getUniqueId() const noexcept
returns the internal unique id of the trigger
-
bool isLogicalEqualTo(const void *const notificationOrigin, const uint64_t originTriggerType, const uint64_t originTriggerTypeHash) const noexcept
returns true if the Triggers are logical equal otherwise false. Two Triggers are logical equal when
both Trigger are valid
origin == rhs.origin
originTriggerType == rhs.originTriggerType
originTriggerTypeHash == rhs.originTriggerTypeHash
-
template<typename T>
void updateOrigin(T &newOrigin) noexcept sets a new origin of the trigger
- Parameters:
newOrigin – [in] reference to the new origin
-
const NotificationInfo &getNotificationInfo() const noexcept
returns the NotificationInfo
-
TriggerType getTriggerType() const noexcept
returns the type of trigger
Public Static Attributes
-
static constexpr uint64_t INVALID_TRIGGER_ID = std::numeric_limits<uint64_t>::max()
-
Trigger() noexcept = delete