* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
- * E-mail:
- * <brain@chatspike.net>
- * <Craig@chatspike.net>
+ * InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * See: http://www.inspircd.org/wiki/index.php/Credits
*
- * Written by Craig Edwards, Craig McLure, and others.
* This program is free but copyrighted software; see
* the file COPYING for details.
*
virtual void Tick(time_t TIME) = 0;
};
+
+/** This class manages sets of InspTimers, 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 TimerManager : public Extensible
{
protected:
-
+ /** A group of timers all set to trigger at the same time
+ */
typedef std::vector<InspTimer*> timergroup;
+ /** A map of timergroups, each group has a specific trigger time
+ */
typedef std::map<time_t, timergroup*> timerlist;
private:
+ /** The current timer set, a map of timergroups
+ */
timerlist Timers;
public:
+ /** Tick all pending InspTimers
+ * @param TIME the current system time
+ */
void TickTimers(time_t TIME);
+ /** Add an InspTimer
+ * @param T an InspTimer derived class to add
+ */
void AddTimer(InspTimer* T);
+ /** Delete an InspTimer
+ * @param T an InspTimer derived class to delete
+ */
+ void DelTimer(InspTimer* T);
+ /** Tick any timers that have been missed due to lag
+ * @param TIME the current system time
+ */
void TickMissedTimers(time_t TIME);
};