#include "StdAfx.h" #include "GMList.h" #include GMList::GMList() { } GMList::~GMList() { } VOID GMList::Release() { GM_INFO *pInfo = NULL ; GM_LIST_MAP_ITER iter; for( iter = m_mapGMList.begin(); iter != m_mapGMList.end(); ++iter ) { pInfo = iter->second; SAFE_DELETE( pInfo ); } } BOOL GMList::AddGM( GM_INFO* pInfo ) { GM_LIST_MAP_ITER iter; iter = m_mapGMList.find( pInfo->m_szID ); if( iter != m_mapGMList.end() ) //Á¸ÀçÇϸé.. { return FALSE; } else { GM_INFO* pGMInfo = new GM_INFO; memcpy( pGMInfo, pInfo, sizeof(GM_INFO) ); m_mapGMList.insert( std::make_pair( pInfo->m_szID, pGMInfo ) ); } return TRUE; } #pragma warning ( push ) #pragma warning ( disable : 4244) VOID GMList::Reload() { Load( m_pszGMListName, TRUE ); } BOOL GMList::Load( char * pszGMListName, BOOL bReload ) { if( !bReload ) strncpy( m_pszGMListName, pszGMListName, MAX_PATH ); BOOL bRet = FALSE; // ÆÄÀÏ¿­±â util::SolarFileReader sr; if ( !sr.OpenFile( pszGMListName, SEPERATOR_WHITESPACE ) ) { SUNLOG( eCRITICAL_LOG, "Script File Load Fail, File = %s", pszGMListName ); ASSERT( !"File Open Error : GMList.txt" ); return (FALSE); } else SUNLOG( eDEV_LOG, "Script File Load Start, File = %s", pszGMListName ); bRet = _LoadGMList( sr, bReload ); if( bRet ) SUNLOG( eDEV_LOG, "Script File Load Complete, File = %s", pszGMListName ); sr.CloseFile(); return bRet; } BOOL GMList::_LoadGMList( util::SolarFileReader& sr, BOOL bReload ) { while( TRUE ) { eTOKEN_TYPE ettType = sr.GetNextTokenType(); if ( TOKEN_END == ettType ) { break; } else if ( TOKEN_NUMBER != ettType ) { ASSERT(!"À߸øµÈ ½ºÅ©¸³Æ®"); return FALSE; } GM_INFO* pInfo = new GM_INFO; pInfo->m_wIndex = sr.GetTokenNumber(); sr.GetNextTokenType(TOKEN_STRING); strncpy( pInfo->m_szID, _strupr(sr.GetTokenString()), ID_MAX_LEN ); sr.GetNextTokenType(TOKEN_STRING); strncpy( pInfo->m_szPW, sr.GetTokenString(), PASSWD_MAX_LEN ); sr.GetNextTokenType(TOKEN_ANYTYPE); strncpy( pInfo->m_szIP, sr.GetTokenString(), IP_MAX_LEN ); sr.GetNextTokenType(TOKEN_NUMBER); pInfo->m_byGrade = sr.GetTokenNumber(); #ifndef __NA_20070102_GMIP_CHECK sr.GetNextTokenType(TOKEN_STRING); strncpy( pInfo->m_szDepartment, sr.GetTokenString(), MAX_TITLEID_LENGTH ); sr.GetNextTokenType(TOKEN_STRING); strncpy( pInfo->m_szName, sr.GetTokenString(), MAX_CHARNAME_LENGTH ); sr.GetNextTokenType(TOKEN_STRING); strncpy( pInfo->m_szRole, sr.GetTokenString(), MAX_TITLEID_LENGTH ); // ³¯Â¥ º¯È¯ /* TCHAR szDate[MAX_DATE_LENGTH]; sr.GetNextTokenType(TOKEN_STRING); strncpy( szDate, sr.GetTokenString(), MAX_DATE_LENGTH ); pInfo->m_eExpireDate.m_wYear; pInfo->m_eExpireDate.m_wMonth; pInfo->m_eExpireDate.m_wDay;*/ #endif m_mapGMList.insert( std::make_pair( pInfo->m_szID, pInfo ) ); } sr.CloseFile(); return TRUE; } GM_INFO* GMList::FindGM( const TCHAR* pszUserID ) { GM_LIST_MAP_ITER iter; iter = m_mapGMList.find( pszUserID ); if( iter != m_mapGMList.end() ) return iter->second; return NULL; } #ifdef __NA_20070102_GMIP_CHECK VOID GMList::SerializeGMListStream( GM_TOTAL_INFO& TotalInfo, BOOL bSave ) { GM_LIST_MAP_ITER iter; if( bSave ) { for( BYTE byCount = 0; byCount < TotalInfo.m_Count; ++byCount ) { GM_INFO* pGMInfo = &TotalInfo.m_Slot[byCount]; if( !pGMInfo ) continue; m_mapGMList[pGMInfo->m_szID] = pGMInfo; } } else { for( iter = m_mapGMList.begin(); iter != m_mapGMList.end(); iter++ ) { GM_INFO* pInfo = NULL; pInfo = iter->second; if( !pInfo ) continue; memcpy( &TotalInfo.m_Slot[TotalInfo.m_Count], pInfo, sizeof(GM_INFO) ); TotalInfo.m_Count++; } } } #endif #pragma warning ( pop ) #ifdef __NA_000252_20070208_VERSION_GMCMD BOOL GMList::ILoad( eSCRIPT_CODE ScriptCode, BYTE* pSTREAM, DWORD dwSize ) { #ifdef __WAVERIX_SOLAR_AUTH_SERVER_IMPLEMENTATION__ // ÆÄÀÏ ¿­±â util::SolarFileReader sr; if ( !sr.OpenBuffer( pSTREAM, dwSize, SEPERATOR_WHITESPACE ) ) { ASSERT( !"OpenBuffer" ); return (FALSE); } switch( ScriptCode ) { case SCRIPT_GMLIST: return _LoadGMList( sr, TRUE ); // case SCRIPT_CODE_KEY(SUPERUSERLIST): // return _LoadSuperList( sr, TRUE ); } ASSERT( !"Invalid Type :Script Code" ); #endif //__WAVERIX_SOLAR_AUTH_SERVER_IMPLEMENTATION__ return FALSE; } BOOL GMList::_LoadEx( eSCRIPT_CODE ScriptCode, util::SolarFileReader& sr, BOOL bReload ) { switch( ScriptCode ) { case SCRIPT_GMLIST: return _LoadGMList( sr, bReload ); // case SCRIPT_CODE_KEY(SUPERUSERLIST): // return _LoadSuperList( sr, TRUE ); } return FALSE; } #else BOOL GMList::ILoad( SCRIPT_CODE_T scScriptCode, BYTE* pSTREAM, DWORD dwSize ) { #ifdef __WAVERIX_SOLAR_AUTH_SERVER_IMPLEMENTATION__ // ÆÄÀÏ ¿­±â util::SolarFileReader sr; if ( !sr.OpenBuffer( pSTREAM, dwSize, SEPERATOR_WHITESPACE ) ) { ASSERT( !"OpenBuffer" ); return (FALSE); } switch( scScriptCode ) { case SCRIPT_CODE_KEY(GMLIST): return _LoadGMList( sr, TRUE ); // case SCRIPT_CODE_KEY(SUPERUSERLIST): // return _LoadSuperList( sr, TRUE ); } ASSERT( !"Invalid Type :Script Code" ); #endif //__WAVERIX_SOLAR_AUTH_SERVER_IMPLEMENTATION__ return FALSE; } #endif