当前位置: 首页 > article >正文

Go语言实现长连接并发框架 - 任务执行流路由模块

文章目录

  • 前言
  • 接口
  • 结构体
  • 接口实现
  • 项目地址
  • 最后

前言

你好,我是醉墨居士,上篇博客中我们实现了任务执行流上下文部分,接下来我们实现一下任务执行流的路由模块,基于该模块可以实现将消息转发到相应注册的任务执行流中进行处理

接口

trait/router.go

type Router interface {
	Regist(id uint16, flow ...TaskFunc)
	RegistFlow(id uint16, flow TaskFlow)
	TaskFlow(id uint16) TaskFlow
}

结构体

gcore/router.go

// Router 任务执行流路由器
type Router struct {
	apis map[uint16]trait.TaskFlow
}

// NewRouter 创建一个新的任务流路由器
func NewRouter() trait.Router {
	return &Router{
		apis: make(map[uint16]trait.TaskFlow),
	}
}

接口实现

gcore/router.go

// Regist 注册任务执行逻辑
func (r *Router) Regist(id uint16, flow ...trait.TaskFunc) {
	if _, ok := r.apis[id]; ok {
		r.apis[id].Extend(flow...)
	} else {
		r.apis[id] = NewTaskFlow(flow...)
	}
}

// RegistFlow 注册一个任务执行执行流
func (r *Router) RegistFlow(id uint16, flow trait.TaskFlow) {
	r.apis[id] = flow
}

// TaskFlow 根据消息ID获取任务执行流
func (r *Router) TaskFlow(id uint16) trait.TaskFlow {
	return r.apis[id]
}

项目地址

Github:https://github.com/zm50/gte
Giee:https://gitee.com/zm50/gte

最后

我是醉墨居士,我们这篇博客完成了任务执行流路由模块的代码实现


http://www.kler.cn/news/333475.html

相关文章:

  • 如何使用ssm实现基于Java的民宿预订管理系统的设计与实现
  • 前端学习——CSS——李白代表作品页面(3)
  • [Cocoa]_[初级]_[绘制文本如何设置断行效果]
  • 【重学 MySQL】五十四、整型数据类型
  • PC端微信小程序如何调试?
  • 不只是前端,后端、产品和测试也需要了解的浏览器知识(一)
  • ADC模拟-数字转换器
  • Android 10.0 系统framework层控制传感器开启和禁用功能实现
  • 【Xcode Command Line Tools】安装指南
  • 国外电商系统开发-运维系统添加拓扑节点
  • AI学习指南深度学习篇-学习率衰减的基本原理
  • Vue.js组件开发指南
  • VikParuchuri/marker 学习简单总结
  • 2款.NET开源且免费的Git可视化管理工具
  • Django一分钟:在Django中怎么存储树形结构的数据,DRF校验递归嵌套模型的替代方案
  • Python 工具库每日推荐 【BeautifulSoup】
  • wordpress函数has_tag()函数与get_the_tags()有什么区别?
  • 使用PL/SQL Deverloper过程遇见的问题
  • RTSP协议讲解
  • 简单线性回归分析-基于R语言