130 lines
3.8 KiB
C++
130 lines
3.8 KiB
C++
#include "stdafx.h"
|
|
|
|
#include "Logic.PeriodicWork.h"
|
|
#include <PacketStruct_CG.h>
|
|
#include <PacketStruct_CW.h>
|
|
|
|
#include "LogicFlowController.h"
|
|
|
|
#include <Object/WiseUser.h>
|
|
#include <Sessions/ServerSession.AgentServer.h>
|
|
#include <Sessions/ServerSession.WorldServer.h>
|
|
#include <CryptManager_4Client.h>
|
|
|
|
|
|
BOOL IPeriodicWork::DoInit()
|
|
{
|
|
m_pUser->SetPeriodicWork(this);
|
|
m_HEARTBEAT_TIMER_forAGENT.Disabled();
|
|
m_HEARTBEAT_TIMER_forWORLD.Disabled();
|
|
m_CONNECTION_TIMER_forWORLD.Disabled();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL IPeriodicWork::DoProcess()
|
|
{
|
|
if(!(m_pUser && m_pUser->GetPeriodicWork())) return TRUE;
|
|
|
|
UserSessionMgr& rMGR = m_pUser->GetSessionMgr();
|
|
SEND_MESSAGE_BLOCK& rSEND_BLK = m_pUser->SEND_MSG();
|
|
|
|
if(m_HEARTBEAT_TIMER_forAGENT.IsExpired())
|
|
{
|
|
DEBUGGING_CODE_L3("");
|
|
MSG_CG_CONNECTION_HEARTBEAT_SYN& rMsgSYN = rSEND_BLK.InstanceOf<MSG_CG_CONNECTION_HEARTBEAT_SYN>();
|
|
rMGR.SendPacket(AGENT_SESSION, &rMsgSYN, sizeof(rMsgSYN));
|
|
|
|
m_HEARTBEAT_TIMER_forAGENT.SetNextTimeoutByCurTickBased(INTERVAL_HEARTBEAT);
|
|
}
|
|
|
|
if(m_HEARTBEAT_TIMER_forWORLD.IsExpired())
|
|
{
|
|
MSG_CW_HEARTBEAT& rMsgSYN = rSEND_BLK.InstanceOf<MSG_CW_HEARTBEAT>();
|
|
rMGR.SendPacket(WORLD_SESSION, &rMsgSYN, sizeof(rMsgSYN));
|
|
|
|
m_HEARTBEAT_TIMER_forWORLD.SetNextTimeoutByCurTickBased(INTERVAL_HEARTBEAT);
|
|
}
|
|
|
|
if(m_CONNECTION_TIMER_forWORLD.IsExpired())
|
|
{
|
|
ServerSessionWorldServer* pWORLD = (ServerSessionWorldServer*)rMGR.GetSession(WORLD_SESSION);
|
|
if(!pWORLD)
|
|
return TRUE;
|
|
|
|
BOOL bPass = (BOOL)(pWORLD->IsConnected() || pWORLD->IsConnecting());
|
|
if(!bPass)
|
|
{
|
|
DEBUGGING_CODE_L3("");
|
|
MSG_CG_PREPARE_WORLD_CONNECT_SYN& rMsgSYN = rSEND_BLK.InstanceOf<MSG_CG_PREPARE_WORLD_CONNECT_SYN>();
|
|
rMGR.SendPacket(AGENT_SESSION, &rMsgSYN, sizeof(rMsgSYN));
|
|
|
|
m_CONNECTION_TIMER_forWORLD.SetNextTimeoutByCurTickBased(INTERVAL_WORLD_CONNECT_SYN);
|
|
}
|
|
}
|
|
|
|
//BYTE* rpSendingData;
|
|
//WORD rwSendingSize;
|
|
//ISecureWorkNode* pWORKNODE = CryptManager::GetISecureWorkNode();
|
|
//if(pWORKNODE->DoEarlyProcess(rpSendingData, rwSendingSize))
|
|
// rMSG.SendPacket(AGENT_SESSION, rpSendingData, rwSendingSize);
|
|
//if(pWORKNODE->DoLatelyProcess(rpSendingData, rwSendingSize))
|
|
// rMSG.SendPacket(AGENT_SESSION, rpSendingData, rwSendingSize);
|
|
|
|
#ifdef __NA000630_070817_MOLA_5th_UPDATE
|
|
DWORD dwDeltaTick = GetTickCount();
|
|
ISecureWorkNode::Update(dwDeltaTick);
|
|
#endif //
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL IPeriodicWork::IsComplete()
|
|
{
|
|
return (BOOL)!(m_pUser && m_pUser->GetPeriodicWork());
|
|
}
|
|
|
|
BOOL IPeriodicWork::DoRelease()
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
void IPeriodicWork::OnMsg(sSIG_MSG* pSIG_MSG)
|
|
{
|
|
sSIG_WISEBASE& rSIG_BASE = *(sSIG_WISEBASE*)pSIG_MSG;
|
|
if(eSIG_WISEMSG::NOTIFY_SIGNAL != rSIG_BASE.SIGTYPE())
|
|
return;
|
|
|
|
sSIG_NOTIFY& rNOTIFY = *(sSIG_NOTIFY*)pSIG_MSG;
|
|
eWISESUBTYPE eSubType = rNOTIFY.SUBTYPE();
|
|
|
|
switch(eSubType)
|
|
{
|
|
case sSIG_NOTIFY::NTF_SESSION_ON_CONNECTED_AGENTSERVER:
|
|
m_HEARTBEAT_TIMER_forAGENT.SetNextTimeoutByCurTickBased(INTERVAL_HEARTBEAT);
|
|
m_CONNECTION_TIMER_forWORLD.SetNextTimeoutByCurTickBased(INTERVAL_WORLD_CONNECT_SYN);
|
|
break;
|
|
case sSIG_NOTIFY::NTF_SESSION_ON_CONNECTED_WORLDSERVER:
|
|
m_HEARTBEAT_TIMER_forWORLD.SetNextTimeoutByCurTickBased(INTERVAL_HEARTBEAT);
|
|
m_CONNECTION_TIMER_forWORLD.Disabled();
|
|
break;
|
|
case sSIG_NOTIFY::NTF_SESSION_ON_DISCONNECTED_AGENTSERVER:
|
|
m_HEARTBEAT_TIMER_forAGENT.Disabled();
|
|
m_CONNECTION_TIMER_forWORLD.Disabled();
|
|
break;
|
|
case sSIG_NOTIFY::NTF_SESSION_ON_DISCONNECTED_WORLDSERVER:
|
|
m_HEARTBEAT_TIMER_forWORLD.Disabled();
|
|
m_CONNECTION_TIMER_forWORLD.SetNextTimeoutByCurTickBased(INTERVAL_WORLD_CONNECT_SYN);
|
|
break;
|
|
case sSIG_NOTIFY::NTF_USER_RELEASED:
|
|
m_pUser = NULL;
|
|
break;
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
|