49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
package task
|
||
|
||
import (
|
||
"gitlink.org.cn/cloudream/common/pkgs/mq"
|
||
"gitlink.org.cn/cloudream/common/pkgs/types"
|
||
myreflect "gitlink.org.cn/cloudream/common/utils/reflect"
|
||
)
|
||
|
||
// 任务
|
||
// 由于json-iter库的缺陷,这个类型名必须加一点前缀,否则会和advisor中的重名导致代码异常
|
||
type ExeTaskInfo interface {
|
||
Noop()
|
||
}
|
||
|
||
// 增加了新类型后需要在这里也同步添加
|
||
var TaskInfoTypeUnion = types.NewTypeUnion[ExeTaskInfo]()
|
||
|
||
type TaskInfoBase struct{}
|
||
|
||
func (s *TaskInfoBase) Noop() {}
|
||
|
||
// 任务上报的状态
|
||
// 由于json-iter库的缺陷,这个类型名必须加一点前缀,否则会和advisor中的重名导致代码异常
|
||
type ExeTaskStatus interface {
|
||
Noop()
|
||
}
|
||
|
||
// 增加了新类型后需要在这里也同步添加
|
||
var TaskStatusTypeUnion = types.NewTypeUnion[ExeTaskStatus]()
|
||
|
||
type TaskStatusBase struct{}
|
||
|
||
func (s *TaskStatusBase) Noop() {}
|
||
|
||
// 注:此函数必须以var _ = Register[xxx, xxx]()的形式被调用,这样才能保证init中RegisterUnionType时
|
||
// TypeUnion不是空的。(因为包级变量初始化比init函数调用先进行)
|
||
func Register[TTaskInfo ExeTaskInfo, TTaskStatus ExeTaskStatus]() any {
|
||
TaskInfoTypeUnion.Add(myreflect.TypeOf[TTaskInfo]())
|
||
|
||
TaskStatusTypeUnion.Add(myreflect.TypeOf[TTaskStatus]())
|
||
|
||
return nil
|
||
}
|
||
|
||
func init() {
|
||
mq.RegisterUnionType(TaskInfoTypeUnion)
|
||
mq.RegisterUnionType(TaskStatusTypeUnion)
|
||
}
|