#ifndef _GAMA_CLIENT_SESSION_MGR_H_ #define _GAMA_CLIENT_SESSION_MGR_H_ #include "NetworkMsgBlock.h" #include #pragma comment(lib, "ws2_32") namespace ClientNet { class CSession; class CSessionMgr : public CUnboundedWaitableMsgQueue { public: CSessionMgr(); ~CSessionMgr(); void SetDispatchQueue(CLockedMsgQueue& LockedMsgQueue) { m_lpLockedMsgQueue = &LockedMsgQueue; } CLockedMsgQueue* GetDispatchQueue() { return m_lpLockedMsgQueue; } int HandleEvents(DWORD dwMilliseconds = INFINITE); private: void RearrangeHandleSet(); // ÇØ´ç ¼¼¼Ç¿¡ ¹®Á¦°¡ ÀÖÀ¸¸é -1, ¾øÀ¸¸é 0À» ¸®ÅÏÇÑ´Ù. int Connect(INET_Addr& address, NetMsgType eNetMsgType, DWORD dwHandlerID); int HandleIO(CSession* lpSession); // ¸Þ½ÃÁö Å¥ÀÇ ÆÐŶÀ» ó¸®ÇÑ´Ù. HandleSet¿¡ º¯È­°¡ ÀÖÀ¸¸é -1À» ¸®ÅÏÇÑ´Ù. int HandleMsgQueue(); typedef std::map SessionMap; DWORD m_dwMaxSessionID; DWORD m_dwLastTimeoutCall; CLockedMsgQueue* m_lpLockedMsgQueue; SessionMap m_SessionMap; HANDLE m_hHandleSet[MAXIMUM_WAIT_OBJECTS]; }; } #endif