From 14e7c825122c9b87507f541ffbe7681efda74d79 Mon Sep 17 00:00:00 2001 From: XMRig Date: Fri, 15 Feb 2019 07:06:48 +0700 Subject: [PATCH] Prevent config reload after initial save. --- src/common/config/CommonConfig.cpp | 6 ------ src/common/config/ConfigLoader.cpp | 18 ++++++++++++++---- src/common/config/ConfigLoader.h | 1 + src/core/Controller.cpp | 14 ++++++++++++++ src/core/Controller.h | 1 + src/workers/Workers.cpp | 4 +--- 6 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/common/config/CommonConfig.cpp b/src/common/config/CommonConfig.cpp index 1207db48..4d02de60 100644 --- a/src/common/config/CommonConfig.cpp +++ b/src/common/config/CommonConfig.cpp @@ -74,13 +74,7 @@ xmrig::CommonConfig::CommonConfig() : m_colors(true), m_dryRun(false), m_syslog(false), - -# ifdef XMRIG_PROXY_PROJECT m_watch(true), -# else - m_watch(false), // TODO: enable config file watch by default when this feature propertly handled and tested. -# endif - m_apiPort(0), m_donateLevel(kDefaultDonateLevel), m_printTime(60), diff --git a/src/common/config/ConfigLoader.cpp b/src/common/config/ConfigLoader.cpp index 42c93f5c..bc20d8fe 100644 --- a/src/common/config/ConfigLoader.cpp +++ b/src/common/config/ConfigLoader.cpp @@ -23,6 +23,7 @@ */ +#include #include #include #include @@ -145,6 +146,19 @@ bool xmrig::ConfigLoader::reload(xmrig::IConfig *oldConfig, const char *json) } +bool xmrig::ConfigLoader::watch(IConfig *config) +{ + if (!config->isWatch()) { + return false; + } + + assert(m_watcher == nullptr); + + m_watcher = new xmrig::ConfigWatcher(config->fileName(), m_creator, m_listener); + return true; +} + + xmrig::IConfig *xmrig::ConfigLoader::load(Process *process, IConfigCreator *creator, IConfigListener *listener) { m_creator = creator; @@ -192,10 +206,6 @@ xmrig::IConfig *xmrig::ConfigLoader::load(Process *process, IConfigCreator *crea return nullptr; } - if (config->isWatch()) { - m_watcher = new xmrig::ConfigWatcher(config->fileName(), creator, listener); - } - return config; } diff --git a/src/common/config/ConfigLoader.h b/src/common/config/ConfigLoader.h index 0a85ab94..5b36fd81 100644 --- a/src/common/config/ConfigLoader.h +++ b/src/common/config/ConfigLoader.h @@ -52,6 +52,7 @@ public: static bool loadFromJSON(IConfig *config, const char *json); static bool loadFromJSON(IConfig *config, const rapidjson::Document &doc); static bool reload(IConfig *oldConfig, const char *json); + static bool watch(IConfig *config); static IConfig *load(Process *process, IConfigCreator *creator, IConfigListener *listener); static void release(); diff --git a/src/core/Controller.cpp b/src/core/Controller.cpp index 1113c6d5..e5492463 100644 --- a/src/core/Controller.cpp +++ b/src/core/Controller.cpp @@ -147,6 +147,20 @@ void xmrig::Controller::addListener(IControllerListener *listener) } +void xmrig::Controller::save() +{ + if (!config()) { + return; + } + + if (d_ptr->config->isShouldSave()) { + d_ptr->config->save(); + } + + ConfigLoader::watch(d_ptr->config); +} + + void xmrig::Controller::onNewConfig(IConfig *config) { Config *previousConfig = d_ptr->config; diff --git a/src/core/Controller.h b/src/core/Controller.h index 7bb34db2..4f81fd82 100644 --- a/src/core/Controller.h +++ b/src/core/Controller.h @@ -54,6 +54,7 @@ public: int init(); Network *network() const; void addListener(IControllerListener *listener); + void save(); protected: void onNewConfig(IConfig *config) override; diff --git a/src/workers/Workers.cpp b/src/workers/Workers.cpp index 735ed586..f6a58454 100644 --- a/src/workers/Workers.cpp +++ b/src/workers/Workers.cpp @@ -206,9 +206,7 @@ void Workers::start(xmrig::Controller *controller) handle->start(Workers::onReady); } - if (controller->config()->isShouldSave()) { - controller->config()->save(); - } + controller->save(); }