summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorattilamolnar <attilamolnar@hush.com>2013-04-09 23:51:06 +0200
committerattilamolnar <attilamolnar@hush.com>2013-04-21 18:00:09 +0200
commit1638ee61936bc91758be39c3463c6e46d0d655e7 (patch)
tree3ad0357587a58bc3845cb3a328bf3e95fadf2923 /src/modules
parente9e75e50bc25e67af22dd88b39b12217a553d5cb (diff)
Timer changes and TimerManager enhancements
Timer::Tick() now has a bool return value: if false is returned the timer is deleted using operator delete, otherwise, if it's a repeating timer then it's rescheduled (readded) Timers are removed from the TimerManager automatically at destruction Timers are now stored in a multimap instead of a sorted vector
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/extra/m_pgsql.cpp13
-rw-r--r--src/modules/m_spanningtree/cachetimer.cpp5
-rw-r--r--src/modules/m_spanningtree/cachetimer.h2
-rw-r--r--src/modules/m_spanningtree/main.cpp3
4 files changed, 15 insertions, 8 deletions
diff --git a/src/modules/extra/m_pgsql.cpp b/src/modules/extra/m_pgsql.cpp
index 6d2e0c88a..4690f9851 100644
--- a/src/modules/extra/m_pgsql.cpp
+++ b/src/modules/extra/m_pgsql.cpp
@@ -62,7 +62,7 @@ class ReconnectTimer : public Timer
ReconnectTimer(ModulePgSQL* m) : Timer(5, ServerInstance->Time(), false), mod(m)
{
}
- virtual void Tick(time_t TIME);
+ virtual bool Tick(time_t TIME);
};
struct QueueItem
@@ -504,6 +504,11 @@ class ModulePgSQL : public Module
ConnMap connections;
ReconnectTimer* retimer;
+ ModulePgSQL()
+ : retimer(NULL)
+ {
+ }
+
void init()
{
ReadConf();
@@ -514,8 +519,7 @@ class ModulePgSQL : public Module
virtual ~ModulePgSQL()
{
- if (retimer)
- ServerInstance->Timers->DelTimer(retimer);
+ delete retimer;
ClearAllConnections();
}
@@ -594,10 +598,11 @@ class ModulePgSQL : public Module
}
};
-void ReconnectTimer::Tick(time_t time)
+bool ReconnectTimer::Tick(time_t time)
{
mod->retimer = NULL;
mod->ReadConf();
+ return false;
}
void SQLConn::DelayReconnect()
diff --git a/src/modules/m_spanningtree/cachetimer.cpp b/src/modules/m_spanningtree/cachetimer.cpp
index 6703e84b1..4fdc7056f 100644
--- a/src/modules/m_spanningtree/cachetimer.cpp
+++ b/src/modules/m_spanningtree/cachetimer.cpp
@@ -24,12 +24,13 @@
/* $ModDep: m_spanningtree/cachetimer.h m_spanningtree/utils.h */
-CacheRefreshTimer::CacheRefreshTimer(SpanningTreeUtilities *Util) : Timer(3600, ServerInstance->Time(), true), Utils(Util)
+CacheRefreshTimer::CacheRefreshTimer(SpanningTreeUtilities* Util) : Timer(3600, ServerInstance->Time(), true), Utils(Util)
{
}
-void CacheRefreshTimer::Tick(time_t TIME)
+bool CacheRefreshTimer::Tick(time_t TIME)
{
Utils->RefreshIPCache();
+ return true;
}
diff --git a/src/modules/m_spanningtree/cachetimer.h b/src/modules/m_spanningtree/cachetimer.h
index acfb7434c..5d2278cd6 100644
--- a/src/modules/m_spanningtree/cachetimer.h
+++ b/src/modules/m_spanningtree/cachetimer.h
@@ -31,5 +31,5 @@ class CacheRefreshTimer : public Timer
SpanningTreeUtilities *Utils;
public:
CacheRefreshTimer(SpanningTreeUtilities* Util);
- virtual void Tick(time_t TIME);
+ virtual bool Tick(time_t TIME);
};
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp
index bd49a3075..029f5e888 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -70,7 +70,7 @@ void ModuleSpanningTree::init()
ServerInstance->Modules->AddService(commands->fhost);
ServerInstance->Modules->AddService(commands->fident);
ServerInstance->Modules->AddService(commands->fname);
- RefreshTimer = new CacheRefreshTimer(Utils);
+ RefreshTimer = new CacheRefreshTimer(this, Utils);
ServerInstance->Timers->AddTimer(RefreshTimer);
Implementation eventlist[] =
@@ -907,6 +907,7 @@ CullResult ModuleSpanningTree::cull()
{
Utils->cull();
ServerInstance->Timers->DelTimer(RefreshTimer);
+ delete RefreshTimer;
return this->Module::cull();
}