#include "Stdafx.h" #include "ServiceCloser.h" #include "ServiceManager.h" CserviceCloser::CserviceCloser() { m_tServiceCloseOderedTime = 0; m_tServiceCloseTime = 0; } CserviceCloser::~CserviceCloser() { } bool CserviceCloser::IdleProcess() { ScopeLock Lock(m_Sync); if (m_tServiceCloseTime <= 0) return false; __time64_t _tNow; time(&_tNow); if (m_tServiceCloseTime < _tNow) { m_tServiceCloseOderedTime = 0; m_tServiceCloseTime = 0; //ÃÊ´ÜÀ§·Î ¸îºÐµÚ¿¡ ¹ÙÀ̹ÙÀÌÇÒÁö ±¸Çؼ­ return true; } return false; } bool CserviceCloser::ServiceClose(int nMinAfter) { __time64_t _tCloseTime; if (IsClosing(_tCloseTime)) return false; { ScopeLock Lock(m_Sync); __time64_t _tNow; time(&_tNow); m_tServiceCloseOderedTime = _tNow; m_tServiceCloseTime = _tNow + (nMinAfter * 60); //ÃÊ´ÜÀ§·Î ¸îºÐµÚ¿¡ ¹ÙÀ̹ÙÀÌÇÒÁö ±¸Çؼ­ } //¼­ºñ½º¸Å´ÏÀú¸¦ ÅëÇØ °¢¼­¹ö¿¡ ¾Ë¸°´Ù. g_pServiceManager->SendServiceClose(m_tServiceCloseOderedTime, m_tServiceCloseTime); return true; } bool CserviceCloser::CancelServiceClose() { { ScopeLock Lock(m_Sync); if (m_tServiceCloseTime <= 0) return false; m_tServiceCloseOderedTime = 0; m_tServiceCloseTime = 0; //ÃÊ´ÜÀ§·Î ¸îºÐµÚ¿¡ ¹ÙÀ̹ÙÀÌÇÒÁö ±¸Çؼ­ } g_pServiceManager->SendServiceClose(0, 0); return true; } bool CserviceCloser::IsClosing(__time64_t &_tCloseTime) { ScopeLock Lock(m_Sync); _tCloseTime = m_tServiceCloseTime; return m_tServiceCloseTime > 0 ? true : false; }