From: brain Date: Thu, 10 Aug 2006 00:02:31 +0000 (+0000) Subject: Relocate timer stuff into TimerManager class X-Git-Tag: v2.0.23~7475 X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=ad3c37e38c6c170c1f7cc3232db748ebdc62aa94;p=user%2Fhenk%2Fcode%2Finspircd.git Relocate timer stuff into TimerManager class git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4827 e03df62e-2008-0410-955e-edbf42e46eb7 --- diff --git a/include/dynamic.h b/include/dynamic.h index a8b7392bf..386ebb376 100644 --- a/include/dynamic.h +++ b/include/dynamic.h @@ -22,8 +22,6 @@ typedef void * (initfunc) (void); #include "inspircd_config.h" -extern void do_log(int, const char*, ...); - class DLLManager { public: diff --git a/include/inspircd.h b/include/inspircd.h index f901200cd..7cd1d973d 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -116,6 +116,7 @@ class InspIRCd : public classbase chan_hash chanlist; std::vector local_users; DNS* Res; + TimerManager* Timers; void AddServerName(const std::string &servername); const char* FindServerNamePtr(const std::string &servername); diff --git a/include/modules.h b/include/modules.h index b0d249c7c..aca4f06ea 100644 --- a/include/modules.h +++ b/include/modules.h @@ -1357,10 +1357,6 @@ class Server : public Extensible */ virtual bool IsNick(const std::string &nick); - /** Adds an InspTimer which will trigger at a future time - */ - virtual void AddTimer(InspTimer* T); - /** Attempts to look up a nick and return a pointer to it. * This function will return NULL if the nick does not exist. */ diff --git a/include/timer.h b/include/timer.h index ec00abe4f..4d1eee470 100644 --- a/include/timer.h +++ b/include/timer.h @@ -54,8 +54,21 @@ class InspTimer : public Extensible virtual void Tick(time_t TIME) = 0; }; -void TickTimers(time_t TIME); -void AddTimer(InspTimer* T); -void TickMissedTimers(time_t TIME); +class TimerManager : public Extensible +{ + protected: + + typedef std::vector timergroup; + typedef std::map timerlist; + + private: + + timerlist Timers; + + public: + void TickTimers(time_t TIME); + void AddTimer(InspTimer* T); + void TickMissedTimers(time_t TIME); +}; #endif diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 6b4800887..a4b6181ab 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -293,6 +293,7 @@ InspIRCd::InspIRCd(int argc, char** argv) OpenLog(argv, argc); this->stats = new serverstats(); this->Parser = new CommandParser(); + this->Timers = new TimerManager(); Config->ClearStack(); Config->Read(true, NULL); CheckRoot(); @@ -701,7 +702,7 @@ void InspIRCd::DoOneIteration(bool process_module_sockets) { FOREACH_MOD(I_OnBackgroundTimer,OnBackgroundTimer(TIME)); } - TickMissedTimers(TIME); + Timers->TickMissedTimers(TIME); expire_run = true; return; } @@ -735,7 +736,7 @@ void InspIRCd::DoOneIteration(bool process_module_sockets) if (process_module_sockets) this->DoSocketTimeouts(TIME); - TickTimers(TIME); + Timers->TickTimers(TIME); /* Call the socket engine to wait on the active * file descriptors. The socket engine has everything's diff --git a/src/modules.cpp b/src/modules.cpp index 22083fa66..1566ac5d7 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -375,11 +375,6 @@ chanrec* Server::GetChannelIndex(long index) return NULL; } -void Server::AddTimer(InspTimer* T) -{ - ::AddTimer(T); -} - void Server::SendOpers(const std::string &s) { WriteOpers("%s",s.c_str()); diff --git a/src/modules/m_safelist.cpp b/src/modules/m_safelist.cpp index 45177805e..000d1e7d6 100644 --- a/src/modules/m_safelist.cpp +++ b/src/modules/m_safelist.cpp @@ -26,6 +26,8 @@ using namespace std; extern time_t TIME; +extern InspIRCd* ServerInstance; + class ListData : public classbase { public: @@ -131,7 +133,7 @@ class ListTimer : public InspTimer } ListTimer* MyTimer = new ListTimer(1,Srv); - Srv->AddTimer(MyTimer); + ServerInstance->Timers->AddTimer(MyTimer); } }; @@ -146,7 +148,7 @@ class ModuleSafeList : public Module Srv = Me; MyTimer = new ListTimer(1,Srv); - Srv->AddTimer(MyTimer); + ServerInstance->Timers->AddTimer(MyTimer); } virtual ~ModuleSafeList() diff --git a/src/timer.cpp b/src/timer.cpp index f35a9c67b..2b30b478c 100644 --- a/src/timer.cpp +++ b/src/timer.cpp @@ -22,12 +22,7 @@ #include "helperfuncs.h" #include "timer.h" -typedef std::vector timergroup; -typedef std::map timerlist; - -timerlist Timers; - -void TickTimers(time_t TIME) +void TimerManager::TickTimers(time_t TIME) { timerlist::iterator found = Timers.find(TIME); @@ -57,7 +52,7 @@ void TickTimers(time_t TIME) * If you move your clock BACK, and your timers move further ahead as a result, * then tough titty you'll just have to wait. */ -void TickMissedTimers(time_t TIME) +void TimerManager::TickMissedTimers(time_t TIME) { for (time_t n = TIME-1; n > TIME-120; n--) { @@ -78,7 +73,7 @@ void TickMissedTimers(time_t TIME) } } -void AddTimer(InspTimer* T) +void TimerManager::AddTimer(InspTimer* T) { timergroup* x = NULL; @@ -96,3 +91,4 @@ void AddTimer(InspTimer* T) x->push_back(T); } +