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

最后

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

相关推荐
陆小叁2 分钟前
基于Flink CDC实现联系人与标签数据实时同步至ES的实践
java·elasticsearch·flink
Hilaku3 分钟前
深入WeakMap和WeakSet:管理数据和防止内存泄漏
前端·javascript·性能优化
CHEN5_023 分钟前
【Java基础】反射,注解,异常,Java8新特性,object类-详细介绍
java·开发语言
Juchecar5 分钟前
常见的 HTML 标签及 CSS 选择器速查表
前端
掉头发的王富贵12 分钟前
ShardingSphere-JDBC入门教程(上篇)
spring boot·后端·mysql
倔强的石头_12 分钟前
【Linux指南】动静态库与链接机制:从原理到实践
linux
Cx330❀16 分钟前
【数据结构初阶】--排序(四):归并排序
c语言·开发语言·数据结构·算法·排序算法
前端程序猿i18 分钟前
用本地代理 + ZIP 打包 + Excel 命名,优雅批量下载跨域 PDF
前端·javascript·vue.js·html
云间月131420 分钟前
飞算JavaAI智慧文旅场景实践:从景区管理到游客服务的全链路系统搭建
java·开发语言
盖世英雄酱5813621 分钟前
必须掌握的【InheritableThreadLocal】
java·后端