📄 authhandlermanager.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 + -