Files
Sun1602/Tools/WiseClient/Information/Auth/AuthInfo.cpp
T
2022-10-26 12:25:11 +08:00

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;
}