|
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.
|