Files
fishtanks/src/EventBroker.cpp
T

29 lines
563 B
C++

#include "PrecompiledHeader.h"
#include "EventBroker.h"
BaseEventRelay::~BaseEventRelay()
{
if (m_Broker != nullptr)
{
m_Broker->Unsubscribe(*this);
}
}
void EventBroker::Unsubscribe(BaseEventRelay &relay) // ?
{
auto itpair = m_Subscribers.equal_range(relay.m_TypeName);
for (auto it = itpair.first; it != itpair.second; ++it)
{
if (it->second == &relay)
{
m_Subscribers.erase(it);
break;
}
}
}
void EventBroker::Subscribe(BaseEventRelay &relay)
{
relay.m_Broker = this;
m_Subscribers.insert(std::make_pair(relay.m_TypeName, &relay));
}