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

最后

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

相关推荐
请不要叫我菜鸡25 分钟前
mit6824-01-MapReduce详解
大数据·分布式·后端·mapreduce·函数式编程·容错性
柚乐果果1 小时前
ECharts图表图例4
java·大数据·eclipse·echarts
Ljw...1 小时前
进度条(倒计时)Linux
linux
Kenny.志1 小时前
1、Spring Boot 3.x 集成 Eureka Server/Client
spring boot·后端·eureka
xjjeffery1 小时前
进程的环境
linux·c语言·后端
深度菜鸡-达闻西1 小时前
服务器开通个人账户
运维·服务器
这孩子叫逆1 小时前
Redis实战(使用Scan,Lua脚本,一次扣多个库存,多线程并发使用,并发获取分布式锁,BItMap实现签到和在线统计)
java·redis·bitmap·scan
风清云淡_A1 小时前
uniapp中在web端如何友好的展示app当前的版本等信息
前端·uni-app
GoppViper2 小时前
uniapp设置从右上角到左下角的三种渐变颜色
前端·前端框架·uni-app·uniapp
yufei-coder2 小时前
掌握C#核心概念:类、继承、泛型等
服务器·开发语言·c#