work on allowing parameters to messages: pass a Message

struct, not just a string
This commit is contained in:
Glenn Maynard
2006-11-13 23:51:24 +00:00
parent 08b79641d9
commit 7e9ec10f3a
6 changed files with 70 additions and 37 deletions
+18 -5
View File
@@ -155,13 +155,22 @@ Message::~Message()
void Message::PushParamTable( lua_State *L )
{
m_pParams->PushSelf( L );
}
const LuaReference &Message::GetParamTable() const
{
return *m_pParams;
}
void Message::PushParam( lua_State *L, RString sName )
{
}
void Message::SetParamFromStack( lua_State *L, const RString &sName )
{
m_pParams->Set( L, sName );
}
MessageManager::MessageManager()
{
// Register with Lua.
@@ -212,23 +221,27 @@ void MessageManager::Unsubscribe( IMessageSubscriber* pSubscriber, MessageID m )
Unsubscribe( pSubscriber, MessageToString(m) );
}
void MessageManager::Broadcast( const RString& sMessage ) const
void MessageManager::Broadcast( const Message &msg ) const
{
ASSERT( !sMessage.empty() );
LockMut(g_Mutex);
map<RString,SubscribersSet>::const_iterator iter = g_MessageToSubscribers.find( sMessage );
map<RString,SubscribersSet>::const_iterator iter = g_MessageToSubscribers.find( msg.GetName() );
if( iter == g_MessageToSubscribers.end() )
return;
FOREACHS_CONST( IMessageSubscriber*, iter->second, p )
{
IMessageSubscriber *pSub = *p;
pSub->HandleMessage( Message(sMessage) );
pSub->HandleMessage( msg );
}
}
void MessageManager::Broadcast( const RString& sMessage ) const
{
ASSERT( !sMessage.empty() );
Broadcast( Message(sMessage) );
}
void MessageManager::Broadcast( MessageID m ) const
{
Broadcast( MessageToString(m) );