Skip to main content

Configurable

Trait Configurable 

Source
pub trait Configurable {
    // Required methods
    fn config_ns(&self) -> &str;
    fn apply_config(&self, cfg: &SectionMap) -> Result<ApplyReport, String>;
    fn dump_config(&self) -> SectionMap;
}
Expand description

配置托底契约(可选能力:有配置的插件实现它,没配置的插件零负担)。

实现面(目标:

  • Configurable::config_ns 全链唯一(命名实例 = <工厂>.<注册名>, 存构造期字符串回 &str;字符纪律及校验见 valid_config_ns);
  • Configurable::apply_config 只回灌引用:秘面字段在本方法内禁止 调 secret 取值(宿主管理线程,ek-cfg 秘取可秒级阻塞,BD-CFG-16); 真实取值由插件在自己的时机(典型 = on_start 后自发连接前)做;
  • Configurable::dump_config 只输出要持久的字段——不输出 = 不持久 (BD-CFG-15);秘面字段只出引用形态。

内部状态修改用自锁(与 Plugin 纪律同式:Mutex/RwLock)——本 trait 是 &self,可重入(boot 载入与运行期回灌同一条路径)。

Required Methods§

Source

fn config_ns(&self) -> &str

命名空间(全链唯一;add_plugin 期撞名校验)。

Source

fn apply_config(&self, cfg: &SectionMap) -> Result<ApplyReport, String>

托底载入(宿主 boot / svctl.start 时直调;失败 = 上抛给单一硬报错点)。

Source

fn dump_config(&self) -> SectionMap

托底导出(插件受理成功后由插件自己 dump → ask cfg.save;见 Ek-14)。

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§