#pragma once #include #include class GameAgentServerSession; class GameAgentManager : public util::Singleton { public: GameAgentManager(); ~GameAgentManager(); typedef STLX_HASH_MAP GAMEAGENT_HASH; BOOL AddAgent(DWORD key, GameAgentServerSession* pSession); void RemoveAgent(DWORD key); GameAgentServerSession* FindAgent(DWORD key); template void Foreach(Operator& op); private: GAMEAGENT_HASH m_GameAgentHash; }; ////////////////////////////////////////////////////////////////////////// template void GameAgentManager::Foreach(Operator & op) { GAMEAGENT_HASH::iterator it = m_GameAgentHash.begin(), end = m_GameAgentHash.end(); for( ; it != end; ++it) op(it->second); }