diff options
author | chatty | 1992-12-15 10:55:33 +0000 |
---|---|---|
committer | chatty | 1992-12-15 10:55:33 +0000 |
commit | 3a4838bed13b767132cbdf06364b2658da6cc356 (patch) | |
tree | f6d7b33264c4634d069409ba3169126823ac4090 /utils/Timer.h | |
parent | 23abb4b87c7e40ed259dd02f653516f60e55ade4 (diff) | |
download | ivy-league-3a4838bed13b767132cbdf06364b2658da6cc356.zip ivy-league-3a4838bed13b767132cbdf06364b2658da6cc356.tar.gz ivy-league-3a4838bed13b767132cbdf06364b2658da6cc356.tar.bz2 ivy-league-3a4838bed13b767132cbdf06364b2658da6cc356.tar.xz |
Initial revision
Diffstat (limited to 'utils/Timer.h')
-rw-r--r-- | utils/Timer.h | 83 |
1 files changed, 83 insertions, 0 deletions
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 ITEM> 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 <CcuBaseTimer>* 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_ */ + |