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

📄 serversession.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 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 + -