summaryrefslogtreecommitdiff
path: root/src/modules/m_permchannels.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_permchannels.cpp')
-rw-r--r--src/modules/m_permchannels.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/modules/m_permchannels.cpp b/src/modules/m_permchannels.cpp
index 898d7aed8..4e365d0ab 100644
--- a/src/modules/m_permchannels.cpp
+++ b/src/modules/m_permchannels.cpp
@@ -156,7 +156,10 @@ static bool WriteDatabase(PermChannel& permchanmode, Module* mod, bool save_list
return true;
}
-class ModulePermanentChannels : public Module
+class ModulePermanentChannels
+ : public Module
+ , public Timer
+
{
PermChannel p;
bool dirty;
@@ -165,7 +168,10 @@ class ModulePermanentChannels : public Module
public:
ModulePermanentChannels()
- : p(this), dirty(false), loaded(false)
+ : Timer(0, true)
+ , p(this)
+ , dirty(false)
+ , loaded(false)
{
}
@@ -174,6 +180,7 @@ public:
ConfigTag* tag = ServerInstance->Config->ConfValue("permchanneldb");
permchannelsconf = tag->getString("filename");
save_listmodes = tag->getBool("listmodes");
+ SetInterval(tag->getDuration("saveperiod", 5));
if (!permchannelsconf.empty())
permchannelsconf = ServerInstance->Config->Paths.PrependConfig(permchannelsconf);
@@ -265,11 +272,12 @@ public:
dirty = true;
}
- void OnBackgroundTimer(time_t) CXX11_OVERRIDE
+ bool Tick(time_t) CXX11_OVERRIDE
{
if (dirty)
WriteDatabase(p, this, save_listmodes);
dirty = false;
+ return true;
}
void Prioritize() CXX11_OVERRIDE