18 void add_event(
const std::shared_ptr<Event>& event,
const std::string& name =
"");
23 bool remove_event(
const std::string& name);
30 std::shared_ptr<Event> get_event(
const std::string& name)
const;
46 bool cancel_event(
const std::shared_ptr<Event>& event);
53 bool cancel_event(
const std::string& name);
62 template <
typename... Args>
65 if (
auto event = find_event_by_name(name);
event &&
event->is_active()) {
66 event->update_params(std::forward<Args>(args)...);
82 if (
auto event = find_event_by_name(name);
event &&
event->is_active()) {
83 return event->get_state<T>(state_key);
98 return [
this, name, state_key]() -> T {
99 if (
auto value = get_event_state<T>(name, state_key)) {
110 uint64_t get_next_event_id()
const;
116 bool has_active_events()
const;
127 void terminate_all_events();
135 std::string auto_generate_name(
const std::shared_ptr<Event>& event)
const;
142 std::shared_ptr<Event> find_event_by_name(
const std::string& name);
149 std::shared_ptr<Event> find_event_by_name(
const std::string& name)
const;
154 void cleanup_completed_events();
159 mutable std::atomic<uint64_t> m_next_event_id { 1 };