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

130 lines
3.8 KiB
C++

#include "StdAfx.h"
#include ".\packethandler.h"
#include "Handler_AT.h"
#include "Handler_SA.h"
#include <Protocol_AT.h>
#include <Protocol_SA.h>
#include <Protocol_SMA.h>
#include "UpdateServerSession.h"
#include "UpdateToolSession.h"
PacketHandler::PacketHandler(void)
{
m_pFunctionMapAT = new FunctionMap;
m_pFunctionMapSA = new FunctionMap;
RegisterHandler();
}
PacketHandler::~PacketHandler(void)
{
if( m_pFunctionMapAT )
{
m_pFunctionMapAT->Release();
delete m_pFunctionMapAT;
}
m_pFunctionMapAT = NULL;
if( m_pFunctionMapSA )
{
m_pFunctionMapSA->Release();
delete m_pFunctionMapSA;
}
m_pFunctionMapSA = NULL;
}
//핸들러를 등록시킨다. 이 클래스가 생성될때.. 하도록 하자.
BOOL PacketHandler::RegisterHandler()
{
RegisterHandler_AT();
RegisterHandler_SA();
return TRUE;
}
BOOL PacketHandler::ParserPacket_AT( UpdateToolSession* pSession, MSG_BASE* pMsg, int nSize )
{
if( !pMsg ) return FALSE;
FUNC_AT* pFunc = (FUNC_AT*)m_pFunctionMapAT->Find( MAKEWORD( pMsg->m_byCategory, pMsg->m_byProtocol) );
if( !pFunc ) return FALSE;
//함수 실행
pFunc->m_fnHandler( pSession, pMsg, nSize );
return TRUE;
}
BOOL PacketHandler::ParserPacket_SA( UpdateServerSession* pSession, MSG_BASE* pMsg, int nSize )
{
if( !pMsg ) return FALSE;
FUNC_SA* pFunc = (FUNC_SA*)m_pFunctionMapSA->Find( MAKEWORD( pMsg->m_byCategory, pMsg->m_byProtocol ) );
if( !pFunc ) return FALSE;
//함수 실행
pFunc->m_fnHandler( pSession, pMsg, nSize );
return TRUE;
}
BOOL PacketHandler::RegisterHandler_AT()
{
//Agent Server Auth
AddHandler_AT( MO_OPERATION, MO_RTTG_PATCHRESULT_ANS, Handler_AT::OnHandler_MSG_MO_RTTG_PATCHRESULT_ANS);
return TRUE;
}
BOOL PacketHandler::RegisterHandler_SA()
{
//Agent Server Auth
AddHandler_SA( SA_PATCH, SA_PATCH_EXECUTE_SYN, Handler_SA::OnHandler_MSG_SA_PATCH_EXECUTE_SYN);
AddHandler_SA( SA_SERVER, SA_SERVER_AUTH_ACK, Handler_SA::OnHandler_MSG_SA_SERVER_AUTH_ACK);
AddHandler_SA( SA_SERVER, SA_SERVER_EXECUTE_SYN, Handler_SA::OnHandler_MSG_SA_SERVER_EXECUTE_SYN);
AddHandler_SA( SA_SERVER, SA_SERVER_TYPE_ACK, Handler_SA::OnHandler_MSG_SA_SERVER_TYPE_ACK);
AddHandler_SA( SA_CHECK, SA_CHECK_LOGFILE_SYN, Handler_SA::OnHandler_MSG_SA_CHECK_LOGFILE_SYN );
AddHandler_SA( SA_SERVER, SA_SERVER_FORCE_DISCONNECT_SYN, Handler_SA::OnHandler_MSG_SA_SERVER_FORCE_DISCONNECT_SYN );
AddHandler_SA( SA_SERVER, SA_SERVER_BACKUP_SYN, Handler_SA::OnHandler_MSG_SA_SERVER_BACKUP_SYN );
AddHandler_SA( SA_SERVER, SA_SERVER_RESTORE_SYN, Handler_SA::OnHandler_MSG_SA_SERVER_RESTORE_SYN );
//Notice
AddHandler_SA( SA_SERVER, SA_SERVER_NOTICE_SYN, Handler_SA::OnHandler_MSG_SA_SERVER_NOTICE_SYN );
AddHandler_SA( SA_SERVER, SA_SERVER_SEND_NOTICE_SYN, Handler_SA::OnHandler_MSG_SA_SERVER_SEND_NOTICE_SYN );
#ifdef __20080312__SOLARAUTH_SERVER_PATCH
AddHandler_SA( SA_SERVER, SA_SOLARSCRIPT_BACKUP_SYN, Handler_SA::OnHandler_MSG_SA_SOLARSCRIPT_BACKUP_SYN );
AddHandler_SA( SA_SERVER, SA_SOLARSCRIPT_RESTORE_SYN, Handler_SA::OnHandler_MSG_SA_SOLARSCRIPT_RESTORE_SYN );
AddHandler_SA( SA_SERVER, SA_SOLARSCRIPT_EXECUTE_SYN, Handler_SA::OnHandler_MSG_SA_SOLARSCRIPT_EXECUTE_SYN );
#endif //__20080312__SOLARAUTH_SERVER_PATCH
#ifdef _NA_006543_20130318_HEARTBEAT
AddHandler_SA(SA_CHECK, SA_CHECK_HEARTBEAT, Handler_SA::OnHandler_MSG_SA_CHECK_HEARTBEAT_ACK);
#endif // _NA_006543_20130318_HEARTBEAT
return TRUE;
}
BOOL PacketHandler::AddHandler_AT( BYTE byCategory, BYTE byMsgType, fnToolHandler pHandler )
{
FUNC_AT* pFuncAT = new FUNC_AT;
pFuncAT->m_wFuncKey = MAKEWORD( byCategory, byMsgType );
pFuncAT->m_fnHandler = pHandler;
return m_pFunctionMapAT->Add( pFuncAT );
}
BOOL PacketHandler::AddHandler_SA( BYTE byCategory, BYTE byMsgType, fnHandler pHandler )
{
FUNC_SA* pFuncAT = new FUNC_SA;
pFuncAT->m_wFuncKey = MAKEWORD( byCategory, byMsgType );
pFuncAT->m_fnHandler = pHandler;
return m_pFunctionMapSA->Add( pFuncAT );
}