#ifndef _RYL_AGENTSERVER_TABLE_H_ #define _RYL_AGENTSERVER_TABLE_H_ #include #include class CSession; class CRylAgentServerDispatch; class CBuffer; class CPacketDispatch; class CGameDB; class CServerRequestKeeper; class CIOCPNet; class CBillingDB; class CAuthDB; /*! \class CAgentServerTable ¿î¿µ¼­¹ö¿Í ¿¬°áÁßÀÎ Áß°è¼­¹ö ¿¬°á ¼¼¼Ç Å×À̺í(°ú±ÝDB, ÀÎÁõDB, °ÔÀÓDBµµ °ü¸®) */ class CAgentServerTable : public CStaticSingleton { public: enum SIZE { MAX_AGENT_SERVER = 10, MAX_BUFFER = 256 }; struct DBAgentServerInfo { char szServerName[MAX_BUFFER]; char szServerAddress[MAX_BUFFER]; char szDBServer[MAX_BUFFER]; char szDBName[MAX_BUFFER]; char szDBAccount[MAX_BUFFER]; char szDBPass[MAX_BUFFER]; }; CAgentServerTable(); ~CAgentServerTable(); void Destroy(); void InitAgentServerTable(CIOCPNet& IOCPNetwork); void ConnectToAgentServer(CIOCPNet& IOCPNetwork, unsigned long dwGroupIndex); void SetNULL(unsigned long dwServerGroup); // BaseLibrary ¾÷µ¥ÀÌÆ® ÀÌÈÄ ÇÊ¿ä¾øÀ½; void PrintServerState(char* szText, int length); void RemoveAllModifyCharacter(CPacketDispatch* lpPacketDispatch); // ÇØ´ç DispatchÀÇ Ä³¸¯Å͵éÀ» ¸ñ·Ï¿¡¼­ ÀüºÎ »èÁ¦ void RemoveAllDepositLock(CPacketDispatch* lpPacketDispatch); // ÇØ´ç DispatchÀÇ Ã¢°íÁ¤º¸¸¦ ¸ñ·Ï¿¡¼­ ÀüºÎ »èÁ¦ void Disconnected(unsigned long dwIP); // ÀÓÀÇ Á¢¼Ó ²÷±â unsigned long GetGroupFromDBAgentIP(unsigned long dwIP); CServerRequestKeeper& GetRequestKeeper(unsigned long dwServerGroup);// RequestKeeper ¾ò±â CRylAgentServerDispatch* GetDispatch(unsigned long dwServerID); // Áß°è¼­¹ö µð½ºÆÐÄ¡ ¾ò±â CSession* GetSession(unsigned long dwServerID); // Áß°è¼­¹ö ¼¼¼Ç ¾ò±â CGameDB* GetGameDB(unsigned long dwServerID); // °ÔÀÓ DB ¾ò±â CBillingDB* GetBillingDB() { return m_lpBillingDB; } // °ú±Ý DB ¾ò±â CBillingDB* GetBillingLogDB() { return m_lpBillingLogDB; } // °ú±Ý Log DB ¾ò±â CAuthDB* GetAuthDB() { return m_lpAuthDB; } // ÀÎÁõ DB ¾ò±â private: CSessionPolicy* m_lpSessionPolicy; typedef std::map IPtoServerID; IPtoServerID m_IPtoServerID; CGameDB* m_lpGameDB[MAX_AGENT_SERVER]; CBillingDB* m_lpBillingDB; CBillingDB* m_lpBillingLogDB; CAuthDB* m_lpAuthDB; char m_szNation[MAX_BUFFER]; void ConnectToAllAgentServerz(CIOCPNet& IOCPNetwork); // ½ºÅ©¸³Æ®ÀÇ Áß°è¼­¹ö ¸®½ºÆ®·Î ¿¬°á void ConnectToBillingDB(); // °ú±Ý DB ¿¬°á void ConnectToBillingLogDB(); // °ú±Ý Log DB ¿¬°á void ConnectToAuthDB(); // ÀÎÁõ DB ¿¬°á bool GetAgentServerInfo(unsigned long dwGroupIndex, DBAgentServerInfo& stAgentServerInfo); }; #endif