16 void add_event(
const std::shared_ptr<Event>& event,
const std::string& name =
"");
21 bool remove_event(
const std::string& name);
28 std::shared_ptr<Event> get_event(
const std::string& name)
const;
44 bool cancel_event(
const std::shared_ptr<Event>& event);
51 bool cancel_event(
const std::string& name);
60 template <
typename... Args>
63 if (
auto event = find_event_by_name(name);
event &&
event->is_active()) {
64 event->update_params(std::forward<Args>(args)...);
80 if (
auto event = find_event_by_name(name);
event &&
event->is_active()) {
81 return event->get_state<T>(state_key);
96 return [
this, name, state_key]() -> T {
97 if (
auto value = get_event_state<T>(name, state_key)) {
108 uint64_t get_next_event_id()
const;
114 bool has_active_events()
const;
125 void terminate_all_events();
133 std::string auto_generate_name(
const std::shared_ptr<Event>& event)
const;
140 std::shared_ptr<Event> find_event_by_name(
const std::string& name);
147 std::shared_ptr<Event> find_event_by_name(
const std::string& name)
const;
152 void cleanup_completed_events();
157 mutable std::atomic<uint64_t> m_next_event_id { 1 };