From 006fbc88ae87bc87b9a0d732a6fe7f56e1fcdd77 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 30 Jul 2019 00:52:46 +0200 Subject: [PATCH] Ref T709, settings provider to get settings * allows to use the provider without and overhead * single source, can be made threadsafe Signed-off-by: Klaus Basan --- src/xswiftbus/settings.cpp | 12 ++++++++++++ src/xswiftbus/settings.h | 16 ++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/xswiftbus/settings.cpp b/src/xswiftbus/settings.cpp index de074e214..f9655e23b 100644 --- a/src/xswiftbus/settings.cpp +++ b/src/xswiftbus/settings.cpp @@ -27,5 +27,17 @@ namespace XSwiftBus // void } + CSettings ISettingsProvider::getSettings() const + { + std::lock_guard l(m_settingsMutex); + return m_pluginSettings; + } + + void ISettingsProvider::setSettings(const CSettings &settings) + { + std::lock_guard l(m_settingsMutex); + m_pluginSettings = settings; + } + } // ns diff --git a/src/xswiftbus/settings.h b/src/xswiftbus/settings.h index a92ae4d78..e6bef3d99 100644 --- a/src/xswiftbus/settings.h +++ b/src/xswiftbus/settings.h @@ -11,6 +11,7 @@ #include "blackmisc/simulation/settings/xswiftbussettingsqtfree.h" #include +#include namespace XSwiftBus { @@ -30,6 +31,21 @@ namespace XSwiftBus virtual ~CSettings() {} }; + //! Something owning the settings + class ISettingsProvider + { + public: + //! By value + //! \threadsafe + CSettings getSettings() const; + + //! Set settings + //! \threadsafe + void setSettings(const CSettings &settings); + + private: + mutable std::mutex m_settingsMutex; + CSettings m_pluginSettings; //!< owner of the settings }; } // ns