From a0d174df088abec63812d6bc895f288625f0b3ef Mon Sep 17 00:00:00 2001 From: Dominik Meyer Date: Mon, 16 Aug 2021 20:20:01 +0200 Subject: [PATCH] ADD: add participant to a list on connect --- include/EventManager/Manager.hpp | 6 ++++++ src/EventManager/Manager.cpp | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/EventManager/Manager.hpp b/include/EventManager/Manager.hpp index 2623c1f..f9ec8a9 100644 --- a/include/EventManager/Manager.hpp +++ b/include/EventManager/Manager.hpp @@ -66,6 +66,12 @@ /// mutex to protect schedulingPlugins_ std::mutex mutexSchedulingParticipants_; + /// list of all participants connected + std::list> particpants_; + + /// mutex to protect participants_ + std::mutex mutexParticipants_; + /* * all private methods */ diff --git a/src/EventManager/Manager.cpp b/src/EventManager/Manager.cpp index b5fc9dd..d93ac87 100644 --- a/src/EventManager/Manager.cpp +++ b/src/EventManager/Manager.cpp @@ -328,11 +328,28 @@ void EventManager::Manager::connect(std::shared_ptr participant) { + std::lock_guard guard(mutexParticipants_); + particpants_.push_back(participant); participant->setManager(shared_from_this()); participant->init(); } void EventManager::Manager::disconnect(std::shared_ptr participant) { + + disconnect(participant); + + std::lock_guard guard(mutexParticipants_); + std::list>::iterator it; + + it = std::find(particpants_.begin(), particpants_.end(),participant); + + if (it != particpants_.end()) + { + particpants_.erase(it); + } + + + participant->setManager(nullptr); }