windows-nt/Source/XPSP1/NT/ds/netapi/svcdlls/upssvc/apcsmart/timerman.h

102 lines
3.1 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*
* REVISIONS:
* pcy30Nov92: Changed obj.h to apcobj.h; InsertEventTimer now returns VOID.
* jod07Dec92: Added a pure virtual Wait function to TimerManager.
* pcy11Dec92: Added global _theTimerManager
* ane11Dec92: Moved mainapp.h
* ane16Dec92: Added default constructors for date/time classes
* ane22Dec92: Added constructor to take string of form "8:00 AM"
* ane11Jan93: Changed theTimerList to a sortable list
* ane08Feb93: Added new RemoveEventTimer function
* ajr22Feb93: Changed case of mainApp.h to mainapp.h
* jod05Apr93: Added changes for Deep Discharge
* cad09Jul93: allowing access to findeventtimer
* cad16Sep93: Added -, < operators to DateObj, made some methods const
* cad28Sep93: Made sure destructor(s) virtual
* cad12Oct93: Added == operator
* ajr02May95: Need to stop carrying time in milliseconds
* tjg26Jan98: Added Stop method
* mholly03Dec98 : removed theAccessLock and instead use the Access/Release
* methods already available in theTimerList. Also removed
* the Suspend()/Release()/IsSuspended() methods (not used)
*/
#ifndef _TIMERMAN_H
#define _TIMERMAN_H
extern "C" {
#include <time.h>
}
#include "apc.h"
#include "_defs.h"
_CLASSDEF(TimerManager)
_CLASSDEF(EventTimer)
_CLASSDEF(ProtectedSortedList)
_CLASSDEF(MainApplication)
#include "err.h"
#include "apcobj.h"
#include "update.h"
#include "datetime.h"
//
// Global
//
extern PTimerManager _theTimerManager;
class TimerManager : public UpdateObj {
public:
TimerManager(PMainApplication anApplication);
virtual ~TimerManager();
virtual INT Update(PEvent anEvent);
virtual PEventTimer FindEventTimer(ULONG TimerID);
virtual VOID CancelTimer(ULONG TimerID);
virtual ULONG SetTheTimer(PDateTimeObj aDateTime,
PEvent anEvent,
PUpdateObj anUpdateObj);
virtual ULONG SetTheTimer(ULONG SecondsDelay,
PEvent anEvent,
PUpdateObj anUpdateObj);
ULONG GetTimeEventOccurs(ULONG aTimerId);
virtual VOID Wait(ULONG Delay) = 0;
PDateTimeObj CalculateDailyTime(RTimeObj aTime, ULONG threshold = 0);
PDateTimeObj CalculateWeeklyTime(RWeekObj aDay, RTimeObj aTime);
PDateTimeObj CalculateMonthlyTime (RWeekObj aDay, RTimeObj aTime);
PDateTimeObj CalculateMonthlyTime (PCHAR aDay, PCHAR aTime);
VOID CalculateNextDay (ULONG daysInMonth,
ULONG theMonth,
ULONG &newDay,
ULONG &newMonth,
ULONG &newYear);
virtual VOID Stop() { };
virtual BOOL ExecuteTimer();
protected:
ULONG theSystemTime;
PMainApplication theApplication;
virtual VOID InsertEventTimer(PEventTimer anEventTimer);
virtual VOID RemoveEventTimer(ULONG TimerID);
virtual VOID RemoveEventTimer(PEventTimer anEventTimer);
virtual VOID NotifyClient(PEventTimer anEventTimer);
PProtectedSortedList theTimerList;
};
#endif