summaryrefslogtreecommitdiff
path: root/utils/Timer.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/Timer.h')
-rw-r--r--utils/Timer.h83
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_ */
+