ceph rgw中的md_config_obs_t类

md_config_obs_t类

简介:

Ceph/src/common/config_obs.h
类md_config_obs_t是所有配置观察者的基类,如果你的对象要时刻响应配置的变化,就可以继承该类来定义。
通过调用md_config_t::add_observer()和md_config_t::remove_observer()可以订阅和取消订阅配置的变化。
md_config_obs_t是一个虚基类,其中定义了四个方法:
  1. 析构函数

    virtual ~md_config_obs_t(){}

  2. 返回一组配置项的键列表。

    virtual const char** get_tracked_conf_keys() const = 0

  3. 处理配置项的变化,即使配置项的变化生效。

    virtual void handle_conf_change(const struct md_config *conf, const std::set < std::string >&changed)=0

  4. 该函数暂时没有被使用。

    virtual void handle_subsys_change(const struct md_config_t *conf, const std::set< int>& changed) {}

荔枝:

类CephContextObs是md_config_obs_t的一个派生类。
CephContextObs:
该类中指定被跟踪的配置key只有一个:
enable_experimental_unrecoverable_data_corrupting_features
默认值为空。
const char** get_tracked_conf_keys() const {
    static const char *KEYS[] = {
      "enable_experimental_unrecoverable_data_corrupting_features",
      NULL
    };
    return KEYS;
  }
该函数会把 
enable_experimental_unrecoverable_data_corrupting_features
的value保存到cephcontext中的_experimental_features集合中。
 void handle_conf_change(const md_config_t *conf,
                          const std::set <std::string> &changed) {
    ceph_spin_lock(&cct->_feature_lock);
    get_str_set(conf->enable_experimental_unrecoverable_data_corrupting_features,
        cct->_experimental_features);
    ceph_spin_unlock(&cct->_feature_lock);
    if (!cct->_experimental_features.empty())
      lderr(cct) << "WARNING: the following dangerous and experimental features are enabled: "
         << cct->_experimental_features << dendl;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值