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)、write_log(eLog)。 - 宿主不执行业务;插件之间不直调;依赖在 add_plugin 时显式声明, start 按 deps 拓扑序装配,close 按逆序五步回收。
故障面:handler panic 由 worker catch_unwind 隔离,连续 PANIC_LIMIT 次 → Quarantined
(worker 自退,发 ePlugQDown.<name> + eLog);邮箱有界,溢出丢弃计数 + 节流 eLog。
Re-exports§
pub use context::PluginContext;pub use envelope::e_req_type;pub use envelope::e_to_type;pub use envelope::Envelope;pub use envelope::OneshotErr;pub use envelope::OneshotReceiver;pub use envelope::OneshotSender;pub use envelope::ReplyErr;pub use error::AskError;pub use error::PluginError;pub use log_plugin::LogData;pub use log_plugin::LogPlugin;pub use log_plugin::EVENT_LOG;pub use log_plugin::EVENT_PLUG_DOWN_PREFIX;pub use log_plugin::LOG_LEVEL_ERROR;pub use log_plugin::LOG_LEVEL_WARN;pub use main_engine::MailStats;pub use main_engine::MainEngine;pub use main_engine::PluginInfo;pub use main_engine::PluginState;pub use plugin::Plugin;pub use plugin::MAILBOX_CAP;pub use plugin::PANIC_LIMIT;
Modules§
- context
PluginContext—— 插件的唯一出口(put / ask / notify / write_log)。- envelope
- 请求应答信封与一次性信道(envelope + Oneshot)。
- error
- 错误体系:全部公共 API 的错误面。
- log_
plugin - 内置通用日志插件(公用层,宿主级,零业务)。
- main_
engine MainEngine—— 纯插件宿主:单表注册、(typed)获取、(deps)拓扑 start、 逆序五步 close、单插件 remove(允许+警告)、运行统计查询。零业务方法。- plugin
Plugintrait —— 插件实现的唯一契约(业务与宿主的边界)。- registry
- 注册表(内部):单表统一 add / get / typed get / remove; 状态原子 CAS;deps 快照;start 拓扑序。
- worker
- worker(插件串行 actor 线程):邮箱消费 + catch_unwind 隔离 + 熔断(D3)。