📄 servertable2.cpp
字号:
#include "servertable.h"
#include "servertable2.h"
#if defined (__IS_AGENT_SERVER) || defined(__IS_PROXY_SERVER)
#include "usertable.h"
#endif
#ifdef __IS_DB_DEMON
#include <sqltypes.h>
#include "Network.h"
#endif
// ------------------------------------------------------------------------------------------
// For Proxy Server
// ------------------------------------------------------------------------------------------
#ifdef __IS_PROXY_SERVER
bool RequestClearPayTable( DWORD dwConnectionIndex );
void CServerTable::OnConnectTypedServer( LP_SERVER_DATA pServerData )
{
switch( pServerData->dwServerType )
{
case SERVER_TYPE_PROXY:
{
}
break;
case SERVER_TYPE_AGENT:
{
if( !RequestClearPayTable( pServerData->dwConnectionIndex ) )
{
MyLog( LOG_FATAL, "AGENT SERVER UP :: Failed to request to clear PAY TABLE to DB DEMON" );
}
}
break;
case SERVER_TYPE_DB:
{
}
break;
case SERVER_TYPE_MAP:
{
}
break;
default:
{
// Fatal
}
break;
}
}
void CServerTable::OnDisconnectTypedServer( LP_SERVER_DATA pServerData )
{
switch( pServerData->dwServerType )
{
case SERVER_TYPE_PROXY:
{
}
break;
case SERVER_TYPE_AGENT:
{
if( !RequestClearPayTable( pServerData->dwConnectionIndex ) )
{
MyLog( LOG_FATAL, "AGENT SERVER UP :: Failed to request to clear PAY TABLE to DB DEMON" );
}
}
break;
case SERVER_TYPE_DB:
{
LP_SERVER_DATA pDummyServerData;
// Clear Using Servers
for( WORD i = 0; i < MAX_SERVER_NUM; i++ )
{
pServerData->ppUsingServers[i] = NULL;
}
// Unlink and change status
for( pDummyServerData = g_pServerTable->GetServerListHead(); pDummyServerData; pDummyServerData = pDummyServerData->pNextServerData )
{
if( pDummyServerData->pUsingDBDemon && pDummyServerData->pUsingDBDemon == pServerData )
{
pDummyServerData->pUsingDBDemon = NULL;
this->SetServerStatus( pDummyServerData, STATUS_AWAITING_DB_DEMON_SETTING );
}
}
}
break;
case SERVER_TYPE_MAP:
{
}
break;
default:
{
// Fatal
}
break;
}
}
void CServerTable::OnChangeServerStatus( LP_SERVER_DATA pServerData )
{
// 泅犁 酒公巴档 救窃.
}
#endif
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
// For Agent Server
// ------------------------------------------------------------------------------------------
#ifdef __IS_AGENT_SERVER
void CServerTable::OnConnectTypedServer( LP_SERVER_DATA pServerData )
{
switch( pServerData->dwServerType )
{
case SERVER_TYPE_PROXY:
{
}
break;
case SERVER_TYPE_AGENT:
{
}
break;
case SERVER_TYPE_DB:
{
}
break;
case SERVER_TYPE_MAP:
{
}
break;
default:
{
// Fatal
}
break;
}
return;
}
void CServerTable::OnDisconnectTypedServer( LP_SERVER_DATA pServerData )
{
switch( pServerData->dwServerType )
{
case SERVER_TYPE_PROXY:
{
if( this->GetServerStatus() < STATUS_ACTIVATED )
{
// 何泼 矫啮胶啊 场唱扁 傈俊 PROXY客 楷搬捞 辆丰登菌促.
// 捞 辑滚绰 辆丰等促.
this->DestroyServer( FINISH_TYPE_PROXY_LOST_CONNECTION_UNDER_BOOT_PROGRESS );
}
}
break;
case SERVER_TYPE_AGENT:
{
// 促弗 Agent啊 磷篮 版快, 喊肺 秦临扒 绝促.
}
break;
case SERVER_TYPE_DB:
{
// DB Demon捞 磷篮 版快
// DB Demon俊 浚飘府甫 啊柳 葛电 荤侩磊甫 肋扼拎具 茄促.
g_pUserTable->RemoveAllUserByDBDemonConnectionIndex( pServerData->dwConnectionIndex );
}
break;
case SERVER_TYPE_MAP:
{
// Map Server啊 磷篮 版快
// Map Server俊 浚飘府甫 啊柳 葛电 荤侩磊甫 肋扼拎具 茄促.
g_pUserTable->RemoveAllUserByMapServerConnectionIndex( pServerData->dwConnectionIndex );
}
break;
default:
{
// Fatal
}
break;
}
}
void CServerTable::OnChangeServerStatus( LP_SERVER_DATA pServerData )
{
}
#endif
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
// For DB Demon
// ------------------------------------------------------------------------------------------
#ifdef __IS_DB_DEMON
void CServerTable::OnConnectTypedServer( LP_SERVER_DATA pServerData )
{
switch( pServerData->dwServerType )
{
case SERVER_TYPE_PROXY:
{
}
break;
case SERVER_TYPE_AGENT:
{
}
break;
case SERVER_TYPE_DB:
{
}
break;
case SERVER_TYPE_MAP:
{
}
break;
default:
{
// Fatal
}
break;
}
}
void CServerTable::OnDisconnectTypedServer( LP_SERVER_DATA pServerData )
{
switch( pServerData->dwServerType )
{
case SERVER_TYPE_PROXY:
{
if( this->GetServerStatus() < STATUS_ACTIVATED )
{
// 何泼 矫啮胶啊 场唱扁 傈俊 PROXY客 楷搬捞 辆丰登菌促.
// 捞 辑滚绰 辆丰等促.
this->DestroyServer( FINISH_TYPE_PROXY_LOST_CONNECTION_UNDER_BOOT_PROGRESS );
}
}
break;
case SERVER_TYPE_AGENT:
{
// Agent啊 磷篮 版快. t_connection苞 SERVER_DATA 狼 牢郸胶甫 沥府秦拎具 茄促.
memset( pServerData->dwUSERCN, 0, (sizeof(IDCN)*MAX_USER_NUM) );
for( DWORD i = DRAGON_CONNECTIONS_START; i < MAX_USER_NUM; i++ )
{
if( connections[i].dwMyAgentIndex == pServerData->dwConnectionIndex )
{
connections[i].bUse = false;
connections[i].dwMyAgentIndex = 0;
connections[i].dwUserID = 0;
}
}
}
break;
case SERVER_TYPE_DB:
{
}
break;
case SERVER_TYPE_MAP:
{
}
break;
default:
{
// Fatal
}
break;
}
}
void CServerTable::OnChangeServerStatus( LP_SERVER_DATA pServerData )
{
}
#endif
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
// For MAP Server
// ------------------------------------------------------------------------------------------
#ifdef __IS_MAP_SERVER
#include "..\HigherLayers\DefaultHeader.h"
#include "..\HigherLayers\Dr_Network.h"
void CServerTable::OnConnectTypedServer( LP_SERVER_DATA pServerData )
{
switch( pServerData->dwServerType )
{
case SERVER_TYPE_PROXY:
{
}
break;
case SERVER_TYPE_AGENT:
{
// -----------------------------
// Alloc this Agent's CPackedMsg
// -----------------------------
CPackedMsg* pPack = new CPackedMsg;
m_ppPackedTable[this->m_dwNumOfTypedServers[SERVER_TYPE_AGENT]] = pPack;
pPack->SetConnectionIndex( pServerData->dwConnectionIndex );
pPack->SetAgentServerIndex( this->m_dwNumOfTypedServers[SERVER_TYPE_AGENT] );
}
break;
case SERVER_TYPE_DB:
{
}
break;
case SERVER_TYPE_MAP:
{
}
break;
default:
{
// Fatal
}
break;
}
}
void CServerTable::OnDisconnectTypedServer( LP_SERVER_DATA pServerData )
{
switch( pServerData->dwServerType )
{
case SERVER_TYPE_PROXY:
{
if( this->GetServerStatus() < STATUS_ACTIVATED )
{
// 何泼 矫啮胶啊 场唱扁 傈俊 PROXY客 楷搬捞 辆丰登菌促.
// 捞 辑滚绰 辆丰等促.
this->DestroyServer( FINISH_TYPE_PROXY_LOST_CONNECTION_UNDER_BOOT_PROGRESS );
}
}
break;
case SERVER_TYPE_AGENT:
{
// ------------------------------
// Remove this Agent's CPackedMsg
// ------------------------------
DWORD dwPackedIndex = 0;
CPackedMsg* pPack = GetPackedMsg( &dwPackedIndex, pServerData->dwConnectionIndex);
if ( pPack )
{
delete pPack;
pPack = NULL;
this->m_ppPackedTable[dwPackedIndex] = NULL;
}
this->m_ppPackedTable[dwPackedIndex] = this->m_ppPackedTable[this->m_dwNumOfTypedServers[SERVER_TYPE_AGENT]-1];
// ---------------------------------
// Close Connections From this Agent
// ---------------------------------
for( DWORD i = DRAGON_CONNECTIONS_START; i < DRAGON_MAX_CONNECTIONS; i++ )
{
if( connections[i].dwAgentConnectionIndex == pServerData->dwConnectionIndex )
{
closeconnection(connections, i, -1);
}
}
}
break;
case SERVER_TYPE_DB:
{
}
break;
case SERVER_TYPE_MAP:
{
}
break;
default:
{
// Fatal
}
break;
}
}
void CServerTable::OnChangeServerStatus( LP_SERVER_DATA pServerData )
{
}
#endif
// ------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -