前言
你好,我是醉墨居士,我们上篇博客实现了任务执行流的路由模块,接下来我们实现一下对任务执行流进行任务
接口
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
最后
我是醉墨居士,我们这篇博客完成了路由分组的代码实现