From: <axl...@us...> - 2009-10-11 03:28:07
|
Revision: 558 http://hgengine.svn.sourceforge.net/hgengine/?rev=558&view=rev Author: axlecrusher Date: 2009-10-11 03:27:58 +0000 (Sun, 11 Oct 2009) Log Message: ----------- need to be able to unregister Modified Paths: -------------- Mercury2/src/MercuryMessageManager.cpp Mercury2/src/MercuryMessageManager.h Modified: Mercury2/src/MercuryMessageManager.cpp =================================================================== --- Mercury2/src/MercuryMessageManager.cpp 2009-10-11 00:49:38 UTC (rev 557) +++ Mercury2/src/MercuryMessageManager.cpp 2009-10-11 03:27:58 UTC (rev 558) @@ -42,6 +42,23 @@ m_messageRecipients[message].push_back(ptr); } +void MercuryMessageManager::UnRegisterForMessage(const MString& message, MessageHandler* ptr) +{ + std::list< MessageHandler* >& subscriptions = m_messageRecipients[message]; + std::list< MessageHandler* >::iterator i = subscriptions.begin(); + + for (;i != subscriptions.end(); ++i) + { + if (*i == ptr) + { + printf("Deleted subscription\n"); + subscriptions.erase( i ); + return; + } + } + +} + void MercuryMessageManager::FireOffMessage( const MessageHolder & message ) { // std::map< MString, std::list< MessageHandler* > >::iterator i = m_messageRecipients.find(message.message); Modified: Mercury2/src/MercuryMessageManager.h =================================================================== --- Mercury2/src/MercuryMessageManager.h 2009-10-11 00:49:38 UTC (rev 557) +++ Mercury2/src/MercuryMessageManager.h 2009-10-11 03:27:58 UTC (rev 558) @@ -33,7 +33,9 @@ MercuryMessageManager() : m_messageQueue( MessageHolder::Compare ) { } void PostMessage(const MString& message, MessageData* data, float delay); void PumpMessages(const uint64_t& currTime); + void RegisterForMessage(const MString& message, MessageHandler* ptr); + void UnRegisterForMessage(const MString& message, MessageHandler* ptr); static MercuryMessageManager& GetInstance(); private: @@ -49,6 +51,7 @@ #define MESSAGEMAN MercuryMessageManager #define REGISTER_FOR_MESSAGE(x) MESSAGEMAN::GetInstance().RegisterForMessage(x, this) +#define UNREGISTER_FOR_MESSAGE(x) MESSAGEMAN::GetInstance().UnRegisterForMessage(x, this) #define POST_MESSAGE(x,data,delay) MESSAGEMAN::GetInstance().PostMessage(x, data, delay) #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |