自学内容网 自学内容网

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

前言

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

接口

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

最后

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


原文地址:https://blog.csdn.net/qq_67733273/article/details/142692029

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!