pub struct MainEngine { /* private fields */ }Implementations§
Source§impl MainEngine
impl MainEngine
Sourcepub fn new(event: Option<Arc<EventEngine>>) -> Self
pub fn new(event: Option<Arc<EventEngine>>) -> Self
注入式创建:Some(bus) 复用外部引擎;None 自建(start() 时拉起)。
Sourcepub fn event_engine(&self) -> &Arc<EventEngine> ⓘ
pub fn event_engine(&self) -> &Arc<EventEngine> ⓘ
宿主级引擎句柄(测试/装配工具可用;插件不可见——ctx 不暴露)。
Sourcepub fn add_plugin(
&self,
plugin: Arc<impl Plugin + 'static>,
) -> Result<(), PluginError>
pub fn add_plugin( &self, plugin: Arc<impl Plugin + 'static>, ) -> Result<(), PluginError>
统一格式注册(D2:名/重名/同名自依赖;add 期【不校验 deps 存在性】—— 新 D1 注册自由,悬空 deps 由 start 期把关)。
运行期动态 add(0.2.0):start 之后仍可随时注入新插件——登记 → 织入
能力索引 → 立即走 launch_one 装配上线 → 记入 started_order(close 反序覆盖);
并广播 ePlugUp / ePlugUp.<名>,迟绑定依赖方据此自主发现。
Sourcepub fn get_state(&self, name: &str) -> Option<PluginState>
pub fn get_state(&self, name: &str) -> Option<PluginState>
状态查询。
Sourcepub fn get_plugin(&self, name: &str) -> Option<PluginInfo>
pub fn get_plugin(&self, name: &str) -> Option<PluginInfo>
信息快照。
Sourcepub fn get_typed<T: Plugin + 'static>(&self, name: &str) -> Option<Arc<T>>
pub fn get_typed<T: Plugin + 'static>(&self, name: &str) -> Option<Arc<T>>
类型安全获取(get_typed):同一分配的 Arc
Sourcepub fn plugin_names(&self) -> Vec<String>
pub fn plugin_names(&self) -> Vec<String>
注册名列表(注册序)。
Sourcepub fn mail_stats(&self, name: &str) -> Option<MailStats>
pub fn mail_stats(&self, name: &str) -> Option<MailStats>
运行统计(软顶丢弃/panic/当前深度/峰值/软顶)。未注册 → None。
Sourcepub fn start(&self) -> Result<(), PluginError>
pub fn start(&self) -> Result<(), PluginError>
启动全部插件:总线 start → deps 拓扑序逐个装配 (on_init → 建邮箱 → spawn worker → state=Running → 注册 forwarder → on_start → 广播 ePlugUp)。 依赖环/悬空 deps → DepCycle/UnknownDep;重复 start 幂等 Ok;已 close → Stopped。
Sourcepub fn remove_plugin(&self, name: &str) -> Result<(), PluginError>
pub fn remove_plugin(&self, name: &str) -> Result<(), PluginError>
移除单个插件:Running 者执行五步(UNKNOWN 表项报错);仍被其他插件 deps 引用 时 stderr 警告(定稿 policy:允许移除 + 警告;依赖方后续 ask 走预检/断连失败)。
0.2.0:同步修剪能力索引(F3:防幽灵提供方)+ 作废缓存,并发
ePlugDown(固定版,PlugNotice)+ ePlugDown.<名>(后缀版,版本串)。
注:close()(宿主整体下架)不发逐插件 ePlugDown(审核 F7:避免拆除期事件风暴)。