Compare commits

...

2 Commits

3 changed files with 34 additions and 0 deletions

View File

@ -135,6 +135,16 @@
*/ */
bool isScheduledByManager() const {return isScheduledByManager_;} bool isScheduledByManager() const {return isScheduledByManager_;}
/**
* @brief connect a new participant through another participant
*/
void connect(std::shared_ptr<EventManager::Participant> participant);
/**
* @brief disconnect a participant through another participant
*/
void disconnect(std::shared_ptr<EventManager::Participant> participant);
public: public:
/** /**
* @brief Constructor setting the participant up for use * @brief Constructor setting the participant up for use

View File

@ -331,3 +331,8 @@
participant->setManager(shared_from_this()); participant->setManager(shared_from_this());
participant->init(); participant->init();
} }
void EventManager::Manager::disconnect(std::shared_ptr<EventManager::Participant> participant)
{
participant->setManager(nullptr);
}

View File

@ -18,6 +18,25 @@ EventManager::Participant::Participant() : manager_(nullptr),
} }
void EventManager::Participant::connect(std::shared_ptr<EventManager::Participant> participant)
{
if (manager_ == nullptr)
{
throw std::runtime_error("no event manager set yet");
}
manager_->connect(participant);
}
void EventManager::Participant::disconnect(std::shared_ptr<EventManager::Participant> participant)
{
if (manager_ == nullptr)
{
throw std::runtime_error("no event manager set yet");
}
manager_->disconnect(participant);
}
void EventManager::Participant::emit(std::shared_ptr<EventManager::Event> event) void EventManager::Participant::emit(std::shared_ptr<EventManager::Event> event)
{ {
{ {