void fire_on_completion() const override { on_completion(*this); }
void fire_on_veto() const override { on_veto(const_cast<Exec&>(*this)); }
void fire_on_suspend() const override { on_suspend(*this); }
void fire_on_completion() const override { on_completion(*this); }
void fire_on_veto() const override { on_veto(const_cast<Exec&>(*this)); }
void fire_on_suspend() const override { on_suspend(*this); }
#endif
/*! Signal fired each time that an execution actually starts (no veto) */
static void on_start_cb(const std::function<void(Exec const&)>& cb) { on_start.connect(cb); }
#endif
/*! Signal fired each time that an execution actually starts (no veto) */
static void on_start_cb(const std::function<void(Exec const&)>& cb) { on_start.connect(cb); }