#include "stdafx.h" #include "ScriptLoadManager.h" #include "SolarAuthInfoLoader.h" #include "SolarAcceptableMasterServerListLoader.h" #include "ScriptListLoader.h" #include "ServerList/ServerInfo.h" ScriptLoadManager::ScriptLoadManager() { _Init(); } ScriptLoadManager::~ScriptLoadManager() { SAFE_DELETE( SolarAuthInfoLoaderHandle.REFERENCE() ); // ¾Æ·¡ µÎ °³´Â ¼ø¼­¿¡ ¿µÇâÀ» ¹Þ´Â´Ù. ¿Ö³Ä? ScriptListLoader´Â °¢ ¸¶½ºÅͼ­¹öº° °¡Áö°í ÀÖÀ¸¸ç, // ±× Á¤º¸¸¦ Åä´ë·Î ¸®¼Ò½ºµéÀ» ¹Þ¾ÆµéÀδÙ. SAFE_DELETE( ScriptListLoaderHandle.REFERENCE() ); SAFE_DELETE( SolarAcceptableMasterServerListLoaderHandle.REFERENCE() ); } VOID ScriptLoadManager::_Init() { SolarAuthInfoLoaderHandle.REFERENCE() = new SolarAuthInfoLoader(); SolarAcceptableMasterServerListLoaderHandle.REFERENCE() = new SolarAcceptableMasterServerListLoader(); ScriptListLoaderHandle.REFERENCE() = new ScriptListLoader(); } BOOL ScriptLoadManager::Initialize( const TCHAR* pszSolarAuthInfo, const TCHAR* pszSolarAcceptableMasterList, const TCHAR* pszScriptList ) { if( !( pszSolarAuthInfo && pszSolarAcceptableMasterList && pszScriptList ) ) return FALSE; // ÇØ´ç ½ºÅ©¸³Æ® ·Î´õ¸¦ ºÒ·¯ ó¸®Çϱâ·Î ÇÑ´Ù. // ÇØ´ç ·Î´õ´Â ´ÙÀ½°ú °°Àº 󸮸¦ ¼öÇàÇÑ´Ù. // 1: ÇØ´ç ÆÄÀÏÀÇ ¾Ïȣȭ ¿©ºÎ // T : ÇØ´ç ÆÄÀÏÀ» Àоîµé¿© º¹È£È­ ÇÑ´Ù. // F : ÇØ´ç ÆÄÀÏÀ» ÀоîµéÀδÙ. // 2: ¸Þ¸ð¸® ½ºÆ®¸²À» ºÐ¼®ÇØ ÀǹÌÀÖ°Ô Á¶°¢³½´Ù. // 3: ÇØ´ç ·Î´õÀÇ ÀÎÅÍÆäÀ̽º¿¡ ¸Â°Ô Á¶Á÷È­ÇÑ´Ù. memcpy( m_pszSolarAuthInfo, pszSolarAuthInfo, sizeof(m_pszSolarAuthInfo) ); m_pszSolarAuthInfo[sizeof(m_pszSolarAuthInfo)-1] = _T('\0'); //¹è¿­ ¿É¼Â È®ÀÎÇÒ °Í memcpy( m_pszSolarAcceptableMasterList, pszSolarAcceptableMasterList, sizeof(m_pszSolarAcceptableMasterList) ); m_pszSolarAcceptableMasterList[sizeof(m_pszSolarAcceptableMasterList)-1] = _T('\0'); memcpy( m_pszScriptList, pszScriptList, sizeof(m_pszScriptList) ); m_pszScriptList[sizeof(m_pszScriptList)-1] = _T('\0'); //SolarAuthInfoLoader SolarAuthInfoLoaderHandle->Load( m_pszSolarAuthInfo ); return TRUE; } BOOL ScriptLoadManager::LoadSolarAuthInfo( BOOL bReload ) { if( bReload || !SolarAuthInfoLoaderHandle() ) { SAFE_DELETE( SolarAuthInfoLoaderHandle.REFERENCE() ); SolarAuthInfoLoaderHandle.REFERENCE() = new SolarAuthInfoLoader(); } SolarAuthInfoLoaderHandle->Load( m_pszSolarAuthInfo ); //TTT = SolarAuthInfoLoaderHandle->GetInfo(); return TRUE; } BOOL ScriptLoadManager::LoadAcceptableMasterServerList( BOOL bReload ) { if( bReload || !SolarAcceptableMasterServerListLoaderHandle() ) { SAFE_DELETE( SolarAcceptableMasterServerListLoaderHandle.REFERENCE() ); SolarAcceptableMasterServerListLoaderHandle.REFERENCE() = new SolarAcceptableMasterServerListLoader(); } SolarAcceptableMasterServerListLoaderHandle->Load( m_pszSolarAcceptableMasterList ); return TRUE; } BOOL ScriptLoadManager::LoadData( BOOL bReload ) { if( bReload || !ScriptListLoaderHandle() ) { SAFE_DELETE( ScriptListLoaderHandle.REFERENCE() ); ScriptListLoaderHandle.REFERENCE() = new ScriptListLoader(); } ScriptListLoaderHandle->Load( m_pszScriptList ); ScriptListLoaderHandle->LoadDataAll(); return TRUE; } BOOL ScriptLoadManager::LoadServerListPerMaster( BOOL bReload ) { if( bReload || !SolarAcceptableMasterServerListLoaderHandle() ) { //SAFE_DELETE( ServerListHandle.REFERENCE() ); //ServerListHandle.REFERENCE() = new ServerListFromFile(); } SolarAcceptableMasterServerListLoaderDelegator& rSERVER_LIST = SolarAcceptableMasterServerListLoaderHandle; // ¼­¹ö ¸ñ·Ï ºÎ¸£´Â °´Ã¼ µÎ°³¸¦ ÅÃÀÏ ÇÒ ¼ö ÀÖµµ·Ï ±¸ÇöÇÒ °Í. ServerListFromFile* pInstance = new ServerListFromFile(); rSERVER_LIST->ForeachServerList( &ServerListFromFile::LoadDataHandler, pInstance ); SAFE_DELETE( pInstance ); return TRUE; } // °¢ ·Î´õ·Î ºÐ»êµÈ °Í Áß ÀÚÁÖ »ç¿ëµÇ´Â °Í µµÃâ SCRIPT_LOADER ScriptLoadManager::GetScriptLoaderByKey( CRYPT_KEY_T cryptKey ) { ScriptLoadManager* pLoadManager = ScriptLoadManager::Instance(); SolarAcceptableMasterServerListLoaderDelegator& rServerListLoader = pLoadManager->SolarAcceptableMasterServerListLoaderHandle; SCRIPT_LOADER hScriptLoader = rServerListLoader->GetMasterServerDataByKey( cryptKey ); return hScriptLoader; } SCRIPT_LOADER ScriptLoadManager::GetScriptLoaderByIP( DWORD dwIPAddress ) { ScriptLoadManager* pLoadManager = ScriptLoadManager::Instance(); SolarAcceptableMasterServerListLoaderDelegator& rServerListLoader = pLoadManager->SolarAcceptableMasterServerListLoaderHandle; SCRIPT_LOADER hScriptLoader = rServerListLoader->GetMasterServerDataByIP( dwIPAddress ); return hScriptLoader; } SCRIPT_DATA_STREAM_DELEGATOR ScriptLoadManager::GetScriptDataByKey( CRYPT_KEY_T cryptKey, eSCRIPT_CODE scriptCode ) { SCRIPT_LOADER& hScriptLoader = GetScriptLoaderByKey( cryptKey ); if( hScriptLoader == NULL ) return NULL; return hScriptLoader->GetScriptDataStream(scriptCode); } SCRIPT_DATA_STREAM_DELEGATOR ScriptLoadManager::GetScriptDataByIP( DWORD dwIPAddress, eSCRIPT_CODE scriptCode ) { SCRIPT_LOADER& hScriptLoader = GetScriptLoaderByIP( dwIPAddress ); if( hScriptLoader == NULL ) return NULL; return hScriptLoader->GetScriptDataStream(scriptCode); }