// @c ConfigProxy is a facade of multiple config related classes. it exposes
// the legacy settings with arrow operator, and the new-style config with its
// member methods.
+namespace ceph::common{
class ConfigProxy {
static ConfigValues get_config_values(const ConfigProxy &config_proxy) {
std::lock_guard locker(config_proxy.lock);
ConfigValues* operator->() noexcept {
return &values;
}
- int get_val(const std::string& key, char** buf, int len) const {
+#ifdef WITH_SEASTAR
+ void set_config_values(const ConfigValues& val) {
+ values = val;
+ }
+#endif
+ int get_val(const std::string_view key, char** buf, int len) const {
std::lock_guard l{lock};
return config.get_val(values, key, buf, len);
}
- int get_val(const std::string &key, std::string *val) const {
+ int get_val(const std::string_view key, std::string *val) const {
std::lock_guard l{lock};
return config.get_val(values, key, val);
}
template<typename T>
- const T get_val(const std::string& key) const {
+ const T get_val(const std::string_view key) const {
std::lock_guard l{lock};
return config.template get_val<T>(values, key);
}
template<typename T, typename Callback, typename...Args>
- auto with_val(const string& key, Callback&& cb, Args&&... args) const {
+ auto with_val(const std::string_view key, Callback&& cb, Args&&... args) const {
std::lock_guard l{lock};
return config.template with_val<T>(values, key,
std::forward<Callback>(cb),
std::forward<Args>(args)...);
}
- void config_options(Formatter *f) const {
+ void config_options(ceph::Formatter *f) const {
config.config_options(f);
}
const decltype(md_config_t::schema)& get_schema() const {
return config.schema;
}
- const Option* get_schema(const std::string& key) const {
+ const Option* get_schema(const std::string_view key) const {
auto found = config.schema.find(key);
if (found == config.schema.end()) {
return nullptr;
return &found->second;
}
}
- const Option *find_option(const string& name) const {
+ const Option *find_option(const std::string& name) const {
return config.find_option(name);
}
- void diff(Formatter *f, const std::string& name=string{}) const {
+ void diff(ceph::Formatter *f, const std::string& name = {}) const {
std::lock_guard l{lock};
return config.diff(values, f, name);
}
return config.get_all_sections(sections);
}
int get_val_from_conf_file(const std::vector<std::string>& sections,
- const std::string& key, std::string& out,
+ const std::string_view key, std::string& out,
bool emeta) const {
std::lock_guard l{lock};
return config.get_val_from_conf_file(values,
std::lock_guard l{lock};
config.show_config(values, out);
}
- void show_config(Formatter *f) {
+ void show_config(ceph::Formatter *f) {
std::lock_guard l{lock};
config.show_config(values, f);
}
- void config_options(Formatter *f) {
+ void config_options(ceph::Formatter *f) {
std::lock_guard l{lock};
config.config_options(f);
}
- int rm_val(const std::string& key) {
+ int rm_val(const std::string_view key) {
std::lock_guard l{lock};
return config.rm_val(values, key);
}
map_observer_changes(obs, key, rev_obs);
}, oss);
}
- int set_val(const std::string& key, const std::string& s,
+ int set_val(const std::string_view key, const std::string& s,
std::stringstream* err_ss=nullptr) {
std::lock_guard l{lock};
return config.set_val(values, obs_mgr, key, s, err_ss);
}
- void set_val_default(const std::string& key, const std::string& val) {
+ void set_val_default(const std::string_view key, const std::string& val) {
std::lock_guard l{lock};
config.set_val_default(values, obs_mgr, key, val);
}
- void set_val_or_die(const std::string& key, const std::string& val) {
+ void set_val_or_die(const std::string_view key, const std::string& val) {
std::lock_guard l{lock};
config.set_val_or_die(values, obs_mgr, key, val);
}
int set_mon_vals(CephContext *cct,
- const map<std::string,std::string>& kv,
+ const std::map<std::string,std::string,std::less<>>& kv,
md_config_t::config_callback config_cb) {
std::unique_lock locker(lock);
int ret = config.set_mon_vals(cct, values, obs_mgr, kv, config_cb);
return config.parse_config_files(values, obs_mgr,
conf_files, warnings, flags);
}
- size_t num_parse_errors() const {
- return config.parse_errors.size();
+ bool has_parse_error() const {
+ return !config.parse_error.empty();
}
- void complain_about_parse_errors(CephContext *cct) {
- return config.complain_about_parse_errors(cct);
+ void complain_about_parse_error(CephContext *cct) {
+ return config.complain_about_parse_error(cct);
}
void do_argv_commands() const {
std::lock_guard l{lock};
config.do_argv_commands(values);
}
void get_config_bl(uint64_t have_version,
- bufferlist *bl,
+ ceph::buffer::list *bl,
uint64_t *got_version) {
std::lock_guard l{lock};
config.get_config_bl(values, have_version, bl, got_version);
}
- void get_defaults_bl(bufferlist *bl) {
+ void get_defaults_bl(ceph::buffer::list *bl) {
std::lock_guard l{lock};
config.get_defaults_bl(values, bl);
}
};
+
+}