#include "stdafx.h" // #include "AuthInfo.h" void AuthInfo::_Release() { group_data_num_ = 0; channel_list_num_ = 0; ZeroMemory(group_data_list_, sizeof(group_data_list_)); ZeroMemory(group_link_, sizeof(group_link_)); ZeroMemory(server_list_, sizeof(server_list_)); } void AuthInfo::Initialize(AUTH_WORLD_ID_T maxWorldCount) { _Release(); } bool AuthInfo::AddGroupInfo(const GROUP_DATA& group_data) { if (group_data.m_GroupID >= _countof(group_data_list_)) { return false; } GROUP_DATA* dest = &group_data_list_[group_data.m_GroupID]; *dest = group_data; return true; } bool AuthInfo::AddServerInfo(const SERVER_DATA& server_data) { if (server_data.m_ChannelID >= _countof(server_list_)) { return false; } if (server_data.m_GroupID >= _countof(group_data_list_)) { return false; } group_link_[server_data.m_ChannelID] = &group_data_list_[server_data.m_GroupID]; SERVER_DATA* dest = &server_list_[server_data.m_ChannelID]; *dest = server_data; return true; } bool AuthInfo::GetServer(SERVER_DATA* server_data, int group_index, int server_index) { if (server_index >= _countof(server_list_)) { return false; } if (group_index >= _countof(group_data_list_)) { return false; } *server_data = server_list_[server_index]; return true; } //sWorldInfoByAuth* AuthInfo::GetWorldByIndex(AUTH_WORLD_ID_T worldIDX) //{ // if(m_pWORLD_INFO && (m_WORLD_COUNT > worldIDX)) // { // sWorldInfoByAuth& rRet = m_pWORLD_INFO[worldIDX]; // return &rRet; // } // return NULL; //} // //sChannelInfoByAuth* AuthInfo::GetChannelByIndex(AUTH_WORLD_ID_T worldIDX, AUTH_CHANNEL_ID_T channelIDX) //{ // if(m_pWORLD_INFO && (m_WORLD_COUNT > worldIDX)) // { // sWorldInfoByAuth& rWORLD = m_pWORLD_INFO[worldIDX]; // if(((DWORD)rWORLD.CHANNELS.size()) > channelIDX) // { // sChannelInfoByAuth& rRET = rWORLD.CHANNELS[channelIDX]; // return &rRET; // } // } // return NULL; //} // //sWorldInfoByAuth* AuthInfo::AddWorldInfo(AUTH_WORLD_ID_T worldIDX, AUTH_WORLD_NAME_T& rWORLD_NAME) //{ // if(m_pWORLD_INFO && (m_WORLD_COUNT > worldIDX)) // { // sWorldInfoByAuth& rWORLD = m_pWORLD_INFO[worldIDX]; // rWORLD.WORLDIDX = worldIDX; // rWORLD.NAME.CopyFrom(rWORLD_NAME.GetBUFFER()); // rWORLD.NAME.MakeSafeString(); // // return &rWORLD; // } // return NULL; //} // //BOOL AuthInfo::AddChannelInfo(BYTE byUniqueIdx, AUTH_WORLD_ID_T worldIDX, AUTH_CHANNEL_NAME_T& rCHANNEL_NAME) //{ // if(m_pWORLD_INFO && (m_WORLD_COUNT > worldIDX)) // { // sWorldInfoByAuth& rWORLD = m_pWORLD_INFO[worldIDX]; // // sChannelInfoByAuth rCHANNEL;// = rWORLD.CHANNELS[channelIDX]; // rCHANNEL.UNIQUEIDX = byUniqueIdx; // rCHANNEL.WORLDIDX = worldIDX; // rCHANNEL.CHANNELIDX = (AUTH_CHANNEL_ID_T)m_pWORLD_INFO->CHANNELS.size(); // rCHANNEL.NAME.CopyFrom(rCHANNEL_NAME.GetBUFFER()); // rCHANNEL.NAME.MakeSafeString(); // // rWORLD.CHANNELS.push_back(rCHANNEL); // return TRUE; // } // return FALSE; //} BOOL AuthInfo::SetConnectingGameServerInfo( AUTH_USER_KEY_T authKey, BYTE pSerialKey[AUTH_SERIAL_KEY_LEN], CHAR* pGameServerIP, WORD wGameServerPort ) { m_dwAuthUserKey = authKey; CopyMemory(m_SerialKey, pSerialKey, AUTH_SERIAL_KEY_LEN); m_strGameServerIP.CopyFrom(pGameServerIP); m_strGameServerIP.MakeSafeString(); m_wGameServerPort = wGameServerPort; return TRUE; } BOOL AuthInfo::GetConnectingGameServerInfo( AUTH_USER_KEY_T* OUT pAuthKey, BYTE* OUT pSerialKey, util::cSTRING_REF_RW* pStrIP, WORD* OUT pwGameServerPort ) { if(pAuthKey) *pAuthKey = m_dwAuthUserKey; if(pSerialKey) CopyMemory(pSerialKey, m_SerialKey, AUTH_SERIAL_KEY_LEN); if(pStrIP) { util::cSTRING_REF strRD(m_strGameServerIP.GetBUFFER(), m_strGameServerIP.GetBUFFER_LENGTH()); strRD.CopyTo(*pStrIP); } if(pwGameServerPort) *pwGameServerPort = m_wGameServerPort; return TRUE; }