From 8f7807077036c7540b4e60bb771859713245ee55 Mon Sep 17 00:00:00 2001 From: Dominik Meyer Date: Sun, 15 Aug 2021 20:53:45 +0200 Subject: [PATCH] ADD: support connecting additonal participants from participant --- include/EventManager/Participant.hpp | 10 ++++++++++ src/EventManager/Participant.cpp | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+) 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) { {