📄 serverinfomanager.cpp
字号:
#include "stdafx.h"
#include ".\serverinfomanager.h"
#include "ServerSessionManager.h"
//#include <ServerStruct.h>
ServerInfoManager::ServerInfoManager(void)
{
}
ServerInfoManager::~ServerInfoManager(void)
{
Clear();
}
/// 甘俊 乐绰 器牢磐甸阑 葛滴 昏力窍绊 甘阑 厚款促.
VOID ServerInfoManager::Clear()
{
SERVER_INFO_ITER it;
for( it = m_mapBaseServerInfo.begin(); it != m_mapBaseServerInfo.end(); ++it )
{
delete it->second;
}
m_mapBaseServerInfo.clear();
}
VOID ServerInfoManager::AddServerInfo( LPSERVER_INFO lpServerInfo )
{
char szIP[128], szInnerIP[128];
ZeroMemory( szIP, 128 );
ZeroMemory( szInnerIP, 128 );
strcpy( szIP, lpServerInfo->szIP );
strcpy( szInnerIP, lpServerInfo->szInnerIP );
MessageOut( eCRITICAL_LOG, "worldID(%d) channelID(%d) serverType(%d) serverID(%d)",
lpServerInfo->ServerKey.GetWorldID(),
lpServerInfo->ServerKey.GetChannelID(),
lpServerInfo->ServerKey.GetServerType(),
lpServerInfo->ServerKey.GetServerID() );
MessageOut( eCRITICAL_LOG, " public addr(%s:%d) inner addr(%s:%d)",
szIP,
lpServerInfo->wPort,
szInnerIP,
lpServerInfo->wInnerPort );
SERVER_INFO_ITER it;
// 老窜 辑滚 沥焊 甘俊 鞍篮 虐啊 粮犁窍搁 救凳
it = m_mapBaseServerInfo.find( lpServerInfo->ServerKey );
if( it != m_mapBaseServerInfo.end() )
{
MessageOut( eCRITICAL_LOG, ">>> Warning!! Duplacated server information!! <<<" );
}
// 辑滚 沥焊 牢胶畔胶 积己
LPSERVER_INFO pNewServerInfo = new SERVER_INFO;
// 辑滚 沥焊 汗荤
memcpy( pNewServerInfo, lpServerInfo, sizeof(SERVER_INFO) );
// 甘俊 辑滚 沥焊 眠啊
m_mapBaseServerInfo.insert( SERVER_INFO_PAIR( lpServerInfo->ServerKey, pNewServerInfo ) );
}
LPSERVER_INFO ServerInfoManager::GetServerInfo( SERVER_KEY Key )
{
// 老窜 辑滚 沥焊 甘俊 鞍篮 虐啊 粮犁窍搁 救凳
SERVER_INFO_ITER it = m_mapBaseServerInfo.find( Key );
if( it != m_mapBaseServerInfo.end() )
{
return it->second;
}
return NULL;
}
// 辑滚 鸥涝苞 IP肺 秦寸 辑滚 沥焊狼 虐蔼阑 掘绢辰促.
SERVER_KEY ServerInfoManager::GetServerKey( eSERVER_TYPE eServerType, char *pszIP )
{
SERVER_INFO_ITER it;
LPSERVER_INFO pInfo;
SERVER_KEY key = 0;
for( it = m_mapBaseServerInfo.begin(); it != m_mapBaseServerInfo.end(); ++it )
{
pInfo = it->second;
if( eServerType == pInfo->ServerKey.GetServerType() && strcmp( pszIP, pInfo->szInnerIP ) == 0 )
{
key = it->first;
break;
}
}
return key;
}
VOID ServerInfoManager::GetGameDBProxyInfo( BYTE byWorldID, LPSERVER_INFO pGameDBProxyInfo )
{
SERVER_INFO_ITER it;
LPSERVER_INFO pInfo;
for( it = m_mapBaseServerInfo.begin(); it != m_mapBaseServerInfo.end(); ++it )
{
pInfo = it->second;
if( pInfo->ServerKey.GetWorldID() == byWorldID
&& pInfo->ServerKey.GetServerType() == GAME_DBPROXY )
{
memcpy( pGameDBProxyInfo, pInfo, sizeof(SERVER_INFO) );
return;
}
}
// GameDBProxy 沥焊啊 绝绰 版快
assert( !"ServerInfo 抛捞喉俊 game DB proxy 沥焊啊 绝嚼聪促.\n" );
}
VOID ServerInfoManager::GetAgentServerInfo( BYTE byWorldID, BYTE byChannelID, LPSERVER_INFO pAgentServerInfo )
{
SERVER_INFO_ITER it;
LPSERVER_INFO pInfo;
for( it = m_mapBaseServerInfo.begin(); it != m_mapBaseServerInfo.end(); ++it )
{
pInfo = it->second;
if( pInfo->ServerKey.GetWorldID() == byWorldID
&& pInfo->ServerKey.GetChannelID() == byChannelID
&& pInfo->ServerKey.GetServerType() == AGENT_SERVER )
{
memcpy( pAgentServerInfo, pInfo, sizeof(SERVER_INFO) );
return;
}
}
assert( !"ServerInfo 抛捞喉俊 agent server 沥焊啊 绝嚼聪促.\n" );
}
VOID ServerInfoManager::GetWorldServerInfo( BYTE byWorldID, LPSERVER_INFO pWorldServerInfo )
{
SERVER_INFO_ITER it;
LPSERVER_INFO pInfo;
for( it = m_mapBaseServerInfo.begin(); it != m_mapBaseServerInfo.end(); ++it )
{
pInfo = it->second;
if( pInfo->ServerKey.GetWorldID() == byWorldID
&& pInfo->ServerKey.GetServerType() == WORLD_SERVER )
{
memcpy( pWorldServerInfo, pInfo, sizeof(SERVER_INFO) );
return;
}
}
// 鞘靛 辑滚 沥焊啊 绝绰 版快
assert( !"ServerInfo 抛捞喉俊 world server 沥焊啊 绝嚼聪促.\n" );
}
VOID ServerInfoManager::GetAuthAgentServerInfo( BYTE byWorldID, LPSERVER_INFO pAuthAgentServerInfo )
{
SERVER_INFO_ITER it;
LPSERVER_INFO pInfo;
for( it = m_mapBaseServerInfo.begin(); it != m_mapBaseServerInfo.end(); ++it )
{
pInfo = it->second;
if( pInfo->ServerKey.GetServerType() == AUTH_AGENT_SERVER )
{
memcpy( pAuthAgentServerInfo, pInfo, sizeof(SERVER_INFO) );
return;
}
}
// 鞘靛 辑滚 沥焊啊 绝绰 版快
assert( !"ServerInfo 抛捞喉俊 牢刘 俊捞傈飘 沥焊啊 绝嚼聪促.\n" );
}
VOID ServerInfoManager::GetGuildServerInfo( BYTE byWorldID, LPSERVER_INFO pGuildServerInfo )
{
SERVER_INFO_ITER it;
LPSERVER_INFO pInfo;
for( it = m_mapBaseServerInfo.begin(); it != m_mapBaseServerInfo.end(); ++it )
{
pInfo = it->second;
if( pInfo->ServerKey.GetWorldID() == byWorldID
&& pInfo->ServerKey.GetServerType() == GUILD_SERVER )
{
memcpy( pGuildServerInfo, pInfo, sizeof(SERVER_INFO) );
return;
}
}
// 辨靛 辑滚 沥焊啊 绝绰 版快
assert( !"ServerInfo 抛捞喉俊 辨靛 辑滚 沥焊啊 绝嚼聪促.\n" );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -