README

#plugin — 插件接口层

MoonDES 层级5:标准化仿真组件挂载接口,引擎自动调用生命周期回调。

#API 概览

符号说明
PluginCallbacks插件回调集合(on_step / on_event / on_finish)
PluginManager插件管理器
new_manager()创建空插件管理器
null_callbacks()创建空操作回调
PluginManager::register(plugin)注册插件
attach(env, manager)挂载到仿真环境

#示例

///|
test {
let mgr = new_manager()
inspect(mgr.length(), content="0")
let cb = null_callbacks()
mgr.register(cb)
inspect(mgr.length(), content="1")
}

///|
test {
let env = @core.new_env(until=10.0)
let mgr = new_manager()
let step_count : Array[Int] = [0]
let cb : PluginCallbacks = {
on_step: fn(_env, _time) { step_count[0] = step_count[0] + 1 },
on_event: fn(_env, _event) { () },
on_finish: fn(_env) { () },
}
mgr.register(cb)
attach(env, mgr)
ignore(env.schedule(time=5.0, callback=fn() { () }))
env.run()
inspect(step_count[0], content="1")
}

#
PluginCallbacks

仿真插件回调集合

外部业务模型可创建 PluginCallbacks 注册至引擎内部, 在指定仿真时间步被引擎自动调用执行计算。

#
PluginManager

pub(all) struct PluginManager {
plugins : Array[PluginCallbacks]
}

插件管理器

#
PluginManager::length

fn PluginManager::length(self : PluginManager) -> Int

已注册插件数量

#
PluginManager::notify_event

通知所有插件事件触发

#
PluginManager::notify_finish

通知所有插件仿真结束

#
PluginManager::notify_step

fn PluginManager::notify_step(self : PluginManager, env :
SimulationEnv
, current_time : Double) -> Unit

通知所有插件仿真步开始

#
PluginManager::register

fn PluginManager::register(self : PluginManager, plugin : PluginCallbacks) -> Unit

注册插件

#
attach

将插件管理器挂载到仿真环境

挂载后,引擎在 run / step 中自动调用:
  • on_step:每个事件处理前
  • on_event:事件触发后
  • on_finish:仿真结束时(仅一次)

#
new_manager

fn new_manager() -> PluginManager

创建空插件管理器

#
null_callbacks

fn null_callbacks() -> PluginCallbacks

创建空操作插件回调

Source Files