⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverinfomanager.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 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 + -