common/config_proxy: added 'get_config_values' method

Expose the ability to retrieve the ConfigValues from an existing
ConfigProxy object. When combined with the newly exposed
'set_config_values' method, it will allow the safe bulk-updating
of configuration options. This also removes the original private
static version of 'get_config_values'.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
This commit is contained in:
Jason Dillaman 2020-10-29 10:06:06 -04:00
parent 94fcf109f2
commit d47c180477

View File

@ -13,11 +13,6 @@
// member methods.
namespace ceph::common {
class ConfigProxy {
static ConfigValues get_config_values(const ConfigProxy &config_proxy) {
std::lock_guard locker(config_proxy.lock);
return config_proxy.values;
}
/**
* The current values of all settings described by the schema
*/
@ -115,7 +110,7 @@ public:
: config{values, obs_mgr, is_daemon}
{}
explicit ConfigProxy(const ConfigProxy &config_proxy)
: values(get_config_values(config_proxy)),
: values(config_proxy.get_config_values()),
config{values, obs_mgr, config_proxy.config.is_daemon}
{}
const ConfigValues* operator->() const noexcept {
@ -124,6 +119,10 @@ public:
ConfigValues* operator->() noexcept {
return &values;
}
ConfigValues get_config_values() const {
std::lock_guard l{lock};
return values;
}
void set_config_values(const ConfigValues& val) {
#ifndef WITH_SEASTAR
std::lock_guard l{lock};