Class Trigger

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
Trigger(const Trigger&) = delete
Trigger &operator=(const Trigger&) = 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(Trigger &&rhs) noexcept
Trigger &operator=(Trigger &&rhs) noexcept
~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

void reset() noexcept

resets and invalidates the Trigger

void invalidate() noexcept

invalidates the Trigger without calling the reset callback

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()