]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_xline_db.cpp
Fix some regressions in sending tags between servers.
[user/henk/code/inspircd.git] / src / modules / m_xline_db.cpp
index 925024aea51baed27027aa74304692daf173aacd..00605f259373898a2fe890ee54db10017d7ada58 100644 (file)
 #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()