27 namespace cloe::actions {
32 std::function<
bool(
const Sync&)> func)
33 :
Action(
name), sleep_for_(sleep_for), func_(std::move(func)) {}
35 [[nodiscard]] ActionPtr
clone()
const override {
36 return std::make_unique<WallClockDelay>(
name(), sleep_for_, func_);
40 if (func_ && !func_(sync)) {
41 return CallbackResult::Ok;
44 std::this_thread::sleep_for(sleep_for_);
45 return CallbackResult::Ok;
51 void to_json(Json& j)
const override {
53 {
"sleep_for", fable::to_string(sleep_for_)},
59 std::function<bool(
const Sync&)> func_;
73 {
"sleep_for", make_prototype<std::string>(
"time to delay for").require()},
77 [[nodiscard]] ActionPtr
make(
const Conf& c)
const override {
78 return std::make_unique<WallClockDelay>(
79 name(), fable::parse_duration<cloe::Duration>(c.
get<std::string>(
"sleep_for")), func_);
82 [[nodiscard]] ActionPtr
make(
const std::string& s)
const override {
89 std::function<bool(
const Sync&)> func_;
Definition: trigger.hpp:619
const std::string & description() const
Definition: entity.hpp:90
const std::string & name() const
Definition: entity.hpp:67
Definition: trigger.hpp:290
Definition: trigger.hpp:437
Definition: delay_action.hpp:62
ActionPtr make(const Conf &c) const override
Definition: delay_action.hpp:77
ActionPtr make(const std::string &s) const override
Definition: delay_action.hpp:82
TriggerSchema schema() const override
Definition: delay_action.hpp:69
Definition: delay_action.hpp:29
bool is_significant() const override
Definition: delay_action.hpp:48
ActionPtr clone() const override
Definition: delay_action.hpp:35
CallbackResult operator()(const Sync &sync, TriggerRegistrar &) override
Definition: delay_action.hpp:39
T get() const
Definition: conf.hpp:297
Definition: schema.hpp:173
std::chrono::nanoseconds Duration
Definition: cloe_fwd.hpp:36
Definition: trigger.hpp:87
Definition: trigger.hpp:207
CallbackResult
Definition: trigger.hpp:514