Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+----------------------------------------------------------------------------
//
// File: IdleStat.cpp
//
// Module: CMMON32.EXE
//
// Synopsis: Implementation of class CIdleStatistics
//
// Copyright (c) 1998-1999 Microsoft Corporation
//
// Author: Fengsun Created 10/01/97
//
//+----------------------------------------------------------------------------
#include "cmmaster.h"
#include "IdleStat.h"
//+---------------------------------------------------------------------------
//
// CIdleStatistics::Start()
//
// Synopsis: Start the idle statistics
//
// Arguments: dwThreshold: The idle threshold. Traffic in a minute Less than
// the threshold is considered idle
// dwTimeOut: Idle time out in minisecond
//
// History: fengsun created on 10/1/97
//
//----------------------------------------------------------------------------
void CIdleStatistics::Start(DWORD dwThreshold, DWORD dwTimeOut) { MYDBGASSERT(dwTimeOut != 0);
m_dwThreshold = dwThreshold; m_dwTimeOut = dwTimeOut; m_dwStartIdleTime = 0;
m_DataPointsRing.Reset(); }
//+---------------------------------------------------------------------------
//
// CIdleStatistics::UpdateEveryInterval()
//
// Synopsis: This function should be call every Interval with a updated statistic
//
// Arguments: dwTraffic: the updated statistics
//
//
// History: fengsun created on 10/1/97
//
//----------------------------------------------------------------------------
void CIdleStatistics::UpdateEveryInterval(DWORD dwTraffic) { DWORD dwLast = m_DataPointsRing.GetOldest();
m_DataPointsRing.Add(dwTraffic);
if (dwLast == 0) // Started less than a minute
{ return; }
if (dwTraffic - dwLast > m_dwThreshold) { //
// Not idle
//
m_dwStartIdleTime = 0; } else { if (m_dwStartIdleTime == 0) { //
// We are already idle for 1 minute
//
m_dwStartIdleTime = GetTickCount() - IDLE_INTERVAL; } } }
#ifdef DEBUG
//+----------------------------------------------------------------------------
//
// Function: CIdleStatistics::AssertValid
//
// Synopsis: For debug purpose only, assert the object is valid
//
// Arguments: None
//
// Returns: Nothing
//
// History: Created Header 2/12/98
//
//+----------------------------------------------------------------------------
void CIdleStatistics::AssertValid() const { MYDBGASSERT(m_dwTimeOut <10000*60*1000); // less than 10000 minutes
MYDBGASSERT(m_dwThreshold <= 64*1024); ASSERT_VALID(&m_DataPointsRing); } #endif
|