#pragma once #include #include class Channel; class UnitServer; typedef util::SolarHashTable CHANNEL_HASH; typedef CHANNEL_HASH::iterator CHANNEL_HASH_ITR; class World { enum { DEFAULT_CHANNEL_POOL_SIZE = 5 }; friend class WorldManager; public: World(); ~World(); VOID Init( BYTE byWorldKey ); VOID Release(); BYTE GetKey() { return m_byWorldKey; } Channel * AllocChannel( BYTE byChannelKey ); VOID FreeChannel( Channel *pChannel ); // ¼­¹ö ±¸µ¿, Á¾·á, ÆÐÄ¡ VOID ExecuteStart( DWORD dwUserKey ); VOID ExecuteEnd( DWORD dwUserKey ); BOOL ExecutePatch( DWORD dwUserKey ); VOID ExecuteForceDisconnect( DWORD dwUserKey ); VOID SetServerStatus( eSERVER_STATUS status ); BOOL CheckServerStatus( eSERVER_STATUS CheckStatus ); BOOL CheckPatching(); 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 Channel * FindChannel( BYTE byChannelKey ) { return m_ChannelHash.GetData( byChannelKey ); } UnitServer * FindUnitServer( DWORD dwAgentKey, BYTE byServerType ); UnitServer* FindSunServer(); #ifdef _NA_006543_20130318_HEARTBEAT //AgentKey Çϳª·Î ±× Agent¿¡ ¼ÓÇÑ Ã¤³Î,¼­¹öµéÀ» ¾Ë±â À§ÇÑ ÇÔ¼öµé UnitServer * FindFirstUnitServerByAgentKey(DWORD dwAgentKey); // ÇØ´ç agentkey¸¦ °¡Áø ¼­¹ö¸¦ ¸®ÅÏ #endif private: BYTE m_byWorldKey; CHANNEL_HASH m_ChannelHash; CMemoryPoolFactory * m_pChannelPool; };