21 if (event->is_active()) {
22 auto handle =
event->get_handle();
23 if (handle && !handle.done()) {
35 auto event = it->second;
39 if (event && event->is_active()) {
40 event->set_should_terminate(
true);
49 auto it = std::ranges::find(
m_events, event);
51 auto owned = std::move(*it);
54 return pair.second == owned;
57 if (owned && owned->is_active()) {
58 owned->set_should_terminate(
true);
77 auto event = it->second;
81 if (event && event->is_active()) {
82 event->set_should_terminate(
true);
90 [](
const auto& event) {
91 return event &&
event->is_active();
125 std::vector<std::string> names;
128 names.push_back(
name);
134 std::erase_if(
m_events, [](
const auto& e) {
135 return !e || e->done();
139 return !pair.second || pair.second->done();
149 for (
auto& event : doomed) {
150 if (event && event->is_active()) {
151 event->set_should_terminate(
true);
155 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::vector< std::string > get_event_names() const
Get all event names for debugging/inspection.
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.