47 lines
1.0 KiB
Go
47 lines
1.0 KiB
Go
package event
|
|
|
|
import advtsk "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq/advisor/task"
|
|
|
|
// advisor上报任务进度
|
|
type AdvisorTaskUpdated struct {
|
|
FullTaskID string
|
|
TaskStatus advtsk.AdvTaskStatus
|
|
}
|
|
|
|
func NewAdvisorTaskUpdated(fullTaskID string, taskStatus advtsk.AdvTaskStatus) *AdvisorTaskUpdated {
|
|
return &AdvisorTaskUpdated{
|
|
FullTaskID: fullTaskID,
|
|
TaskStatus: taskStatus,
|
|
}
|
|
}
|
|
|
|
func AssertAdvisorTaskStatus[T advtsk.AdvTaskStatus](evt Event, fullTaskID string) (T, error) {
|
|
var ret T
|
|
if evt == nil {
|
|
return ret, ErrUnconcernedTask
|
|
}
|
|
|
|
if reportTaskStatus, ok := evt.(*AdvisorTaskUpdated); 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.(*AdvisorTaskTimeout); ok {
|
|
if taskTimeout.FullTaskID != fullTaskID {
|
|
return ret, ErrUnconcernedTask
|
|
}
|
|
|
|
return ret, ErrTaskTimeout
|
|
}
|
|
|
|
return ret, ErrUnconcernedTask
|
|
}
|