mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-09 18:49:03 -04:00
Switch permchannels and xline_db from OnBackgroundTimer to a Timer.
This commit is contained in:
parent
30a651d092
commit
02beded762
@ -1658,7 +1658,12 @@
|
||||
#
|
||||
# If 'listmodes' is true then all list modes (+b, +I, +e, +g...) will be
|
||||
# saved. Defaults to false.
|
||||
#<permchanneldb filename="permchannels.conf" listmodes="true">
|
||||
#
|
||||
# 'saveperiod' determines how often to check if the database needs to be
|
||||
# saved to disk. Defaults to every five seconds.
|
||||
#<permchanneldb filename="permchannels.conf"
|
||||
# listmodes="true"
|
||||
# saveperiod="5s">
|
||||
#<include file="permchannels.conf">
|
||||
#
|
||||
# You may also create channels on startup by using the <permchannels> block.
|
||||
@ -2316,8 +2321,9 @@
|
||||
# be a lot less bans to apply - as most of them will already be there.
|
||||
#<module name="xline_db">
|
||||
|
||||
# Specify the filename for the xline database here.
|
||||
#<xlinedb filename="xline.db">
|
||||
# Specify the filename for the xline database and how often to check whether
|
||||
# the database needs to be saved here.
|
||||
#<xlinedb filename="xline.db" saveperiod="5s">
|
||||
|
||||
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
|
||||
# ____ _ _____ _ _ ____ _ _ _ #
|
||||
|
@ -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
|
||||
|
@ -22,11 +22,20 @@
|
||||
#include "xline.h"
|
||||
#include <fstream>
|
||||
|
||||
class ModuleXLineDB : public Module
|
||||
class ModuleXLineDB
|
||||
: public Module
|
||||
, public Timer
|
||||
{
|
||||
private:
|
||||
bool dirty;
|
||||
std::string xlinedbpath;
|
||||
|
||||
public:
|
||||
ModuleXLineDB()
|
||||
: Timer(0, true)
|
||||
{
|
||||
}
|
||||
|
||||
void init() CXX11_OVERRIDE
|
||||
{
|
||||
/* Load the configuration
|
||||
@ -37,6 +46,7 @@ class ModuleXLineDB : public Module
|
||||
*/
|
||||
ConfigTag* Conf = ServerInstance->Config->ConfValue("xlinedb");
|
||||
xlinedbpath = ServerInstance->Config->Paths.PrependData(Conf->getString("filename", "xline.db"));
|
||||
SetInterval(Conf->getDuration("saveperiod", 5));
|
||||
|
||||
// Read xlines before attaching to events
|
||||
ReadDatabase();
|
||||
@ -66,13 +76,14 @@ class ModuleXLineDB : public Module
|
||||
dirty = true;
|
||||
}
|
||||
|
||||
void OnBackgroundTimer(time_t now) CXX11_OVERRIDE
|
||||
bool Tick(time_t) CXX11_OVERRIDE
|
||||
{
|
||||
if (dirty)
|
||||
{
|
||||
if (WriteDatabase())
|
||||
dirty = false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool WriteDatabase()
|
||||
|
Loading…
x
Reference in New Issue
Block a user