49 lines
1.0 KiB
Go
49 lines
1.0 KiB
Go
package event
|
|
|
|
import (
|
|
exectsk "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/executor/task"
|
|
)
|
|
|
|
// executor上报任务进度
|
|
type ExecutorTaskUpdated struct {
|
|
FullTaskID string
|
|
TaskStatus exectsk.TaskStatus
|
|
}
|
|
|
|
func NewExecutorTaskUpdated(fullTaskID string, taskStatus exectsk.TaskStatus) *ExecutorTaskUpdated {
|
|
return &ExecutorTaskUpdated{
|
|
FullTaskID: fullTaskID,
|
|
TaskStatus: taskStatus,
|
|
}
|
|
}
|
|
|
|
func AssertExecutorTaskStatus[T exectsk.TaskStatus](evt Event, fullTaskID string) (T, error) {
|
|
var ret T
|
|
if evt == nil {
|
|
return ret, ErrUnconcernedTask
|
|
}
|
|
|
|
if reportTaskStatus, ok := evt.(*ExecutorTaskUpdated); ok {
|
|
if reportTaskStatus.FullTaskID != fullTaskID {
|
|
return ret, ErrUnconcernedTask
|
|
}
|
|
|
|
status, ok := reportTaskStatus.TaskStatus.(T)
|
|
if !ok {
|
|
return ret, ErrUnconcernedTask
|
|
}
|
|
|
|
return status, nil
|
|
}
|
|
|
|
if taskTimeout, ok := evt.(*ExecutorTaskTimeout); ok {
|
|
if taskTimeout.FullTaskID != fullTaskID {
|
|
return ret, ErrUnconcernedTask
|
|
}
|
|
|
|
return ret, ErrTaskTimeout
|
|
}
|
|
|
|
return ret, ErrUnconcernedTask
|
|
}
|