130 lines
3.8 KiB
C++
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 );
|
|
} |