www.pudn.com > back.rar > serverbase.h


#ifndef _SERVERBASE_H_ 
#define _SERVERBASE_H_ 
 
 
 
class CConnectManage :public CIOCPToken 
{ 
public: 
	virtual void OnConnected(int iClient);		 
	virtual void OnDisconnected(int iClient); 
}; 
 
class CServerManage : public CMultiToken 
{ 
public: 
	CServerManage(); 
	virtual void OnConnected(int iClient, int nServer); 
	virtual void OnDisConnected(int iClient, int nServer); 
}; 
 
//IOCPNet basic base class  
class CServerBase 
{ 
 
public: 
	CServerBase();   
	~CServerBase(){}  
  
	//initialize 
public: 
			BOOL ServerStart(); 
	virtual BOOL Init() {return TRUE;} 
protected: 
			BOOL _Init();	 
			BOOL _Start(); 
 
 
	//process 
public: 
			DWORD	GetFrame() {return m_dwFrames;} 
			BOOL	SendToServer(int nServer,BYTE* pData,int size,BOOL bExtra = FALSE); 
			BOOL	SendToClient(int iClient,BYTE* pData,int size,BOOL bExtra = FALSE); 
			void	Stop() {DWORD dwExit = 2;TerminateThread(m_hThread,dwExit);g_IOCPNet.Stop();} 
	virtual void	UserProcess() {}	 
			void	Process(); 
	const	CServerManage*	GetServerManage(){ return &m_ServerManage;} 
protected: 
	virtual void	MsgProcess(int iClient,BYTE* pPacket) {} 
			DWORD   m_ThreadID; 
			HANDLE	m_hThread; 
			DWORD   m_dwFrames; 
			void	ServerPing(); 
 
	//tokens 
protected: 
	CServerManage  m_ServerManage; 
	CConnectManage m_ConnectManage; 
 
 
	//tick manage 
public: 
	virtual void TickManager_500 () {} 
	virtual void TickManager_1000 () {} 
	virtual void TickManager_1500 () {} 
	virtual void TickManager_2000 () {} 
	virtual void TickManager_2500 () {} 
	virtual void TickManager_3000 () {} 
protected: 
			void   _TickManager(); 
			void   _TickManager_500 (); 
			void   _TickManager_1000 (); 
			void   _TickManager_1500 (); 
			void   _TickManager_2000 (); 
			void   _TickManager_2500 (); 
			void   _TickManager_3000 (); 
	 
			DWORD  m_dwCurTick; 
			DWORD  m_dwTickManager_500;		//0.5 sec manage 
			DWORD  m_dwTickManager_1000;	//1   sec manage 
			DWORD  m_dwTickManager_1500;	//1.5 sec manage 
			DWORD  m_dwTickManager_2000;	//2.0 sec manage 
			DWORD  m_dwTickManager_2500;	//2.5 sec manage 
			DWORD  m_dwTickManager_3000;	//3.0 sec manage 
	 
			DWORD   m_ReadCounts;			//Read Packet Counts /sec 
			DWORD   m_WriteCounts;			//Write Packet Counts /sec 
			DWORD   m_ReadBytes;			//Read bytes / sec 
			DWORD   m_WriteBytes;			//Write bytes / sec 
}; 
 
#endif