初步修复
This commit is contained in:
parent
8fc4357cc6
commit
e4714f3f0e
46705 changed files with 12004901 additions and 0 deletions
126
Server/ServerCommon/DNLogConnection.cpp
Normal file
126
Server/ServerCommon/DNLogConnection.cpp
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
#include "StdAfx.h"
|
||||
#include "DNLogConnection.h"
|
||||
#include "DNIocpManager.h"
|
||||
#include "Log.h"
|
||||
#include "Util.h"
|
||||
#include "DNServerPacket.h"
|
||||
#if defined(PRE_ADD_LOGSERVER_HEARTBEAT)
|
||||
#include "DNServerProtocol.h"
|
||||
#endif
|
||||
|
||||
#if defined( _GAMESERVER )
|
||||
#include "DNGameRoom.h"
|
||||
#include "DNPvPGameRoom.h"
|
||||
#include "DNUserSession.h"
|
||||
#include "PvPGameMode.h"
|
||||
#include "DnPlayerActor.h"
|
||||
#endif
|
||||
|
||||
CDNLogConnection* g_pLogConnection;
|
||||
|
||||
CDNLogConnection::CDNLogConnection(void) : m_dwReconnectTick(0)
|
||||
#if defined(PRE_ADD_LOGSERVER_HEARTBEAT)
|
||||
, m_dwLastRecvTick(0)
|
||||
, m_dwSendSYNTick(0)
|
||||
, m_dwSendSYNACKTick(0)
|
||||
#endif
|
||||
{
|
||||
#if defined(_FINAL_BUILD)
|
||||
Init( 1024*1024, 1024*1024 );
|
||||
#else // #if defined(_FINAL_BUILD)
|
||||
Init( 1024*100, 1024*100 );
|
||||
#endif // #if defined(_FINAL_BUILD)
|
||||
}
|
||||
|
||||
CDNLogConnection::~CDNLogConnection(void)
|
||||
{
|
||||
}
|
||||
|
||||
#if defined(PRE_ADD_LOGSERVER_HEARTBEAT)
|
||||
int CDNLogConnection::MessageProcess(int iMainCmd, int iSubCmd, char *pData, int iLen)
|
||||
{
|
||||
if( iMainCmd == LOG_HEARTBEAT )
|
||||
{
|
||||
switch(iSubCmd)
|
||||
{
|
||||
case SYN:
|
||||
{
|
||||
m_dwSendSYNACKTick = timeGetTime();
|
||||
AddSendData(LOG_HEARTBEAT, SYN_ACK, NULL, 0);
|
||||
}
|
||||
break;
|
||||
case SYN_ACK:
|
||||
{
|
||||
m_dwSendSYNTick = 0;
|
||||
AddSendData(LOG_HEARTBEAT, ACK, NULL, 0);
|
||||
}
|
||||
break;
|
||||
case ACK:
|
||||
{
|
||||
m_dwSendSYNACKTick = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
m_dwLastRecvTick = timeGetTime();
|
||||
return ERROR_NONE;
|
||||
}
|
||||
|
||||
void CDNLogConnection::ResetLiveCheck()
|
||||
{
|
||||
m_dwSendSYNTick = 0;
|
||||
m_dwSendSYNACKTick = 0;
|
||||
m_dwLastRecvTick = 0;
|
||||
};
|
||||
|
||||
void CDNLogConnection::LiveCheck(DWORD CurTick)
|
||||
{
|
||||
if( !GetActive() || GetConnecting() )
|
||||
return;
|
||||
|
||||
if( m_dwSendSYNTick > 0 && m_dwSendSYNTick + 1000*60*2 < CurTick ||
|
||||
m_dwSendSYNACKTick > 0 && m_dwSendSYNACKTick + 1000*60*2 < CurTick ) //µü 2ºÐ¸¸ ±â´Ù¸².
|
||||
{
|
||||
g_Log.Log(LogType::_FILELOG, L"[LogServer Disconnected]Heart failure!!\r\n");
|
||||
if(m_pSocketContext)
|
||||
DetachConnection(L"[LogServer]Heart failure!\r\n");
|
||||
ResetLiveCheck();
|
||||
m_dwReconnectTick = CurTick;
|
||||
return;
|
||||
}
|
||||
|
||||
if( m_dwSendSYNTick == 0 && m_dwLastRecvTick + CHECK_TCP_PING_TICK < CurTick )
|
||||
{
|
||||
m_dwSendSYNTick = CurTick;
|
||||
AddSendData(LOG_HEARTBEAT, SYN, NULL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void CDNLogConnection::Reconnect(DWORD CurTick)
|
||||
{
|
||||
#if defined(PRE_ADD_LOGSERVER_HEARTBEAT)
|
||||
LiveCheck(CurTick);
|
||||
#endif
|
||||
|
||||
if (m_dwReconnectTick + 5000 < CurTick){
|
||||
m_dwReconnectTick = CurTick;
|
||||
|
||||
if (!GetActive() && !GetConnecting() )
|
||||
{
|
||||
SetConnecting(true);
|
||||
if (g_pIocpManager->AddConnectionEx(this, CONNECTIONKEY_LOG, m_szIP, m_wPort) < 0)
|
||||
{
|
||||
SetConnecting(false);
|
||||
g_Log.Log(LogType::_FILELOG, L"LogServer Fail(%S, %d)\r\n", m_szIP, m_wPort);
|
||||
}
|
||||
else {
|
||||
g_Log.Log(LogType::_FILELOG, L"LogServer(%S, %d) Connecting..\r\n", m_szIP, m_wPort);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue