From 3a4838bed13b767132cbdf06364b2658da6cc356 Mon Sep 17 00:00:00 2001 From: chatty Date: Tue, 15 Dec 1992 10:55:33 +0000 Subject: Initial revision --- utils/Timer.h | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 utils/Timer.h (limited to 'utils/Timer.h') diff --git a/utils/Timer.h b/utils/Timer.h new file mode 100644 index 0000000..d361802 --- /dev/null +++ b/utils/Timer.h @@ -0,0 +1,83 @@ +/* + * CENA C++ Utilities + * + * by Stephane Chatty + * + * Copyright 1992 + * Centre d'Etudes de la Navigation Aerienne (CENA) + * + * timers + * + * $Id$ + * $CurLog$ + */ + +#ifndef Timer_H_ +#define Timer_H_ + +#include "cplus_bugs.h" +#include "Time.h" + +class CcuSignalHandler; +#if 0 +template class CcuListOf; +#else +#include "List.h" +#endif + +class CcuBaseTimer { +public: + enum timer_status { Active, Inactive }; + +private: +static CcuSignalHandler* TimeOutHandler; +static CcuBaseTimer* FirstActive; +#ifndef CPLUS_BUG19 +static CcuListOf * OtherActive; +#else +static CcuList* OtherActive; +#endif + +static void ClassInit (); +static void HandleSignal (int); +static void SetAlarm (Millisecond); +static void StopAlarm (); +static CcuBaseTimer* ExtractNextActive (); +static int IsInactive (CcuBaseTimer*); + + Millisecond NextDate; + Millisecond Period; + int PulsesLeft; + timer_status Status; + + void Activate (); + void Schedule (Millisecond); + void Reschedule (); + +protected: +virtual void Handle (Millisecond); + +public: + CcuBaseTimer (Millisecond, int = -1); +virtual ~CcuBaseTimer (); + 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; } +}; + +class CcuTimer : public CcuBaseTimer { +protected: + void (*Handler) (Millisecond); + void Handle (Millisecond); + +public: + CcuTimer (Millisecond, void (*) (Millisecond), int = -1); + ~CcuTimer (); +}; + +#endif /* Timer_H_ */ + -- cgit v1.1