148 lines
4.1 KiB
C++
148 lines
4.1 KiB
C++
#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;
|
|
}
|
|
|