2024-12-21 10:04:04 +08:00
|
|
|
|
|
|
|
|
|
|
#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; //<2F>ʴ<EFBFBD><CAB4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>еڿ<D0B5> <20><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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); //<2F>ʴ<EFBFBD><CAB4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>еڿ<D0B5> <20><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD>
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>Ŵ<F1BDBAB8><C5B4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˸<EFBFBD><CBB8><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; //<2F>ʴ<EFBFBD><CAB4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>еڿ<D0B5> <20><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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;
|
|
|
|
|
|
}
|