void FStatsWriteFile::NewFrame( int64 TargetFrame ) { SCOPE_CYCLE_COUNTER( STAT_StreamFile ); // Currently raw stat files are limited to 120 frames. enum { MAX_NUM_RAWFRAMES = 120, }; if( Header.bRawStatsFile ) { if( FCommandStatsFile::FirstFrame == -1 ) { FCommandStatsFile::FirstFrame = TargetFrame; } else if( TargetFrame > FCommandStatsFile::FirstFrame + MAX_NUM_RAWFRAMES ) { FCommandStatsFile::Stop(); FCommandStatsFile::FirstFrame = -1; return; } } WriteFrame( TargetFrame ); SendTask(); }
void CXTaskDlg::CheckForUpdate() { CXsvrDlg *pDlg = (CXsvrDlg*)AfxGetMainWnd(); CTime today; today = CTime::GetCurrentTime(); CString strNow = today.Format(_T("%Y-%m-%d %H:%M:%S")); char *buf = (LPSTR)(LPCTSTR)strNow; XTask task; task.SetDate(buf); task.SetTime(buf); list<XTask*>::iterator iLast = m_listTask.end(); for (list<XTask*>::iterator iTask = m_listTask.begin(); iTask != iLast;) { // 是时候执行任务了。 if ( (task.nDate > (*iTask)->nDate) | ((task.nDate == (*iTask)->nDate)&&task.nTime >= (*iTask)->nTime)) { // 日期已过 pDlg->AddErrorInfo((*iTask)->szContent); XTask *p = (*iTask); m_listTask.remove(*iTask++); SendTask(p->nID, p->szContent); DeleteTask(p->nID); if (p->nFrequency == 0) { CTime timeTomorrow(today.GetYear(), today.GetMonth(), today.GetDay()+1, today.GetHour(), today.GetMinute(), today.GetSecond()); CString strTomorrow = timeTomorrow.Format(_T("%Y-%m-%d %H:%M:%S")); AddNewTask(strTomorrow, p->szContent, 0); pDlg->AddErrorInfo(strTomorrow); } else { DeleteReceiver(p->nID); } delete p; } else { ++ iTask; } } // 任务完成后,重新启动计时器 SetTimer(TIMER_SCAN_DATABASE, TIMER_SCAN_DATABASE_TEIM, NULL); }
void FStatsWriteFile::Stop() { if( IsValid() ) { StatsMasterEnableSubtract(); RemoveNewFrameDelegate(); SendTask(); SendTask(); Finalize(); File->Close(); delete File; File = nullptr; UE_LOG( LogStats, Log, TEXT( "Wrote stats file: %s" ), *ArchiveFilename ); FCommandStatsFile::LastFileSaved = ArchiveFilename; } }