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.
|
|
#include "precomp.h"
#include "fsdiag.h"
DEBUG_FILEZONE(ZONE_T120_GCCNC); /*
* alarm.cpp * * Copyright (c) 1995 by Databeam Corporation, Lexington, KY * * Abstract: * This is the implementation file for the Alarm class. Objects of this * class are used when the creator wishes to make sure that a certain * activity doesn't exceed a certain amount of time. * * By convention, an Alarm object is created with the time limitation * passed in as the only parameter to the constructor. The creator can * then periodically ask the Alarm object if it has expired. This hides * all time maintenance code from the creator. * * Note that the Alarm class is PASSIVE, meaning that it will not call * back into its creator when the specified time is exceeded. This * capability could be added at a future data. if desirable. Right now, * the creator MUST call into an Alarm object to ask it if it has expired. * * Private Data: * Duration * This refers to the original duration of the alarm. It is kept * around to allow the creator to reset the alarm without having to * respecify the duration. * Expiration_Time * This is the time (in clock ticks) upon which the alarm will expire. * Whenever the alarm is asked if it has expired, it checks the current * system clock against this value. * Expired * This is a boolean flag that indicates whether or not the alarm has * already expired. This prevents the object from repeatedly checking * the system clock if the timer has already expired. * * Caveats: * None * * Author: * James P. Galvin, Jr. * * Revision History: * 09JAN95 jpg Original */
#include "alarm.h"
/*
* Alarm () * * Public * * Function Description * This is the constructor for the Alarm class. It calls Set to initialize * all instance variables, and calculate the first expiration time value * based on the specified duration. */ CAlarm::CAlarm(UINT nDuration) { Set(nDuration); }
/*
* ~Alarm () * * Public * * Function Description * This is the destructor for the Alarm class. It currently does nothing. */
/*
* void Set () * * Public * * Function Description * This function initializes the alarm duration instance variable and * calls Reset to ready the alarm for use. */ void CAlarm::Set(UINT nDuration) { m_nDuration = nDuration;
/*
* Call Reset to initialize remaining instance variables and ready the * alarm for use. */ Reset(); }
/*
* void Reset () * * Public * * Function Description * This function calculate an expiration time value based on the specified * duration and marks the alarm as unexpired. */ void CAlarm::Reset(void) { /*
* Determine the expiration time by adding the alarm duration to the * current time. */ m_nStartTime = (UINT) ::GetTickCount(); m_fExpired = FALSE; }
/*
* void Expire () * * Public * * Function Description * This function can be used to expire an alarm prematurely. This might * be useful if the alarm is used to determine whether or not to perform * an action, and the caller decides to inhibit the action for reasons * other than time. */
/*
* BOOL IsExpired () * * Public * * Function Description * This function is used to check an alarm to see if it has expired. */ BOOL CAlarm::IsExpired(void) { /*
* See if the alarm has already expired before checking it again. */ // LONCHANC: The alarm object is totally bogus. We check for expiration
// only when we are sending a PDU out. However, when it expires, it is
// possible that there is no PDU to send. In this case, no one will know
// this alarm is expired. This means some actions will not be taken in time.
// Now, make it always expired because it did not work at all before and
// most of time it returned "expired."
#if 1
m_fExpired = TRUE; #else
if (! m_fExpired) { if (m_nStartTime + m_nDuration <= (UINT) ::GetTickCount()) { m_fExpired = TRUE; } } #endif
return m_fExpired; }
|