mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-01 21:56:43 +08:00
33 lines
770 B
C++
33 lines
770 B
C++
#include "blackmisc/message_handler.h"
|
|
#include "blackmisc/message_dispatcher.h"
|
|
|
|
namespace BlackMisc
|
|
{
|
|
SINGLETON_CLASS_IMPLEMENTATION(CMessageDispatcher)
|
|
|
|
void CMessageDispatcher::append(IMessage *message)
|
|
{
|
|
m_messageQueue.enqueue(message);
|
|
}
|
|
|
|
void CMessageDispatcher::dispatch()
|
|
{
|
|
IMessage *message = NULL;
|
|
|
|
if (m_messageQueue.isEmpty())
|
|
return;
|
|
|
|
message = m_messageQueue.dequeue();
|
|
|
|
if (message != NULL)
|
|
{
|
|
CTypeInfo typeinfo = CTypeInfo(typeid(*message));
|
|
QList<CMessageHandler *> neededHandlers = m_messageHander.values(typeinfo);
|
|
int handlerSize = neededHandlers.size();
|
|
for (int i = 0; i < handlerSize; ++i)
|
|
neededHandlers.at(i)->handleMessage(message);
|
|
}
|
|
}
|
|
|
|
} // namespace BlackMisc
|