我们有一个事件驱动的状态机,其中一些事件是外部的(来自我们系统的用户)和内部的(我们自己的代码)。为了简化,我将使用 2 个首字母缩略词 IE(内部事件)和 EE(外部事件)
算法:
IE-1: change state -> Running
Event IE-1 detected and action taken on event is authenticate.
IE-2: change state -> Authentication success
Event IE-2 detected and action on event is to send reply to client.
EE-3 client replies state -> Closed
Event IE-3 detected and action on event is to release all resources on server.
现在我的建议是将所有内部事件替换为模板函数之类的东西,并让事件处理仅用于 EE。所以新系统将是:
template {
change state to running.
authenticate
change state to auth success
reply client
}
// Event trigger.
onEvent-closeConnection() {
}
这是正确的做法吗?有什么建议/反馈吗?更改的主要目的是系统变得如此复杂,以至于sequence of control
仅查看代码就很难跟踪流程。事件处理代码与要执行的操作不在同一个文件中。这使调试变得更加困难。模板是原子操作。