📄 serversessionmanager.cpp
字号:
#include "stdafx.h"
#include ".\serversessionmanager.h"
#include "ServerSession.h"
#include <Macro.h>
#include "ServerSessionFactory.h"
ServerSessionManager::ServerSessionManager()
: m_pSessionHashTable( NULL )
{
}
ServerSessionManager::~ServerSessionManager()
{
ASSERT( NULL == m_pSessionHashTable );
}
VOID ServerSessionManager::Init()
{
ASSERT( NULL == m_pSessionHashTable );
m_pSessionHashTable = new SolarHashTable<ServerSession *>;
m_pSessionHashTable->Initialize( _MAX_SESSION_BUCKET_SIZE );
}
VOID ServerSessionManager::Release( ServerSessionFactory * pPoolFactory )
{
if( m_pSessionHashTable )
{
ServerSession * pServer = NULL;
m_pSessionHashTable->SetFirst();
while( pServer = m_pSessionHashTable->GetNext() )
{
pServer->release();
pPoolFactory->FreeServerSession( pServer );
}
m_pSessionHashTable->RemoveAll();
delete m_pSessionHashTable;
m_pSessionHashTable = NULL;
}
}
//-------------------------------------------------------------------------------------------------
// session manager俊 眠啊瞪锭 serverSession狼 Init()阑 龋免茄促.
// 角力肺 serverSession狼 檬扁拳啊 柳青等促.
// 付蛮啊瘤肺 session manager俊 remove矫俊 serversession狼 秦力啊 捞风绢柳促.
//-------------------------------------------------------------------------------------------------
VOID ServerSessionManager::AddServer( ServerSession * pServer )
{
pServer->init();
switch( pServer->GetServerType() )
{
case MASTER_SERVER:
break;
case GAME_DBPROXY:
//ASSERT( m_pDBProxyServerSession == NULL );
//m_pDBProxyServerSession = pServer;
break;
}
ASSERT( NULL == FindServer( pServer->GetSessionIndex() ) );
m_pSessionHashTable->Add( pServer, pServer->GetSessionIndex() );
}
ServerSession * ServerSessionManager::FindServer( DWORD dwSessionIndex )
{
return m_pSessionHashTable->GetData( dwSessionIndex );
}
VOID ServerSessionManager::RemoveServer( DWORD dwSessionIndex )
{
ASSERT( NULL != FindServer( dwSessionIndex ) );
ServerSession * pServer = m_pSessionHashTable->GetData( dwSessionIndex );
pServer->release();
m_pSessionHashTable->Remove( dwSessionIndex );
}
VOID ServerSessionManager::Process()
{
ServerSession * pServer;
m_pSessionHashTable->SetFirst();
while( pServer = m_pSessionHashTable->GetNext() )
{
pServer->Update();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -