📄 serversessionmanager.cpp
字号:
#include "stdafx.h"
#include "ServerSessionManager.h"
#include "ServerInfoManager.h"
#include "ServerSession.h"
#include <assert.h>
// 烹拳樊 笼拌 困秦
#include "MasterServer.h"
ServerSessionManager::ServerSessionManager()
{
m_pOpServer = NULL;
}
ServerSessionManager::~ServerSessionManager()
{
}
VOID ServerSessionManager::AddServer( ServerSession * pServer )
{
//assert( FindServer( pServer->GetServerKey() ) == NULL );
if( FindServer( pServer->GetServerKey() ) != NULL )
{
MessageOut( eCRITICAL_LOG, "Warning: 辑滚虐 吝汗(%u/%u/%u/%u)捞骨肺 楷搬阑 谗嚼聪促. DB ServerInfo 抛捞喉 沥焊甫 犬牢窍技夸.",
pServer->GetServerKey().GetWorldID(), pServer->GetServerKey().GetChannelID(), pServer->GetServerKey().GetServerType(),
pServer->GetServerKey().GetServerID() );
pServer->Disconnect();
}
m_mapSessions.insert( SERVER_SESSION_PAIR( pServer->GetServerKey(), pServer ) );
switch( pServer->GetServerType() )
{
case OP_SERVER:
m_pOpServer = pServer;
MessageOut( eCRITICAL_LOG, "Add Opserver %u.", pServer->GetServerKey() );
break;
}
}
VOID ServerSessionManager::RemoveServer( SERVER_KEY serverKey )
{
SERVER_SESSION_MAP_ITER it = m_mapSessions.find( serverKey );
ServerSession *pServer = NULL;
//assert( it != m_mapSessions.end() );
//------------------------------------------------------------------------------------------------
// TempServerSession篮 概聪廉俊 眠啊登瘤 臼绰促.(角力 荤侩瞪 技记栏肺 Redirect等 饶俊 眠啊凳)
// 弊矾聪鳖 TempServerSesssion::OnDisconnect俊辑 捞 窃荐甫 龋免秦档 公矫窍磊.
//------------------------------------------------------------------------------------------------
if( it != m_mapSessions.end() )
{
pServer = it->second;
m_mapSessions.erase( it );
switch( pServer->GetServerType() )
{
case OP_SERVER:
m_pOpServer = NULL;
MessageOut( eCRITICAL_LOG, "OP_SERVER(%u/%u/%u/%u) Disconnected.",
serverKey.GetWorldID(), serverKey.GetChannelID(), serverKey.GetServerType(), serverKey.GetServerID() );
break;
case BATTLE_SERVER:
MasterServer::Instance()->RemoveMoney( serverKey );
break;
}
}
}
ServerSession * ServerSessionManager::FindServer( SERVER_KEY serverKey )
{
SERVER_SESSION_MAP_ITER it = m_mapSessions.find( serverKey );
if( it == m_mapSessions.end() ) return NULL;
return it->second;
}
VOID ServerSessionManager::Update()
{
SERVER_SESSION_MAP_ITER it;
for( it = m_mapSessions.begin(); it != m_mapSessions.end(); ++it )
{
it->second->Update();
}
}
SERVER_SESSION_VEC ServerSessionManager::GetWorldServerList()
{
SERVER_SESSION_MAP_ITER it;
ServerSession *pServerSession;
SERVER_SESSION_VEC worldList;
for( it = m_mapSessions.begin(); it != m_mapSessions.end(); ++it )
{
pServerSession = it->second;
if( pServerSession->GetServerType() == WORLD_SERVER )
{
worldList.push_back( pServerSession );
}
}
return worldList;
}
SERVER_SESSION_VEC ServerSessionManager::GetGameServerList()
{
SERVER_SESSION_MAP_ITER it;
ServerSession *pServerSession;
SERVER_SESSION_VEC gameList;
for( it = m_mapSessions.begin(); it != m_mapSessions.end(); ++it )
{
pServerSession = it->second;
switch( pServerSession->GetServerType() )
{
case FIELD_SERVER:
case BATTLE_SERVER:
case GAME_SERVER:
{
gameList.push_back( pServerSession );
}
}
}
return gameList;
}
SERVER_SESSION_VEC ServerSessionManager::GetDBProxyList( SERVER_KEY serverKey )
{
SERVER_SESSION_MAP_ITER it;
ServerSession *pServerSession;
SERVER_SESSION_VEC DBList;
if( 0 == serverKey.GetWorldID() )
{
// 傈眉 辑滚
for( it = m_mapSessions.begin(); it != m_mapSessions.end(); ++it )
{
pServerSession = it->second;
switch( pServerSession->GetServerType() )
{
case GAME_DBPROXY:
case ACCOUNT_DBPROXY:
{
DBList.push_back( pServerSession );
MessageOut( eFULL_LOG, "傈眉 辑滚 辆丰 - DBProxy [%u/%u/%u/%u] Add", pServerSession->GetServerKey().GetWorldID(),
pServerSession->GetServerKey().GetChannelID(),
pServerSession->GetServerKey().GetServerType(),
pServerSession->GetServerKey().GetServerID() );
break;
}
}
}
return DBList;
}
if( 0 == serverKey.GetChannelID() )
{
// 傈眉 岿靛
for( it = m_mapSessions.begin(); it != m_mapSessions.end(); ++it )
{
pServerSession = it->second;
switch( pServerSession->GetServerType() )
{
case GAME_DBPROXY:
case ACCOUNT_DBPROXY:
{
if( pServerSession->GetServerKey().GetWorldID() == serverKey.GetWorldID() )
{
DBList.push_back( pServerSession );
MessageOut( eFULL_LOG, "岿靛(%u) 辆丰 - DBProxy [%u/%u/%u/%u] Add", serverKey.GetWorldID(),
pServerSession->GetServerKey().GetWorldID(),
pServerSession->GetServerKey().GetChannelID(),
pServerSession->GetServerKey().GetServerType(),
pServerSession->GetServerKey().GetServerID() );
}
break;
}
}
}
return DBList;
}
// 捞档历档 酒聪搁 傈眉 盲澄
pServerSession = FindServer( serverKey );
switch( pServerSession->GetServerType() )
{
case GAME_DBPROXY:
// case ACCOUNT_DBPROXY:
{
if( (pServerSession->GetServerKey().GetWorldID() == serverKey.GetWorldID()) &&
(pServerSession->GetServerKey().GetWorldID() == serverKey.GetChannelID()) )
{
DBList.push_back( pServerSession );
MessageOut( eFULL_LOG, "盲澄(%u/%u) 辆丰 - DBProxy [%u/%u/%u/%u] Add", serverKey.GetWorldID(),
serverKey.GetChannelID(),
pServerSession->GetServerKey().GetWorldID(),
pServerSession->GetServerKey().GetChannelID(),
pServerSession->GetServerKey().GetServerType(),
pServerSession->GetServerKey().GetServerID() );
}
break;
}
}
return DBList;
}
SERVER_SESSION_VEC ServerSessionManager::GetServerList( SERVER_KEY serverKey )
{
SERVER_SESSION_VEC serverList;
ServerSession *pSession = NULL;
SERVER_SESSION_MAP_ITER it;
if( 0 == serverKey.GetWorldID() )
{
// 傈眉 辑滚
for( it = m_mapSessions.begin(); it != m_mapSessions.end(); ++it )
{
pSession = it->second;
switch( pSession->GetServerType() )
{
case ACCOUNT_DBPROXY:
case GAME_DBPROXY:
case OP_SERVER:
case MASTER_SERVER:
case AUTH_AGENT_SERVER:
case TEMP_SERVER:
case UNKNOWN_SERVER:
{
break;
}
default:
{
serverList.push_back( pSession );
MessageOut( eFULL_LOG, "傈眉 辑滚 辆丰 - SERVERKEY [%u/%u/%u/%u] Add", it->second->GetServerKey().GetWorldID(),
it->second->GetServerKey().GetChannelID(),
it->second->GetServerKey().GetServerType(),
it->second->GetServerKey().GetServerID() );
break;
}
}
}
return serverList;
}
if( 0 == serverKey.GetChannelID() )
{
// 傈眉 岿靛
for( it = m_mapSessions.begin(); it != m_mapSessions.end(); ++it )
{
pSession = it->second;
switch( pSession->GetServerType() )
{
case ACCOUNT_DBPROXY:
case GAME_DBPROXY:
case OP_SERVER:
case MASTER_SERVER:
case AUTH_AGENT_SERVER:
case TEMP_SERVER:
case UNKNOWN_SERVER:
{
break;
}
default:
{
serverList.push_back( pSession );
MessageOut( eFULL_LOG, "岿靛 %u 辆丰 - SERVERKEY [%u/%u/%u/%u] Add", serverKey.GetWorldID(),
it->second->GetServerKey().GetWorldID(),
it->second->GetServerKey().GetChannelID(),
it->second->GetServerKey().GetServerType(),
it->second->GetServerKey().GetServerID() );
break;
}
}
}
return serverList;
}
// 咯扁鳖瘤 坷搁 傈眉 盲澄 辆丰
for( it = m_mapSessions.begin(); it != m_mapSessions.end(); ++it )
{
switch( pSession->GetServerType() )
{
case ACCOUNT_DBPROXY:
case GAME_DBPROXY:
case OP_SERVER:
case MASTER_SERVER:
case AUTH_AGENT_SERVER:
case TEMP_SERVER:
case UNKNOWN_SERVER:
{
break;
}
default:
{
serverList.push_back( pSession );
MessageOut( eFULL_LOG, "盲澄 [%u/%u] 辆丰 - SERVERKEY [%u/%u/%u/%u] Add", serverKey.GetChannelID(), serverKey.GetWorldID(),
it->second->GetServerKey().GetWorldID(),
it->second->GetServerKey().GetChannelID(),
it->second->GetServerKey().GetServerType(),
it->second->GetServerKey().GetServerID() );
break;
}
}
}
return serverList;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -