ek_core/lib.rs
1//! ek-core —— 插件宿主 + Actor-over-Bus 运行时(基于已发布的 ek-event 0.1.0)。
2//!
3//! 核心协议:
4//! - **收** = 插件唯一入口 [`Plugin::on_mail`](plugin::Plugin);订阅面由 [`Plugin::routes`] 声明,
5//! 宿主 start() 时为每条 route 装配 forwarder(bounded 邮箱 + try_send,零阻塞)。
6//! - **发** = 插件唯一出口 [`PluginContext`](context::PluginContext):`put`(广播)、
7//! `ask`(eReq+Oneshot 请求)、`notify`(eTo)、`write_log`(eLog)。
8//! - 宿主不执行业务;插件之间不直调;依赖在 add_plugin 时显式声明,
9//! start 按 deps 拓扑序装配,close 按逆序五步回收。
10//!
11//! 故障面:handler panic 由 worker catch_unwind 隔离,连续 [`PANIC_LIMIT`] 次 → Quarantined
12//! (worker 自退,发 `ePlugQDown.<name>` + eLog);邮箱有界,溢出丢弃计数 + 节流 eLog。
13
14pub mod context;
15pub mod envelope;
16pub mod error;
17mod forwarder;
18pub mod log_plugin;
19pub mod main_engine;
20pub mod plugin;
21pub mod registry;
22pub mod worker;
23
24pub use context::PluginContext;
25pub use envelope::{e_req_type, e_to_type, Envelope, OneshotErr, OneshotReceiver, OneshotSender, ReplyErr};
26pub use error::{AskError, PluginError};
27pub use log_plugin::{LogData, LogPlugin, EVENT_LOG, EVENT_PLUG_DOWN_PREFIX, LOG_LEVEL_ERROR, LOG_LEVEL_WARN};
28pub use main_engine::{MailStats, MainEngine, PluginInfo, PluginState};
29pub use plugin::{Plugin, MAILBOX_CAP, PANIC_LIMIT};