Go语言实现长连接并发框架 - 路由分组

发布于:2024-10-09 ⋅ 阅读:(28) ⋅ 点赞:(0)

前言

你好,我是醉墨居士,我们上篇博客实现了任务执行流的路由模块,接下来我们实现一下对任务执行流进行任务

接口

trait/router_group.go

type RouterGroup interface {
	Router

	Group(flow ...TaskFunc) RouterGroup
	Use(flow ...TaskFunc)
}

结构体

gcore/router_group.go

// RouterGroup 路由组
type RouterGroup struct {
	trait.Router

	baseTaskFlow trait.TaskFlow
}

// NewRouterGroup 创建路由组
func NewRouterGroup(engine trait.Router) trait.RouterGroup {
	return &RouterGroup{
		Router:   NewRouter(),
		baseTaskFlow: NewTaskFlow(),
	}
}

接口实现

gcore/router_group.go

// Group 子路由组
func (g *RouterGroup) Group(flow ...trait.TaskFunc) trait.RouterGroup {
	group := &RouterGroup{
		Router:   g.Router,
		baseTaskFlow: g.baseTaskFlow.Append(flow...),
	}

	return group
}

// Use 注册插件
func (g *RouterGroup) Use(flow ...trait.TaskFunc) {
	g.baseTaskFlow = g.baseTaskFlow.Append(flow...)
}

// Regist 注册任务执行逻辑
func (g *RouterGroup) Regist(id uint16, flow ...trait.TaskFunc) {
	g.Router.Regist(id, g.baseTaskFlow.Append(flow...).Funcs()...)
}

// RegistFlow 注册任务执行流
func (g *RouterGroup) RegistFlow(id uint16, flow trait.TaskFlow) {
	g.Router.RegistFlow(id, flow)
}

项目地址

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

最后

我是醉墨居士,我们这篇博客完成了路由分组的代码实现