📄 serversession.cpp
字号:
#include "stdafx.h"
#include ".\serversession.h"
#include <Const.h>
#include <PacketStruct.h>
#include <Protocol_ServerCommon.h>
#include <PacketStruct_ServerCommon.h>
#include <PublicMath.h>
#include "ServerSessionManager.h"
#include "GameServer.h"
ServerSession::ServerSession()
{
}
ServerSession::~ServerSession()
{
}
VOID ServerSession::Init()
{
m_dwSessionIndex = 0;
m_wConnectPort = 0;
m_bForConnect = FALSE;
m_dwLastHeartbeatTick = GetTickCount();
m_bConnection = FALSE;
m_strConnectIP.clear();
}
VOID ServerSession::Release()
{
m_strConnectIP.clear();
}
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 );
ServerSessionManager::Instance()->AddServer( this );
m_bConnection = TRUE;
}
}
VOID ServerSession::OnAccept( DWORD dwNetworkIndex )
{
SetForConnect( FALSE );
SetSessionIndex( dwNetworkIndex );
ServerSessionManager::Instance()->AddServer( this );
m_bConnection = TRUE;
}
VOID ServerSession::OnDisconnect()
{
ServerSessionManager::Instance()->RemoveServer( GetSessionIndex() );
m_bConnection = FALSE;
}
VOID ServerSession::SendServerType()
{
MSG_SERVER_TYPE msg;
msg.m_byCategory = 0;
msg.m_byProtocol = 0;
//msg.m_byServerType = GAME_SERVER;
msg.m_byServerType = (BYTE)g_pGameServer->GetServerType();
Send( (BYTE*)&msg, sizeof(MSG_SERVER_TYPE) );
}
VOID ServerSession::SetAddr( char *pszIP, WORD wPort )
{
m_strConnectIP = pszIP;
m_wConnectPort = wPort;
}
/*
VOID ServerSession::TryToConnect()
{
if( m_strConnectIP.empty() )
{
SUNLOG( eFULL_LOG, "can't try to connect because address is empty." );
return;
}
//SUNLOG( eFULL_LOG, "Trying to connect to server...(%s:%d)", m_strConnectIP.c_str(), m_wConnectPort );
g_pGameServer->ConnectToServer( this, (char*)m_strConnectIP.c_str(), m_wConnectPort );
}
*/
/*
VOID ServerSession::Reconnect()
{
assert( m_bHasTriedToConnect && "Connect甫 矫档茄 利捞 绝绰 技记俊 措窍咯 Reconnect() 龋免");
m_bHasTriedToConnect = FALSE;
TryToConnect();
}
*/
VOID ServerSession::OnLogString( char *pszLog )
{
switch( g_pGameServer->GetServerType() )
{
case FIELD_SERVER:
LogToFile( "NetworkLog_FieldServer.txt", "[ServerType %d] %s", GetServerType(), pszLog );
break;
case BATTLE_SERVER:
LogToFile( "NetworkLog_BattleServer.txt", "[ServerType %d] %s", GetServerType(), pszLog );
break;
default:
assert(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -