summaryrefslogtreecommitdiff
path: root/src/config
diff options
context:
space:
mode:
authorAlessio Molinari <alessio.molinari@strg.at>2024-05-23 21:15:31 +0200
committerGitHub <noreply@github.com>2024-05-23 21:15:31 +0200
commiteea0a6a70412574baabea2b83d2c52003c98d46f (patch)
treeba6e34a3d6c3bd0b71fd711ab0c5dc9dc3c4838d /src/config
parent255272ea18a1bd899168b2d2063b6f153edda919 (diff)
internal: Replace monitor rule when disabling head. (#6136)
Closes #5978
Diffstat (limited to 'src/config')
-rw-r--r--src/config/ConfigManager.cpp12
-rw-r--r--src/config/ConfigManager.hpp1
2 files changed, 13 insertions, 0 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 77aa2fb3..fd70da77 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -1264,6 +1264,18 @@ void CConfigManager::appendMonitorRule(const SMonitorRule& r) {
m_dMonitorRules.emplace_back(r);
}
+bool CConfigManager::replaceMonitorRule(const SMonitorRule& newrule) {
+ // Looks for an existing monitor rule (compared by name).
+ // If the rule exists, it is replaced with the input rule.
+ for (auto& r : m_dMonitorRules) {
+ if (r.name == newrule.name) {
+ r = newrule;
+ return true;
+ }
+ }
+ return false;
+}
+
void CConfigManager::performMonitorReload() {
bool overAgain = false;
diff --git a/src/config/ConfigManager.hpp b/src/config/ConfigManager.hpp
index 7fc132c6..45b100ee 100644
--- a/src/config/ConfigManager.hpp
+++ b/src/config/ConfigManager.hpp
@@ -128,6 +128,7 @@ class CConfigManager {
void performMonitorReload();
void appendMonitorRule(const SMonitorRule&);
+ bool replaceMonitorRule(const SMonitorRule&);
bool m_bWantsMonitorReload = false;
bool m_bForceReload = false;
bool m_bNoMonitorReload = false;