33 #include <sol/state_view.hpp>
34 #include <sol/table.hpp>
42 class TriggerRegistrar;
51 : TriggerInvalid(c,
"unknown action: " +
key), key_(
key) {}
57 [[nodiscard]]
const char*
key()
const {
return key_.c_str(); }
70 : TriggerInvalid(c,
"unknown event: " +
key), key_(
key) {}
76 [[nodiscard]]
const char*
key()
const {
return key_.c_str(); }
89 cloe::TriggerPtr what;
103 const std::vector<HistoryTrigger>& history()
const {
return history_; }
105 void register_action(
const std::string& key, cloe::ActionFactoryPtr&& af);
107 void register_event(
const std::string& key, cloe::EventFactoryPtr&& ef,
108 std::shared_ptr<cloe::Callback> storage);
110 [[nodiscard]] sol::table register_lua_table(
const std::string& field);
114 std::shared_ptr<cloe::TriggerRegistrar> trigger_registrar(
cloe::Source s);
118 [[nodiscard]] cloe::Logger logger()
const {
return cloe::logger::get(
"cloe"); }
136 size_t process_pending_lua_triggers(
const cloe::Sync& sync);
137 size_t process_pending_web_triggers(
const cloe::Sync& sync);
139 void insert_trigger_from_lua(
const cloe::Sync& sync,
const sol::object& obj);
140 void execute_action_from_lua(
const cloe::Sync& sync,
const sol::object& obj);
143 [[nodiscard]] cloe::ActionPtr make_action(
const sol::object& lua)
const;
144 [[nodiscard]] cloe::ActionPtr make_action(
const cloe::Conf& c)
const;
145 [[nodiscard]] cloe::EventPtr make_event(
const cloe::Conf& c)
const;
147 [[nodiscard]] cloe::TriggerPtr make_trigger(
const sol::table& tbl)
const;
149 void queue_trigger(cloe::TriggerPtr&& tp);
150 void store_trigger(cloe::TriggerPtr&& tp,
const cloe::Sync& sync);
158 bool allow_errors_ =
false;
161 std::map<std::string, cloe::ActionFactoryPtr> actions_;
162 std::map<std::string, cloe::EventFactoryPtr> events_;
163 sol::state_view lua_;
167 std::shared_ptr<cloe::TriggerRegistrar> executer_registrar_;
170 std::map<std::string, std::shared_ptr<cloe::Callback>> storage_;
173 std::list<cloe::TriggerPtr> input_queue_;
174 mutable std::mutex input_mutex_;
177 std::vector<HistoryTrigger> history_;
180 void register_usertype_coordinator(sol::table& lua,
const cloe::Sync& sync);
Definition: data_broker.hpp:1217
Definition: registrar.hpp:121
Definition: trigger.hpp:73
Definition: coordinator.hpp:99
std::map< std::string, fable::Json > trigger_action_schemas() const
Definition: coordinator.cpp:85
cloe::Duration process(const cloe::Sync &)
Definition: coordinator.cpp:268
std::map< std::string, fable::Json > trigger_event_schemas() const
Definition: coordinator.cpp:93
Definition: coordinator.cpp:62
Definition: coordinator.hpp:48
const char * key() const
Definition: coordinator.hpp:57
Definition: coordinator.hpp:67
const char * key() const
Definition: coordinator.hpp:76
std::chrono::nanoseconds Duration
Definition: cloe_fwd.hpp:36
Definition: coordinator.hpp:82
CallbackResult
Definition: trigger.hpp:514
Source
Definition: trigger.hpp:351