+ std::vector<SlotProxy> slots;
+ Semaphore sem;
+ Mutex mutex;
+
+public:
+ ~Timer();
+
+ /** Adds a timer that will be executed periodically as long as the timeout
+ signal hander returns true. */
+ Slot &add(const TimeDelta &);
+
+ /** Adds a timer that will be executed once at a specific time. The return
+ value of the timeout signal handler is ignored. */
+ Slot &add(const TimeStamp &);
+
+ /** Cancels a previously added timer. */
+ void cancel(Slot &);
+
+ /** Checks all timers, executing any that have timed out. If block is true,
+ waits until one times out.
+
+ Note: If there are no active timers when a blocking tick is executed, it
+ won't return until a timer is added from another thread. */
+ void tick(bool block = true);