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

📄 serversessionmanager.cpp

📁 奇迹世界data 服务器代码,研究游戏的朋友有帮助
💻 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 + -