Class Reaction

Inheritance Relationships

Base Type

Class Documentation

class Reaction : public reactor::ReactorElement

Public Functions

Reaction(const std::string &name, int priority, Reactor *container, std::function<void(void)> body)
~Reaction() override = default
void declare_trigger(BaseAction *action)
void declare_trigger(BasePort *port)
void declare_schedulable_action(BaseAction *action)
void declare_antidependency(BasePort *port)
void declare_dependency(BasePort *port)
inline auto action_triggers() const noexcept -> const auto&
inline auto port_triggers() const noexcept -> const auto&
inline auto antidependencies() const noexcept -> const auto&
inline auto dependencies() const noexcept -> const auto&
inline auto scheduable_actions() const noexcept -> const auto&
inline auto priority() const noexcept -> int
inline virtual void startup() final
inline virtual void shutdown() final
void trigger()
void set_index(unsigned index)
template<class Dur>
inline void set_deadline(Dur deadline, const std::function<void(void)> &handler)
inline auto has_deadline() const noexcept -> bool
inline auto index() const noexcept -> unsigned int

Private Functions

void set_deadline_impl(Duration deadline, const std::function<void(void)> &handler)

Private Members

std::set<BaseAction*> action_triggers_
std::set<BaseAction*> scheduable_actions_
std::set<BasePort*> port_trigger_
std::set<BasePort*> antidependencies_
std::set<BasePort*> dependencies_
const int priority_
unsigned int index_ = {}
std::function<void(void)> body_ = {nullptr}
Duration deadline_ = {Duration::zero()}
std::function<void(void)> deadline_handler_ = {nullptr}