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

📄 authhandlermanager.h

📁 五行MMORPG引擎系统V1.0
💻 H
字号:
/*/////////////////////////////////////////////////////////////////////////////

	李亦
	2006.06.
/*//////////////////////////////////////////////////////////////////////////////


#ifndef _AUTHHANDLERMANAGER_H_
#define _AUTHHANDLERMANAGER_H_

#ifndef _TVECTOR_H_
#include "core/tVector.h"
#endif


#ifndef __INC_IOSOCKET_H
#include "server/net/IOSocket.h"
#endif

//#ifndef __INC_ENCRYPTION_H
//#include "server/encrypt/EncryptEngine.h"
//#endif

//#ifndef _BITSTREAM_H_
//#include "core/bitStream.h"
//#endif

#ifndef _EVENT_H_
#include "platform/event.h"
#endif

//#ifndef _PLATFORMMUTEX_H_
//#include "platform/platformMutex.h"
//#endif

//#ifndef _NETGATEWAY_H_
//#include "server/net/netGateway.h"
//#endif

//class NetConnection;

namespace CS
{
class CEncryptionEngine;

#define MAX_AUTH_HANDLERS			8
#define INVALID_AUTH_HANDLER		((CS_AUTHHANDLER *) NULL)



struct PacketBuffer
{
	U32	uSize;
	U32	uPacketType;
	BYTE	szBuffer[MaxPacketDataSize];
};



///////////////////////////////////////////////////////////
//循环队列
class PacketQueueCycle : private Vector<PacketBuffer*>
{
	typedef Vector<PacketBuffer*> Parent;
	S32	m_nTail;	//当前位置
	S32	m_nHeader;	//头位置
public:
	PacketQueueCycle(U32 uSize,U32 uGrow);
	~PacketQueueCycle(){}

	//队列未满,则加到尾部
	//已满,则删除头1元素,加到尾部,打开always标志即可
	BOOL Push(PacketBuffer* pUnit);

	PacketBuffer*	Pop();
	PacketBuffer*	Shift();
	PacketBuffer*	GetHeader();
	PacketBuffer*	GetTail();
	BOOL IsEmpty()	{return m_nHeader == -1;}
	BOOL IsFull();
};



///////////////////////////////////////////////////////////
// Authentiction Handler Manager Functions
#pragma pack(push, 1)
// IO Handler Structure
typedef struct  _tagAuthHandler
{
	int	(RPGAPI2 *pInsert)		(void);
	int	(RPGAPI2 *pRemove)		(void);
	char *(RPGAPI2 *pQuery)			(void);
	void *(RPGAPI2 *pOnListen)		(CIOSocket *pSock, CEncryptionEngine *pEnc, int nUserId);
	void *(RPGAPI2 *pOnConnect)	(CIOSocket *pSock, CEncryptionEngine *pEnc, int nUserId);
	void *(RPGAPI2 *pOnAccept)		(void *pInternal, CIOSocket *pSock, CEncryptionEngine *pEnc);
	int	(RPGAPI2 *pGetUserID)	(void *pInternal);
	int	(RPGAPI2 *pOnClose)		(void *pInternal);
	int	(RPGAPI2 *pOnRecv)		(void *pInternal, CEncryptionEngine *pEnc, BYTE *pData, int nDataLen, BYTE **pInData, int *pnInDataLen);
	int	(RPGAPI2 *pOnSend)		(void *pInternal, CEncryptionEngine *pEnc, BYTE *pData, int nDataLen, BYTE **pOutData, int *pnOutDataLen);
	void	(RPGAPI2 *pFree)			(void *pInternal, BYTE *pBuffer);
	BOOL	(RPGAPI *pValidateCommand)(int nUserId, int nCommand);
} CS_AUTHHANDLER;

#pragma pack(pop)


///////////////////////////////////////////////////////////////////
//CAuthHandlerManager
class CAuthHandlerManager 
{
public:
	
private:
	CS_AUTHHANDLER *m_pAuthHandlers[MAX_AUTH_HANDLERS];
	
public:
	virtual int		Insert(CS_AUTHHANDLER *handler);
	virtual int		Remove(int handlernum);
	virtual char	*Query(int nHandler);
	virtual int		GetHandlerCount(void);

	virtual CS_AUTHHANDLER *GetHandler(int nHandler);
	virtual CS_AUTHHANDLER *GetHandlerByID(char *svID);

public:
	CAuthHandlerManager();
	virtual ~CAuthHandlerManager();
};


};//namespace CS


#endif

⌨️ 快捷键说明

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