30 auto event = it->second;
31 if (event && event->is_active()) {
32 event->set_should_terminate(
true);
45 auto it = std::ranges::find(
m_events, event);
47 if (event && event->is_active()) {
48 event->set_should_terminate(
true);
68 auto event = it->second;
78 [](
const auto& event) {
79 return event &&
event->is_active();
113 std::erase_if(
m_events, [](
const auto& e) {
114 return !e || e->done();
118 return !pair.second || pair.second->done();
125 if (event && event->is_active()) {
126 event->set_should_terminate(
true);
130 std::this_thread::sleep_for(std::chrono::milliseconds(10));
std::unordered_map< std::string, std::shared_ptr< Event > > m_named_events
void terminate_all_events()
Terminate and clear all events.
bool remove_event(const std::string &name)
Remove an event by name.
std::string auto_generate_name(const std::shared_ptr< Event > &event) const
Generate automatic name for a event based on its type.
std::atomic< uint64_t > m_next_event_id
event ID counter for unique identification
void cleanup_completed_events()
Clean up completed events.
std::vector< std::shared_ptr< Event > > m_events
void add_event(const std::shared_ptr< Event > &event, const std::string &name="")
Add a event to the manager.
std::shared_ptr< Event > get_event(const std::string &name) const
Get a named event.
uint64_t get_next_event_id() const
Generates a unique event ID for new events.
std::shared_ptr< Event > find_event_by_name(const std::string &name)
Find event entry by name.
bool has_active_events() const
Check if the manager has any active events.
bool cancel_event(const std::shared_ptr< Event > &event)
Cancels and removes a event from the manager.