Expand description
ek-core —— 插件宿主 + Actor-over-Bus 运行时(基于已发布的 ek-event 0.1.0)。
核心协议:
- 收 = 插件唯一入口
Plugin::on_mail;订阅面由Plugin::routes声明, 宿主 start() 时为每条 route 装配 forwarder(bounded 邮箱 + try_send,零阻塞)。 - 发 = 插件唯一出口
PluginContext:put(广播/业务日志)、ask(eReq+Oneshot 请求)、notify(eTo)。 - 宿主不执行业务、零业务类型、零日志(0.3.0):插件之间不直调; 依赖在 add_plugin 时显式声明,start 按 deps 拓扑序装配,close 按逆序五步回收。
- 宿主想说的话全是结构化事件:
ePlugUp/ePlugDown/ePlugQDown.<名>/eSrvChg(见lifecycle);运维诊断文本只走 stderr,不进总线不占类型。 业务日志与本宿主无关(插件自造自投,业务链上用 ek-data 的 LogData 到 “eLog”)。
故障面:handler panic 由 worker catch_unwind 隔离,连续 PANIC_LIMIT 次 → Quarantined
(worker 自退 + ePlugQDown.<name> 结构化广播);邮箱有界,溢出丢弃计数最终一致
(stats.spilled,节流 stderr 提示)。
Re-exports§
pub use context::PluginContext;pub use envelope::Envelope;pub use envelope::OneshotErr;pub use envelope::OneshotReceiver;pub use envelope::OneshotSender;pub use envelope::ReplyErr;pub use envelope::e_req_type;pub use envelope::e_to_type;pub use error::AskError;pub use error::PluginError;pub use lifecycle::EVENT_PLUG_DOWN;pub use lifecycle::EVENT_PLUG_DOWN_EVENT_PREFIX;pub use lifecycle::EVENT_PLUG_DOWN_PREFIX;pub use lifecycle::EVENT_PLUG_UP;pub use lifecycle::EVENT_PLUG_UP_PREFIX;pub use lifecycle::EVENT_SRV_CHG;pub use lifecycle::EVENT_SRV_CHG_PREFIX;pub use main_engine::MailStats;pub use main_engine::MainEngine;pub use main_engine::PluginInfo;pub use main_engine::PluginState;pub use plugin::MAILBOX_CAP;pub use plugin::PANIC_LIMIT;pub use plugin::Plugin;pub use section::ApplyReport;pub use section::Configurable;pub use section::Field;pub use section::SectionMap;pub use section::valid_config_ns;pub use service::PlugNotice;pub use service::ProviderRef;pub use service::ServiceDesc;
Modules§
- context
PluginContext—— 插件的唯一出口(put / ask / notify / 发现四问)。- envelope
- 请求应答信封与一次性信道(envelope + Oneshot)。
- error
- 错误体系:全部公共 API 的错误面。
- lifecycle
- 生命周期与服务改版的事件类型串(宿主「说话」的全部通道,零日志)。
- main_
engine MainEngine—— 纯插件宿主:单表注册、(typed)获取、(deps)拓扑 start、 逆序五步 close、单插件 remove(允许+警告)、运行统计查询。零业务方法。- plugin
Plugintrait —— 插件实现的唯一契约(业务与宿主的边界)。- registry
- 注册表(内部):单表统一 add / get / typed get / remove; 状态原子 CAS;能力索引(svc_id → 提供方列表)+ 改版世代计数 + services 现场缓存; start 拓扑序。
- section
- section —— 配置托底契约(BD-CFG-1..6;2026-10-25 定盘,用户裁定「软集中」)。
- service
- 服务声明与解析(0.2.0 新增):插件自报目录、宿主持【纯路由索引】。
- worker
- worker(插件串行 actor 线程):邮箱消费 + catch_unwind 隔离 + 熔断(D3)。