Skip to main content

Crate ek_core

Crate ek_core 

Source
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;
pub use log_plugin::EVENT_PLUG_DOWN_EVENT_PREFIX;
pub use log_plugin::EVENT_PLUG_DOWN_PREFIX;
pub use log_plugin::EVENT_PLUG_UP;
pub use log_plugin::EVENT_PLUG_UP_PREFIX;
pub use log_plugin::EVENT_SRV_CHG;
pub use log_plugin::EVENT_SRV_CHG_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;
pub use service::PlugNotice;
pub use service::ProviderRef;
pub use service::ServiceDesc;

Modules§

context
PluginContext —— 插件的唯一出口(put / ask / notify / write_log / 发现四问)。
envelope
请求应答信封与一次性信道(envelope + Oneshot)。
error
错误体系:全部公共 API 的错误面。
log_plugin
内置通用日志插件(公用层,宿主级,零业务)。
main_engine
MainEngine —— 纯插件宿主:单表注册、(typed)获取、(deps)拓扑 start、 逆序五步 close、单插件 remove(允许+警告)、运行统计查询。零业务方法。
plugin
Plugin trait —— 插件实现的唯一契约(业务与宿主的边界)。
registry
注册表(内部):单表统一 add / get / typed get / remove; 状态原子 CAS;能力索引(svc_id → 提供方列表)+ 改版世代计数 + services 现场缓存; start 拓扑序。
service
服务声明与解析(0.2.0 新增):插件自报目录、宿主持【纯路由索引】。
worker
worker(插件串行 actor 线程):邮箱消费 + catch_unwind 隔离 + 熔断(D3)。