Files
2022-10-26 12:25:11 +08:00

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;
};