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

最后

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

相关推荐
小小菜鸡ing5 分钟前
pymysql
java·服务器·数据库
getapi8 分钟前
shareId 的产生与传递链路
java
万少12 分钟前
鸿蒙创新赛 HarmonyOS 6.0.0(20) 关键特性汇总
前端
桦说编程18 分钟前
爆赞!完全认同!《软件设计的哲学》这本书深得我心
后端
thinktik28 分钟前
还在手把手教AI写代码么? 让你的AWS Kiro AI IDE直接读飞书需求文档给你打工吧!
后端·serverless·aws
还有多远.29 分钟前
jsBridge接入流程
前端·javascript·vue.js·react.js
蝶恋舞者37 分钟前
web 网页数据传输处理过程
前端
非凡ghost39 分钟前
FxSound:提升音频体验,让音乐更动听
前端·学习·音视频·生活·软件需求
Mr. Cao code40 分钟前
Docker:颠覆传统虚拟化的轻量级革命
linux·运维·ubuntu·docker·容器