From 15b7cecb6b5415a0b2e15a0f4079be05c436e80e Mon Sep 17 00:00:00 2001 From: chatty Date: Wed, 7 Apr 1993 11:56:59 +0000 Subject: Reshaped to allow the derivation of timers associated to other sources: Creation of CCuCoreTimer, base class to CcuBaseTimer --- utils/Timer.h | 68 +++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 21 deletions(-) (limited to 'utils/Timer.h') diff --git a/utils/Timer.h b/utils/Timer.h index d361802..77c1b70 100644 --- a/utils/Timer.h +++ b/utils/Timer.h @@ -3,7 +3,7 @@ * * by Stephane Chatty * - * Copyright 1992 + * Copyright 1992-1993 * Centre d'Etudes de la Navigation Aerienne (CENA) * * timers @@ -25,48 +25,74 @@ template class CcuListOf; #include "List.h" #endif -class CcuBaseTimer { -public: - enum timer_status { Active, Inactive }; +class CcuCoreTimer; + +class CcuTimerSet { +friend class CcuCoreTimer; private: -static CcuSignalHandler* TimeOutHandler; -static CcuBaseTimer* FirstActive; + CcuCoreTimer* FirstTimer; #ifndef CPLUS_BUG19 -static CcuListOf * OtherActive; + CcuListOf OtherTimers; #else -static CcuList* OtherActive; + CcuList OtherTimers; #endif + CcuCoreTimer* ExtractNextActive (); +public: +inline CcuTimerSet () : FirstTimer (0), OtherTimers () {} +inline ~CcuTimerSet () {} +}; -static void ClassInit (); -static void HandleSignal (int); -static void SetAlarm (Millisecond); -static void StopAlarm (); -static CcuBaseTimer* ExtractNextActive (); -static int IsInactive (CcuBaseTimer*); + +class CcuCoreTimer { +friend class CcuTimerSet; +public: + enum timer_status { Active, Inactive }; + +protected: +static int IsInactive (CcuCoreTimer*); + + CcuTimerSet* MySet; Millisecond NextDate; Millisecond Period; int PulsesLeft; - timer_status Status; + timer_status StatusFlag; + CcuCoreTimer (Millisecond, int, CcuTimerSet*); + ~CcuCoreTimer (); void Activate (); void Schedule (Millisecond); void Reschedule (); - -protected: +virtual void SetAlarm (Millisecond) = 0; +virtual void StopAlarm () = 0; virtual void Handle (Millisecond); -public: - CcuBaseTimer (Millisecond, int = -1); -virtual ~CcuBaseTimer (); +public: void ChangePeriod (Millisecond first); void Stop (); void Restart (); void Wait (); inline Millisecond GetPeriod () const { return Period; } inline int GetNbPulses () const { return PulsesLeft; } -inline timer_status GetStatus () const { return Status; } +inline timer_status GetStatus () const { return StatusFlag; } +static void Fire (CcuTimerSet*); +}; + +class CcuBaseTimer : public CcuCoreTimer { +private: +static CcuSignalHandler* TimeOutHandler; +static CcuTimerSet* TimerSet; +static void HandleSignal (int); +static void ClassInit (); + +protected: + void SetAlarm (Millisecond); + void StopAlarm (); + +public: + CcuBaseTimer (Millisecond, int = -1); + ~CcuBaseTimer (); }; class CcuTimer : public CcuBaseTimer { -- cgit v1.1