#pragma once #include #include #include class World; class Channel; class UnitServer; typedef util::SolarHashTable WORLD_HASH; typedef WORLD_HASH::iterator WORLD_HASH_ITR; class WorldManager : public Singleton { enum { DEFAULT_WORLD_POOL_SIZE = 10 }; public: WorldManager(); ~WorldManager(); World * AllocWorld( BYTE byWorldKey ); VOID FreeWorld( World *pWorld ); World * FindWorld( BYTE byWorldKey ) { return m_WorldHash.GetData( byWorldKey ); } Channel * FindChannel( BYTE byWorldKey, BYTE byChannelKey ); UnitServer * FindUnitServer( BYTE byWorldKey, BYTE byChannelKey, DWORD dwUnitServerKey ); UnitServer * FindUnitServer( DWORD dwAgentKey, BYTE byServerType ); UnitServer * FindUnitServer( SERVER_KEY &ServerKey ); UnitServer * FindUnitServer( OLD_SERVER_KEY &ServerKey ); UnitServer * FindSunServer( BYTE byWorldKey ); #ifdef _NA_006543_20130318_HEARTBEAT //AgentKey Çϳª·Î ±× Agent¿¡ ¼ÓÇÑ Ã¤³Î,¼­¹öµéÀ» ¾Ë±â À§ÇÑ ÇÔ¼öµé UnitServer * FindFirstUnitServerByAgentKey(DWORD dwAgentKey); // ÇØ´ç agentkey¸¦ °¡Áø ¼­¹ö¸¦ ¸®ÅÏ #endif // ServerInfo¸¦ ÀÌ¿ëÇØ¼­ World¸¦ ±¸¼ºÇÑ´Ù. VOID MakeWorld(); VOID Release(); VOID SerializeServerInfoStream( SERVER_TOTAL_INFO & OUT rServerTotInfo ); VOID SerializeServerInfoStreamForUser( SERVER_TOTAL_INFO & OUT rServerTotInfo, DWORD dwUserGUID ); VOID SerializeFtpInfoStreamForUser( FTP_TOTAL_INFO & OUT rFtpTotInfo, DWORD dwUserGUID ); #ifdef __20080312__SOLARAUTH_SERVER_PATCH VOID SerializeScriptFolderInfoStream( SCRIPTFOLDER_TOTAL_INFO& OUT rSCFolderTotInfo, DWORD dwUserGUID ); #endif // ¼­¹ö ±¸µ¿, Á¾·á, ÆÐÄ¡ VOID ExecuteStart( DWORD dwUserKey ); VOID ExecuteEnd( DWORD dwUserKey ); VOID ExecutePatch( DWORD dwUserKey ); VOID ExecuteForceDisconnect( DWORD dwUserKey ); VOID ChangeAllServerStatus( eSERVER_STATUS status ); BOOL CheckServerStatus( BYTE byWorldKey, eSERVER_STATUS CheckStatus ); BOOL CheckPatching( BYTE byWorldKey ); private: WORLD_HASH m_WorldHash; CMemoryPoolFactory * m_pWorldPool; };