Files
Sun1602/Server/SolarAuth/Information/SolarAuthInfoLoader.cpp
T
git 9cb257e7ae Add GameClients drops and keep current 1602 source work.
CN1602 is the local client. KR is the official tree with unpacked Data, System, and Sound. Packed .wpk files stay off git.
2026-08-30 23:24:31 +03:00

145 lines
3.8 KiB
C++

#include "stdafx.h"
//
#include "FileListLoader.h"
#include "FileDecoder.h"
//
#include "SolarAuthInfoLoader.h"
// fnptr 객체용으로 사용하기로 하자... 일단 공유 변수
static DWORD s_dwReloadInterval = 0;
SolarAuthInfoLoader::SolarAuthInfoLoader()
{
_Init();
}
SolarAuthInfoLoader::~SolarAuthInfoLoader()
{
}
VOID SolarAuthInfoLoader::_Init()
{
m_bInited = FALSE;
memset( &m_ServerInfo, 0, sizeof(m_ServerInfo) );
m_ServerInfoDelegator = &m_ServerInfo;
m_dwCurrentTick = 0;
}
VOID SolarAuthInfoLoader::Release()
{
}
BOOL SolarAuthInfoLoader::Load( const CHAR* pszFileName, BOOL bReload )
{
BOOL bLoad = FALSE;
if( m_bInited )
{
if( bReload )
{
//Unload
bLoad = TRUE;
}
else
{
return TRUE;
}
}
else
{
bLoad = TRUE;
}
if( bLoad )
{
FileListLoader loader;
loader.SectionCallbackAlloc( &ParseInfoSection, this );
loader.SectionDataCallbackAlloc( &ParseInfoSectionData, this );
if( !loader.Load( pszFileName, FALSE ) )
{
MessageOut( eFULL_LOG, "SolarAuthServer Info : [Can't Open File : %s]", pszFileName );
m_ServerInfo.m_dwMasterServerIndex = 1;
m_ServerInfo.m_byNationCode = eCODE_NATION::KOREAN;
m_ServerInfo.m_byRegionCode = eCODE_REGION::R1;
m_ServerInfo.m_byServerMode = eMODE_SERVER::SOLAR_AUTH_SERVER;
m_ServerInfo.m_byPaddingType = 0;
strncpy( m_ServerInfo.m_strIPAddress, "127.0.0.1", sizeof(m_ServerInfo.m_strIPAddress) - 1 );
strncpy( m_ServerInfo.m_strDataPath, ".\\", sizeof(m_ServerInfo.m_strDataPath) - 1 );
m_bInited = TRUE;
MessageOut( eFULL_LOG, "SolarAuthServer Info : [LOCAL-DEV fallback] nation=KOREAN region=R1 mode=SOLAR_AUTH IP=127.0.0.1" );
return TRUE;
}
MessageOut( eFULL_LOG, "SolarAuthServer Information : [READING]" );
BOOL bCompleteSentence = FALSE;
if( bCompleteSentence = loader.ReadValue( m_ServerInfo.m_dwMasterServerIndex ) )
if( bCompleteSentence = loader.ReadValue( m_ServerInfo.m_byNationCode ) )
if( bCompleteSentence = loader.ReadValue( m_ServerInfo.m_byRegionCode ) )
if( bCompleteSentence = loader.ReadValue( m_ServerInfo.m_byServerMode ) )
if( bCompleteSentence = loader.ReadValue( m_ServerInfo.m_byPaddingType ) )
if( bCompleteSentence = loader.ReadString( m_ServerInfo.m_strIPAddress, sizeof(m_ServerInfo.m_strIPAddress) ) )
{
m_ServerInfo.m_strIPAddress[sizeof(m_ServerInfo.m_strIPAddress)-1] = '\0';
if( bCompleteSentence = loader.ReadString( m_ServerInfo.m_strDataPath, sizeof(m_ServerInfo.m_strDataPath) ) )
{
m_ServerInfo.m_strDataPath[sizeof(m_ServerInfo.m_strDataPath)-1] = '\0';
}
}
if( !bCompleteSentence )
{
MessageOut( eFULL_LOG, "Invalid Info : SolarAuthServer Global Server Key Information" );
//loader.Close() //이것 필요 없다넹...
return FALSE;
}
MessageOut( eFULL_LOG, "SolarAuthServer Information : [READED]" );
loader.Close();
m_bInited = TRUE;
}
return FALSE;
}
INT SolarAuthInfoLoader::ParseInfoSection( PVOID pPassingPtr, AttrTag tagName )
{
SolarAuthInfoLoader* pInfoLoader = (SolarAuthInfoLoader*)pPassingPtr;
if( !pInfoLoader )
return FALSE;
if( tagName.IsMatch( "[ATTRIBUTE]" ) )
{
//printf( "[ATTRIBUTE]!\n" );
return FileListLoader::SECTION_COLUMNS;
}
else if( tagName.IsMatch( "[SOLAR_AUTH_SERVER_GLOBAL_KEY_INFO]" ) )
{
return FileListLoader::SECTION_DATA;
}
return FileListLoader::SECTION_ERROR;
}
BOOL SolarAuthInfoLoader::ParseInfoSectionData( PVOID pPassingPtr, AttrValueName tagValueName, AttrValue tagValue )
{
SolarAuthInfoLoader* pInfoLoader = (SolarAuthInfoLoader*)pPassingPtr;
if( !pInfoLoader )
return FALSE;
if( tagValueName.IsMatch( "CONFIGURATION_RELOAD_TIME_INTERVAL" ) )
{
//printf( "Section value %dwValue!\n", dwValue );
DWORD dwValue;
tagValue.GetValue( dwValue );
pInfoLoader->m_ServerInfo.m_dwReloadInterval = dwValue;
return TRUE;
}
return FALSE;
}