diff options
author | cyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-06-11 00:01:08 +0000 |
---|---|---|
committer | cyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-06-11 00:01:08 +0000 |
commit | a68b5efe279cafc3b2d81b335871091813c940d2 (patch) | |
tree | 6898771879776d2345ea0234595878823f8f4db7 /include/timers.h | |
parent | 695644d0c479228feb92e2cd9501d15819778c24 (diff) |
Added missing timers.h and timers.cpp from Adam, removed timeout.h and timeout.c.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2318 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'include/timers.h')
-rw-r--r-- | include/timers.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/include/timers.h b/include/timers.h new file mode 100644 index 000000000..fd4f30f50 --- /dev/null +++ b/include/timers.h @@ -0,0 +1,115 @@ +/* Timer include stuff. + * + * (C) 2003-2009 Anope Team + * Contact us at team@anope.org + * + * Please read COPYING and README for furhter details. + * Based on the original code of Epona by Lara. + * Based on the original code of Services by Andy Church. + * + * $Id$ + * + */ + +#ifndef TIMERS_H +#define TIMERS_H + +#include "services.h" +#include <time.h> +#include <algorithm> +#include <stdio.h> +#include <stdlib.h> + +class CoreExport Timer : public Extensible +{ + private: + /** The time this was created + */ + time_t settime; + + /** The triggering time + */ + time_t trigger; + + /** Numer of seconds between triggers + */ + long secs; + + /** True if this is a repeating timer + */ + bool repeat; + + public: + /** Default constructor, initializes the triggering time + * @param time_from_now The number of seconds from now to trigger the timer + * @param now The time now + * @param repeating Repeat this timer every time_from_now if this is true + */ + Timer(long time_from_now, time_t now = time(NULL), bool repeating = false); + + /** Default destructor, does nothing + */ + virtual ~Timer(); + + /** Set the trigger time to a new value + * @param t The new time + */ + void SetTimer(time_t t); + + /** Retrieve the triggering time + * @return The trigger time + */ + const time_t GetTimer(); + + /** Returns true if the timer is set to repeat + * @return Returns true if the timer is set to repeat + */ + const bool GetRepeat(); + + /** Returns the interval between ticks + * @return The interval + */ + const long GetSecs(); + + /** Returns the time this timer was created + * @return The time this timer was created + */ + const time_t GetSetTime(); + + /** Called when the timer ticks + * This should be overridden with something useful + */ + virtual void Tick(time_t ctime) = 0; +}; + +/** 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 timers + */ + static std::vector<Timer *> Timers; + public: + /** Add a timer to the list + * @param T A Timer derived class to add + */ + static void AddTimer(Timer *T); + + /** Deletes a timer + * @param T A Timer derived class to delete */ + static void DelTimer(Timer *T); + + /** Tick all pending timers + * @param time The current time + */ + static void TickTimers(time_t ctime = time(NULL)); + + /** Compares two timers + */ + static bool TimerComparison(Timer *one, Timer *two); +}; + +#endif |