Ref T709 Encapsulate the CSettingsProvider pointer in a CSettingsAware base class.

This commit is contained in:
Mat Sutcliffe
2019-08-13 19:30:01 +01:00
parent 463ed4bfbd
commit 7295ac5331
4 changed files with 36 additions and 22 deletions

View File

@@ -11,7 +11,7 @@
namespace XSwiftBus
{
CDBusObject::CDBusObject(CSettingsProvider *settingsProvider) : m_settingsProvider(settingsProvider)
CDBusObject::CDBusObject(CSettingsProvider *settingsProvider) : CSettingsAware(settingsProvider)
{}
CDBusObject::~CDBusObject()
@@ -73,18 +73,6 @@ namespace XSwiftBus
}
}
CSettings CDBusObject::getSettings() const
{
if (m_settingsProvider) { return m_settingsProvider->getSettings(); }
return CSettings();
}
bool CDBusObject::setSettings(const CSettings &s)
{
if (m_settingsProvider) { m_settingsProvider->setSettings(s); }
return false;
}
void CDBusObject::dbusObjectPathUnregisterFunction(DBusConnection *connection, void *data)
{
(void)connection; // unused

View File

@@ -18,7 +18,7 @@
namespace XSwiftBus
{
//! DBus base object
class CDBusObject
class CDBusObject : public CSettingsAware
{
public:
//! Constructor
@@ -80,14 +80,6 @@ namespace XSwiftBus
//! Invoke all pending DBus calls. They will be executed in the calling thread.
void invokeQueuedDBusCalls();
//! Get the settings
CSettings getSettings() const;
//! Set the settings
bool setSettings(const CSettings &s);
CSettingsProvider *m_settingsProvider; //!< get the settings from here
private:
static void dbusObjectPathUnregisterFunction(DBusConnection *connection, void *data);
static DBusHandlerResult dbusObjectPathMessageFunction(DBusConnection *connection, DBusMessage *message, void *data);

View File

@@ -39,5 +39,19 @@ namespace XSwiftBus
m_pluginSettings = settings;
}
CSettingsAware::CSettingsAware(CSettingsProvider *provider) : m_provider(provider)
{
// void
}
CSettings CSettingsAware::getSettings() const
{
return m_provider->getSettings();
}
void CSettingsAware::setSettings(const CSettings &settings)
{
m_provider->setSettings(settings);
}
} // ns

View File

@@ -48,6 +48,26 @@ namespace XSwiftBus
mutable std::mutex m_settingsMutex;
CSettings m_pluginSettings; //!< owner of the settings
};
//! Something having access to the settings
class CSettingsAware
{
protected:
//! Constructor
CSettingsAware(CSettingsProvider *provider);
//! Destructor
~CSettingsAware() = default;
//! \copydoc CSettingsProvider::getSettings
CSettings getSettings() const;
//! \copydoc CSettingsProvider::setSettings
void setSettings(const CSettings &settings);
private:
CSettingsProvider *m_provider = nullptr;
};
} // ns
#endif