#pragma once //============================================================================================================================= /* ÇÑ ÆÄƼ¿¡ ¼Ò¼ÓµÈ ÆÄƼ¿øµéÀÌ LinkServerº°·Î ºÐÆ÷µÈ ¼ö¸¦ °ü¸® ÆÄƼ¿øÀÌ µé¾î¿Ã ¶§ ÇØ´ç LinkServer¿¡ óÀ½À¸·Î µé¾î¿À´Â °æ¿ì¶ó¸é ±× ¼­¹ö¿¡¼­ ÆÄƼ´Â »ý¼ºµÇ¾î¾ß ÇÑ´Ù. ÆÄƼ¿øÀÌ ¶°³¯ ¶§ ÇØ´ç LinkServer¿¡ ¼Ò¼ÓµÈ ÆÄƼ¿øÀÌ 0À̶ó¸é ±× ¼­¹ö¿¡¼­ ÆÄƼ´Â ÆÄ±«µÇ¾î¾ß ÇÑ´Ù. */ //============================================================================================================================= #include class SessionMemberMgr { public: typedef std::map SESSION_COUNT_MAP; // typedef std::map SESSION_MEMBER_MAP; // SessionMemberMgr() {} ~SessionMemberMgr() {} VOID Release(); BOOL JoinMember( DWORD MemberKey ); BOOL LeaveMember( DWORD MemberKey ); BOOL AddMemberToSession( DWORD MemberKey, DWORD ToSessionIndex ); BOOL RemoveMemberToSession( DWORD MemberKey, DWORD ToSessionIndex ); int GetSessionMemberNum( DWORD SessionIndex ); int GetTotSessionMemberNum(); int GetTotMemberNum(); template< class Operator > VOID For_eachSessions( Operator & Opr ); private: VOID IncSessionCount( DWORD SessionIndex ); VOID DecSessionCount( DWORD SessionIndex ); private: SESSION_COUNT_MAP m_mapSessions; SESSION_MEMBER_MAP m_mapMembers; }; template< class Operator > VOID SessionMemberMgr::For_eachSessions( Operator & Opr ) { SESSION_COUNT_MAP::iterator it, end(m_mapSessions.end()); for( it = m_mapSessions.begin(); it != end; it++ ) { Opr( it->first ); } }