void MessageManager::Broadcast( const CString& sMessage ) const { ASSERT( !sMessage.empty() ); map<CString,SubscribersSet>::const_iterator iter = m_MessageToSubscribers.find( sMessage ); if( iter == m_MessageToSubscribers.end() ) return; FOREACHS_CONST( IMessageSubscriber*, iter->second, p ) { IMessageSubscriber *pSub = *p; pSub->HandleMessage( sMessage ); } }
void MessageManager::Broadcast( Message &msg ) const { // GAMESTATE is created before MESSAGEMAN, and has several BroadcastOnChangePtr members, so they all broadcast when they're initialized. if(this != NULL && m_Logging) { LOG->Trace("MESSAGEMAN:Broadcast: %s", msg.GetName().c_str()); } msg.SetBroadcast(true); LockMut(g_Mutex); 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( msg ); } }