diff --git a/include/EventManager/Manager.hpp b/include/EventManager/Manager.hpp index f9ec8a9..3fb80a3 100644 --- a/include/EventManager/Manager.hpp +++ b/include/EventManager/Manager.hpp @@ -191,10 +191,16 @@ */ void schedule(std::shared_ptr plugin); + /** + * @brief remove a participant from scheduling + * + * @param participant - the participant to remove + */ + void unschedule(std::shared_ptr participant); /** - * @brief method to connect a particpant to the manager - */ + * @brief method to connect a particpant to the manager + */ void connect(std::shared_ptr participant); /** diff --git a/src/EventManager/Manager.cpp b/src/EventManager/Manager.cpp index c55abff..8255e82 100644 --- a/src/EventManager/Manager.cpp +++ b/src/EventManager/Manager.cpp @@ -326,6 +326,17 @@ } } + void EventManager::Manager::unschedule(std::shared_ptr participant ) + { + std::lock_guard guard(mutexSchedulingParticipants_); + + auto it = std::find(schedulingParticipants_.begin(), schedulingParticipants_.end(), participant); + + if (it != schedulingParticipants_.end()) + { + schedulingParticipants_.erase(it); + } + } void EventManager::Manager::connect(std::shared_ptr participant) {