📄 serversession.cpp
字号:
#include "stdafx.h"
#include <stdio.h>
#include "ServerSession.h"
#include "MasterServer.h"
#include "ServerInfoManager.h"
#include "ServerSessionManager.h"
#include <Protocol_ServerCommon.h>
#include <PacketStruct_ServerCommon.h>
ServerSession::ServerSession()
{
}
ServerSession::~ServerSession()
{
}
VOID ServerSession::Init()
{
m_dwSessionIndex = 0;
m_dwServerKey = 0;
m_strConnectIP.clear();
m_wConnectPort = 0;
m_bForConnect = FALSE;
m_dwLastHeartbeatTick = GetTickCount();
m_bConnection = FALSE;
}
VOID ServerSession::Release()
{
}
VOID ServerSession::Update()
{
if( IsForConnect() )
{
// heartbeat 焊郴扁
DWORD dwCurTick = GetTickCount();
if( dwCurTick - m_dwLastHeartbeatTick > 10000 )
{
m_dwLastHeartbeatTick = dwCurTick;
MSG_HEARTBEAT msg;
msg.m_byCategory = 0;
msg.m_byProtocol = SERVERCOMMON_HEARTBEAT;
Send( (BYTE*)&msg, sizeof(MSG_HEARTBEAT) );
}
}
}
VOID ServerSession::OnConnect( BOOL bSuccess, DWORD dwNetworkIndex )
{
if( bSuccess )
{
SetForConnect( TRUE );
SetSessionIndex( dwNetworkIndex );
m_bConnection = TRUE;
if( GetServerType() != OP_SERVER )
{
SendServerType();
}
// Account
if( GetServerType() != ACCOUNT_DBPROXY || GetServerType() != OP_SERVER )
{
// 辑滚 沥焊 抛捞喉俊辑 IP客 辑滚 鸥涝栏肺 辑滚甫 茫酒辑 弊 虐甫 技泼茄促. 弊府绊 概聪历俊 眠啊
SERVER_KEY serverKey = ServerInfoManager::Instance()->GetServerKey( (eSERVER_TYPE)GetServerType(), (char*)GetConnectIP().c_str() );
SetServerKey( serverKey );
ServerSessionManager::Instance()->AddServer( this );
MessageOut( eCRITICAL_LOG, "Add Server (%u/%u/%u/%u)", serverKey.GetWorldID(),
serverKey.GetChannelID(), serverKey.GetServerType(), serverKey.GetServerID() );
}
}
}
VOID ServerSession::OnAccept( DWORD dwNetworkIndex )
{
SetForConnect( FALSE );
SetSessionIndex( dwNetworkIndex );
m_bConnection = TRUE;
}
VOID ServerSession::OnDisconnect()
{
ServerSessionManager::Instance()->RemoveServer( GetServerKey() );
m_bConnection = FALSE;
}
VOID ServerSession::SetAddr( char *pszIP, WORD wPort )
{
m_strConnectIP = pszIP;
m_wConnectPort = wPort;
}
VOID ServerSession::SendServerType()
{
MSG_SERVER_TYPE msg;
msg.m_byCategory = 0;
msg.m_byProtocol = 0;
msg.m_byServerType = MASTER_SERVER;
Send( (BYTE*)&msg, sizeof(MSG_SERVER_TYPE) );
}
void ServerSession::OnLogString(char *pszLog)
{
SUNLOG->InsertMessage( pszLog, eCRITICAL_LOG );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -