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

最后

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉墨居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值