+
+/** This class manages sets of Timers, and triggers them at their defined times.
+ * This will ensure timers are not missed, as well as removing timers that have
+ * expired and allowing the addition of new ones.
+ */
+class CoreExport TimerManager : public Extensible
+{
+ protected:
+ /** A list of all pending timers
+ */
+ std::vector<Timer *> Timers;
+
+ /** Creating server instance
+ */
+ InspIRCd* ServerInstance;
+ public:
+ /** Constructor
+ */
+ TimerManager(InspIRCd* Instance);
+
+ /** Tick all pending Timers
+ * @param TIME the current system time
+ */
+ void TickTimers(time_t TIME);
+
+ /** Add an Timer
+ * @param T an Timer derived class to add
+ * @param secs_from_now You may set this to the number of seconds
+ * from the current time when the timer will tick, or you may just
+ * leave this unset and the values set by the Timers constructor
+ * will be used. This is used internally for re-triggering repeating
+ * timers.
+ */
+ void AddTimer(Timer *T);
+
+ /** Delete an Timer
+ * @param T an Timer derived class to delete
+ */
+ void DelTimer(Timer* T);
+
+ /** Compares two timers
+ */
+ static bool TimerComparison( Timer *one, Timer*two);
+};