Go语言实现长连接并发框架 - 任务执行流上下文

文章目录

前言

你好,我是醉墨居士,上篇博客中我们实现了任务执行流部分,接下来我们需要对任务执行流的执行流程进行控制,接下来我们要去实现对客户端请求处理的任务上下文。那为什么我需要一个请求处理的任务上下文呢?这是因为我要在后续支持请求可以通过任务流去完成的业务处理,然后我们可以给任务处理流增加任务处理逻辑,完成业务逻辑的拓展,然后后续可以支持任务处理逻辑的插件注册,完成路由分组等等功能

接下来介绍我们这篇博客的主角 - 任务执行流上下文

接口

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

最后

我是醉墨居士,我们这篇博客完成了任务执行流上下文的代码开发,希望让大家有所收获

相关推荐
百度地图汽车版1 分钟前
【智图译站】基于 LightGBM 与 GNSS 多特征驱动的 NLOS 误差可靠识别方法
前端
White_Can2 分钟前
《C++11:列表初始化》
c语言·开发语言·c++·vscode·stl
有意义7 分钟前
用心写好一个登录页:代码、体验与细节的平衡
前端·react.js·交互设计
程序员Agions8 分钟前
React 自定义 Hooks 生存指南:7 个让你少加班的"偷懒"神器
前端·javascript
White_Can11 分钟前
《C++11:右值引用与移动语义》
开发语言·c++·stl·c++11
爱学习的小康11 分钟前
js 文件读取 修改 创建
前端·javascript·vue.js
2501_9418705612 分钟前
从配置频繁变动到动态配置体系落地的互联网系统工程实践随笔与多语言语法思考
java·前端·python
剑之所向12 分钟前
c# modbus大小端
linux·运维·网络
比奇堡派星星13 分钟前
Linux4.4使用AW9523
linux·开发语言·arm开发·驱动开发
stark张宇13 分钟前
Go语言核心三剑客:数组、切片与结构体使用指南
后端·go