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

45 lines
1.2 KiB
C++

#pragma once
#include <FunctionMap.h>
#include <Singleton.h>
#include <PacketStruct.h>
class UpdateServerSession;
class UpdateToolSession;
class PacketHandler : public Singleton<PacketHandler>
{
public:
PacketHandler(void);
~PacketHandler(void);
public:
typedef VOID (*fnToolHandler)( UpdateToolSession* pSession, MSG_BASE* pMsg, int nSize );
typedef VOID (*fnHandler)( UpdateServerSession* pSession, MSG_BASE* pMsg, int nSize );
public:
BOOL RegisterHandler(); //핸들러를 등록시킨다. 이 클래스가 생성될때.. 하도록 하자.
BOOL ParserPacket_AT( UpdateToolSession* pSession, MSG_BASE* pMsg, int nSize );
BOOL ParserPacket_SA( UpdateServerSession* pSession, MSG_BASE* pMsg, int nSize );
private:
BOOL RegisterHandler_AT();
BOOL RegisterHandler_SA();
BOOL AddHandler_AT( BYTE byCategory, BYTE byMsgType, fnToolHandler pHandler );
BOOL AddHandler_SA( BYTE byCategory, BYTE byMsgType, fnHandler pHandler );
public:
struct FUNC_AT : public BASE_FUNC //TOOL에서 Agent로 오는 패킷들의 핸들러 기본형.
{
fnToolHandler m_fnHandler;
};
struct FUNC_SA : public BASE_FUNC //TOOL에서 Agent로 오는 패킷들의 핸들러 기본형.
{
fnHandler m_fnHandler;
};
private:
FunctionMap* m_pFunctionMapAT;
FunctionMap* m_pFunctionMapSA;
};