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

📄 serversession.h

📁 奇迹世界data 服务器代码,研究游戏的朋友有帮助
💻 H
字号:
#ifndef __SERVER_SESSION_H__
#define __SERVER_SESSION_H__

#pragma once

#include <string>
#include <NetworkObject.h>
#include <SolarDatabaseDefine.h>
#include <SolarDatabase.h>
#include <QueryResult.h>

class SolarDatabase;

class ServerSession : public NetworkObject
{
	friend class ServerSessionManager;
	enum { _HEARTBEAT_DELAY_BETWEEN_SERVER = 10000, };
public:
	ServerSession();
	virtual ~ServerSession();
	
	virtual VOID				Update();				///< 概平付促 龋免捞 登绢具 窍绰 何盒!!!!
	VOID						DBQuery( Query * pQuery );
	virtual VOID				DBResult( BYTE cate, BYTE ptcl, QueryResult * pData ){}

	virtual eSERVER_TYPE		GetServerType() { return UNKNOWN_SERVER;	}
	virtual VOID				SetServerType( eSERVER_TYPE eType ) {}
	inline VOID					SetSessionIndex( DWORD dwIdx ) { m_dwSessionIndex = dwIdx; }
	inline DWORD				GetSessionIndex() { return m_dwSessionIndex; }

	VOID						SendServerType();
	
	virtual VOID				OnAccept( DWORD dwNetworkIndex );
	virtual VOID				OnDisconnect();
	virtual VOID				OnConnect( BOOL bSuccess, DWORD dwNetworkIndex );
	virtual VOID				OnRecv( BYTE *pMsg, WORD wSize ) {}

	VOID						SetAddr( char *pszIP, WORD wPort );
	VOID						TryToConnect();


	BOOL						IsConnected() { return m_bIsConnected;	}
	BOOL						SendPacket( MSG_BASE * pMsg, WORD wSize );

	// 烹拌侩
	DWORD						GetBufferedQueryNum() { return m_DB.GetBufferedQueryNum();	}
protected:	/// ServerSessionFactory俊辑父 龋免凳!
	virtual VOID				init();
	virtual VOID				release();

	template <class ObjectOperator>
	VOID						removeRelatedUsers( ObjectOperator & op );
private:
	inline VOID					_setIsConnector( BOOL bIsConnector ) { m_bIsConnector = bIsConnector; }
	inline BOOL					_isConnector() { return m_bIsConnector; }
	VOID						_setConnected( BOOL val ) { m_bIsConnected = val; }

	SolarDatabase				m_DB;
	DWORD						m_dwSessionIndex;
	std::string					m_strConnectIP;
	WORD						m_wConnectPort;

	BOOL						m_bIsConnector;
	BOOL						m_bIsTriedToConnect;
	DWORD						m_dwLastHeartbeatTick;
	BOOL						m_bIsConnected;
public:
	RESULTMSG					m_ResultMsg[MAX_CHARACTER_LIST_NUM];
	BYTE *						m_pMsg[MAX_CHARACTER_LIST_NUM+1];
	WORD						m_wSize[MAX_CHARACTER_LIST_NUM+1];
};
template <class ObjectOperator>
VOID ServerSession::removeRelatedUsers( ObjectOperator & op )
{
	// 阿阿狼 辑滚俊 楷搬等 蜡历甫 昏力 茄促.
	SUNLOG(eFULL_LOG,  "[ServerSession::removeRelatedUsers] [%s狼	立加秦力]:包访等 蜡历 昏力", GetServerType2String( GetServerType() ) );
	g_DBUserManager.Foreach( op );
}
#endif // __SERVER_SESSION_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -