DragonNest/Server/ServiceManager/ServiceCloser.cpp

76 lines
3 KiB
C++
Raw Normal View History

2024-12-20 16:56:44 +08:00
<EFBFBD><EFBFBD>
#include "Stdafx.h"
#include "ServiceCloser.h"
#include "ServiceManager.h"
CserviceCloser::CserviceCloser()
{
m_tServiceCloseOderedTime = 0;
m_tServiceCloseTime = 0;
}
CserviceCloser::~CserviceCloser()
{
}
bool CserviceCloser::IdleProcess()
{
ScopeLock <CSyncLock> Lock(m_Sync);
if (m_tServiceCloseTime <= 0)
return false;
__time64_t _tNow;
time(&_tNow);
if (m_tServiceCloseTime < _tNow)
{
m_tServiceCloseOderedTime = 0;
m_tServiceCloseTime = 0; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>t<EFBFBD><EFBFBD>t<EFBFBD>`<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD>t<EFBFBD><EFBFBD>
return true;
}
return false;
}
bool CserviceCloser::ServiceClose(int nMinAfter)
{
__time64_t _tCloseTime;
if (IsClosing(_tCloseTime))
return false;
{
ScopeLock <CSyncLock> Lock(m_Sync);
__time64_t _tNow;
time(&_tNow);
m_tServiceCloseOderedTime = _tNow;
m_tServiceCloseTime = _tNow + (nMinAfter * 60); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>t<EFBFBD><EFBFBD>t<EFBFBD>`<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD>t<EFBFBD><EFBFBD>
}
//<EFBFBD>D<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ<EFBFBD>|<EFBFBD> <EFBFBD><EFBFBD>t<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>.
g_pServiceManager->SendServiceClose(m_tServiceCloseOderedTime, m_tServiceCloseTime);
return true;
}
bool CserviceCloser::CancelServiceClose()
{
{
ScopeLock <CSyncLock> Lock(m_Sync);
if (m_tServiceCloseTime <= 0)
return false;
m_tServiceCloseOderedTime = 0;
m_tServiceCloseTime = 0; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>t<EFBFBD><EFBFBD>t<EFBFBD>`<EFBFBD><EFBFBD><EFBFBD> l<EFBFBD>t<EFBFBD><EFBFBD>
}
g_pServiceManager->SendServiceClose(0, 0);
return true;
}
bool CserviceCloser::IsClosing(__time64_t &_tCloseTime)
{
ScopeLock <CSyncLock> Lock(m_Sync);
_tCloseTime = m_tServiceCloseTime;
return m_tServiceCloseTime > 0 ? true : false;
}