Morny 事件系统 - Coeur 生命周期事件,Morny 运行时事件等 #51
Labels
16%source#api
About the api provided.
18%source#system
About the system implementation.
19%source#structure
about the system structure.
Milestone
Morny 在进行模块化的过程中,显然需要通过一个事件系统,来向外部模块提供根据特定生命周期/事件来注册内容,或者运行自定义行为的功能。
生命周期事件
在当前版本下,Morny 的生命周期事件的定义位于
MornyModule
接口中,分为以下部分:onInitializingPre
: 在 Morny 资源初始化之前调用。此时,Morny 已经登录,且所有的 bot 资源管理器,以及 HTTP 资源管理器处于刚刚初始化完成的状态。不推荐此时注册内容,因为 Morny 的内部资源还未注册,此时注册有可能导致覆盖掉内部资源的注册。推荐在此时初始化一些你自己的资源管理器并通过 Context 导出,它们将可以在下一个生命周期被其它模块使用。onInitializing
: 在 Morny 正在进行资源初始化时调用。推荐的向 Morny bot 的 event, query, command 管理器,以及 HTTP 服务器注册路由的时机。在这个时候,Morny 的内部命令,内部事件等都已经完成注册,因此不必担心覆盖掉 Morny 内部命令/事件的问题。onInitializingPost
: 在 Morny 完成资源初始化后调用。此时,Morny 的 WatchDog 公共程序刚刚完成初始化。此时 HTTP 服务器还未启动,还有最后的机会注册 HTTP 路由。在此之后,Morny 将会进入启动阶段,开始启动各个子系统监听器等等。这也是测试运行的最后一个生命周期位置。Morny 将在测试运行模式下,完成这个阶段后直接退出。onStarting
: 在 Morny 正在进行内部子系统启动时调用。此时,程序退出的钩子刚刚注册启用,意味着在运行到这一步之后,程序的onExiting
系列生命周期才可用。推荐此时启动你自己的 daemon 线程等等,它们将可以安全的通过onExiting
处理退出。onStartingPost
: 在 Morny 完成内部子系统启动后调用。此时,Morny HTTP 服务器已经完成初始化并启动,你无法再向其注册路由。同时,Morny 的 Bot 事件管理器也已经启动,Bot 已经开始从远端服务器接收并处理事件。此事件完成后,意味着 Morny 完成程序启动生命周期,进入正常运行阶段。onRoutineSavingData
: 在 Morny 被通知需要向持久性存储(硬盘)保存状态数据时触发。在 Morny 没有数据持久化的目前,此事件暂时没有作用。onExiting
: 在 Morny 通过正常手段被关闭时触发。此时应该关闭你所创建/持有的资源,例如关闭在onStarting
阶段启动的 daemon 线程等。注意此时 Bot 的事件监听仍然没有关闭,这个阶段仍然可能有 Bot 事件被创建和处理。onExitingPost
: 在 Morny 完成退出事件后。执行到此事件意味着所有的资源应该已经被清理。Bot 的事件监听器已经完整结束,将不会再有新的 Bot 事件被传递进来。你可以安全的结束所有的事件处理相关的资源,或发送 bot 已关闭的通知。此时 Bot 仍然可以向外传递信息。onExited
: Morny 已经完全关闭,Bot 实例已经销毁,你无法再使用任何 Bot 功能。活动事件
Morny 的活动事件定义了一些当 Morny 执行到一些特定的特殊状态时会被触发的事件。
目前还没有已经实现的活动事件。
Bot 的事件并不位于 Morny 事件系统当中,它们属于重新封装的 Telegram API 的一部分。
The text was updated successfully, but these errors were encountered: