Go语言实现长连接并发框架 - 任务执行流上下文
文章目录
- 前言
- 接口
- 结构体
- 接口实现
- 最后
前言
你好,我是醉墨居士,上篇博客中我们实现了任务执行流部分,接下来我们需要对任务执行流的执行流程进行控制,接下来我们要去实现对客户端请求处理的任务上下文。那为什么我需要一个请求处理的任务上下文呢?这是因为我要在后续支持请求可以通过任务流去完成的业务处理,然后我们可以给任务处理流增加任务处理逻辑,完成业务逻辑的拓展,然后后续可以支持任务处理逻辑的插件注册,完成路由分组等等功能
接下来介绍我们这篇博客的主角 - 任务执行流上下文
接口
trait/context.go
type Context interface {MessageNext()Abort()
}
结构体
gcore/context.go
// Context 任务上下文
type Context struct {trait.Request// 当前执行的任务索引taskIdx int// 任务执行流tasks trait.TaskFlow
}
接口实现
// 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
}
最后
我是醉墨居士,我们这篇博客完成了任务执行流上下文的代码开发,希望让大家有所收获