56 lines
1.5 KiB
C++
56 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <Singleton.h>
|
|
#include <FunctionMap.h>
|
|
#include <PacketStruct.h>
|
|
|
|
class UserSession;
|
|
class ServerSession;
|
|
|
|
class PacketHandler : public Singleton<PacketHandler>
|
|
{
|
|
public:
|
|
PacketHandler(void);
|
|
~PacketHandler(void);
|
|
|
|
public:
|
|
typedef VOID (*fnUserHandler)( UserSession* pSession, MSG_BASE* pMsg, int nSize );
|
|
typedef VOID (*fnHandler)( ServerSession* pSession, MSG_BASE* pMsg, int nSize );
|
|
|
|
public:
|
|
BOOL RegisterHandler(); //핸들러를 등록시킨다. 이 클래스가 생성될때.. 하도록 하자.
|
|
|
|
BOOL ParserPacket_SM( UserSession* pSession, MSG_BASE* pMsg, int nSize );
|
|
BOOL ParserPacket_SA( ServerSession* pSession, MSG_BASE* pMsg, int nSize );
|
|
BOOL ParserPacket_SMA( ServerSession* pSession, MSG_BASE* pMsg, int nSize );
|
|
|
|
private:
|
|
BOOL RegisterHandler_SM();
|
|
BOOL RegisterHandler_SA();
|
|
BOOL RegisterHandler_SMA();
|
|
|
|
BOOL AddHandler_SM( BYTE byCategory, BYTE byMsgType, fnUserHandler pHandler );
|
|
BOOL AddHandler_SA( BYTE byCategory, BYTE byMsgType, fnHandler pHandler );
|
|
BOOL AddHandler_SMA( BYTE byCategory, BYTE byMsgType, fnHandler pHandler );
|
|
|
|
public:
|
|
struct FUNC_SM : public BASE_FUNC //메니저에서 서버로 오는 패킷들의 핸들러 기본형.
|
|
{
|
|
fnUserHandler m_fnHandler;
|
|
};
|
|
struct FUNC_SA : public BASE_FUNC //Agent에서 서버로 오는 패킷들의 핸들러 기본형.
|
|
{
|
|
fnHandler m_fnHandler;
|
|
};
|
|
struct FUNC_SMA : public BASE_FUNC //마스터에서 서버로 오는 패킷들의 핸들러 기본형.
|
|
{
|
|
fnHandler m_fnHandler;
|
|
};
|
|
|
|
|
|
private:
|
|
FunctionMap* m_pFunctionMapSM;
|
|
FunctionMap* m_pFunctionMapSA;
|
|
FunctionMap* m_pFunctionMapSMA;
|
|
};
|