文章目录
前言
你好,我是醉墨居士,上篇博客中我们实现了任务执行流部分,接下来我们需要对任务执行流的执行流程进行控制,接下来我们要去实现对客户端请求处理的任务上下文。那为什么我需要一个请求处理的任务上下文呢?这是因为我要在后续支持请求可以通过任务流去完成的业务处理,然后我们可以给任务处理流增加任务处理逻辑,完成业务逻辑的拓展,然后后续可以支持任务处理逻辑的插件注册,完成路由分组等等功能
接下来介绍我们这篇博客的主角 - 任务执行流上下文
接口
trait/context.go
go
type Context interface {
Message
Next()
Abort()
}
结构体
gcore/context.go
go
// Context 任务上下文
type Context struct {
trait.Request
// 当前执行的任务索引
taskIdx int
// 任务执行流
tasks trait.TaskFlow
}
接口实现
go
// Next 执行下一个任务
func (c *Context) Next() {
c.taskIdx++
if c.taskIdx < c.tasks.Len() {
c.tasks.Execute(c.taskIdx, c)
c.taskIdx++
}
}
// Abort 中止任务流
func (c *Context) Abort() {
c.taskIdx = constant.AbortIndex
}
项目地址
Github:https://github.com/zm50/gte
Giee:https://gitee.com/zm50/gte
最后
我是醉墨居士,我们这篇博客完成了任务执行流上下文的代码开发,希望让大家有所收获