diff --git a/include/EventManager/Participant.hpp b/include/EventManager/Participant.hpp index 0ba0c79..56329b6 100644 --- a/include/EventManager/Participant.hpp +++ b/include/EventManager/Participant.hpp @@ -135,6 +135,16 @@ */ bool isScheduledByManager() const {return isScheduledByManager_;} + /** + * @brief connect a new participant through another participant + */ + void connect(std::shared_ptr participant); + + /** + * @brief disconnect a participant through another participant + */ + void disconnect(std::shared_ptr participant); + public: /** * @brief Constructor setting the participant up for use diff --git a/src/EventManager/Participant.cpp b/src/EventManager/Participant.cpp index d0a3e20..f511e0a 100644 --- a/src/EventManager/Participant.cpp +++ b/src/EventManager/Participant.cpp @@ -18,6 +18,25 @@ EventManager::Participant::Participant() : manager_(nullptr), } +void EventManager::Participant::connect(std::shared_ptr participant) +{ + if (manager_ == nullptr) + { + throw std::runtime_error("no event manager set yet"); + } + manager_->connect(participant); +} + +void EventManager::Participant::disconnect(std::shared_ptr participant) +{ + if (manager_ == nullptr) + { + throw std::runtime_error("no event manager set yet"); + } + manager_->disconnect(participant); +} + + void EventManager::Participant::emit(std::shared_ptr event) { {