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

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.lryc.cn/news/452955.html

相关文章:

  • Windows 编译 FFmpeg 源码详细教程
  • JavaCV 实现视频链接截取封面工具
  • 初识Linux · 进程替换
  • 项目-坦克大战学习-人机ai
  • YOLOv11改进 | Conv篇 | YOLOv11引入SKConv
  • 招联2025校招内推
  • 美容院管理创新:SpringBoot系统设计与开发
  • 文心一言 VS 讯飞星火 VS chatgpt (361)-- 算法导论24.3 3题
  • ArkTS 开发中,有两种网络请求
  • 记录一次病毒启动脚本
  • 2019~2023博文汇总目录
  • springboot项目配置部分依赖从私服拉取,部分从阿里云拉取
  • 返回索引对象中各元素的数据类型 pandas.Index.dtype
  • 通过freepbx搭建小型电话系统的过程
  • pdf处理1
  • 区间覆盖(贪心)
  • [rk3588 debain]cpu死锁问题解决
  • CMU 10423 Generative AI:lec18(大模型的分布式训练)
  • 项目级别的配置文件 `.git/config`||全局配置文件 `~/.gitconfig`
  • 【Docker】配置文件
  • 坐标系变换总结
  • 数据在内存中的存储【上】
  • Prometheus之Pushgateway使用
  • Rust Web开发常用库
  • ios内购支付-支付宝APP支付提现
  • 新课发布|鸿蒙HarmonyOS Next商城APP应用开发实战
  • 基于Java,SpringBoot,Vue智慧校园健康驿站体检论坛请假管理系统
  • 【数据分享】2001-2023年我国省市县镇四级的逐月平均气温数据(免费获取/Shp/Excel格式)
  • c#代码介绍23种设计模式_16迭代器模式
  • 408算法题leetcode--第23天