29 lines
563 B
C++
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));
|
|
} |