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

最后

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

相关推荐
xy_optics17 分钟前
用matlab探索卷积神经网络(Convolutional Neural Networks)-3
开发语言·matlab·cnn
有梦想的攻城狮17 分钟前
spring-cloud-alibaba-nacos-config使用说明
java·spring·nacos·springcloud·配置中心
独好紫罗兰22 分钟前
洛谷题单3-P1720 月落乌啼算钱(斐波那契数列)-python-流程图重构
开发语言·算法·leetcode
rufeike1 小时前
Rclone同步Linux数据到google云盘
linux·运维·服务器
csdn_aspnet1 小时前
如何在 Linux 上安装 Python
linux·运维·python
木木黄木木2 小时前
html5炫酷3D文字效果项目开发实践
前端·3d·html5
良许Linux2 小时前
怎么自学嵌入式?
linux
良许Linux2 小时前
你见过的最差的程序员是怎样的?
linux
慕容莞青2 小时前
MATLAB语言的进程管理
开发语言·后端·golang
Yan-英杰2 小时前
【百日精通JAVA | SQL篇 | 第三篇】 MYSQL增删改查
java·数据库·sql