Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Morny 事件系统 - Coeur 生命周期事件,Morny 运行时事件等 #51

Open
Eyre-S opened this issue Oct 31, 2024 · 0 comments
Open
Labels
16%source#api About the api provided. 18%source#system About the system implementation. 19%source#structure about the system structure.

Comments

@Eyre-S
Copy link
Owner

Eyre-S commented Oct 31, 2024

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 的一部分。

@Eyre-S Eyre-S added 16%source#api About the api provided. 18%source#system About the system implementation. 19%source#structure about the system structure. labels Oct 31, 2024
@Eyre-S Eyre-S added this to the 2.0 - Morny Xinzheng milestone Oct 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
16%source#api About the api provided. 18%source#system About the system implementation. 19%source#structure about the system structure.
Projects
Status: In Design
Development

No branches or pull requests

1 participant