summaryrefslogtreecommitdiff
path: root/utils/Timer.h
diff options
context:
space:
mode:
authorchatty1993-04-07 11:56:59 +0000
committerchatty1993-04-07 11:56:59 +0000
commit15b7cecb6b5415a0b2e15a0f4079be05c436e80e (patch)
treefe91a03f113a8a87886fcaa8b9b43b100c4b2885 /utils/Timer.h
parent74139ad518678b6ba69b69b702514c92bf74593e (diff)
downloadivy-league-15b7cecb6b5415a0b2e15a0f4079be05c436e80e.zip
ivy-league-15b7cecb6b5415a0b2e15a0f4079be05c436e80e.tar.gz
ivy-league-15b7cecb6b5415a0b2e15a0f4079be05c436e80e.tar.bz2
ivy-league-15b7cecb6b5415a0b2e15a0f4079be05c436e80e.tar.xz
Reshaped to allow the derivation of timers associated to other sources:
Creation of CCuCoreTimer, base class to CcuBaseTimer
Diffstat (limited to 'utils/Timer.h')
-rw-r--r--utils/Timer.h68
1 files changed, 47 insertions, 21 deletions
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 ITEM> 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 <CcuBaseTimer>* OtherActive;
+ CcuListOf <CcuCoreTimer> 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 {