51 lines
1.0 KiB
Go
51 lines
1.0 KiB
Go
package jobmgr
|
|
|
|
import (
|
|
"gitlink.org.cn/cloudream/common/pkgs/logger"
|
|
jobmod "gitlink.org.cn/cloudream/scheduler/common/models/job"
|
|
"gitlink.org.cn/cloudream/scheduler/manager/internal/jobmgr/event"
|
|
)
|
|
|
|
type DefaultHandler struct {
|
|
mgr *Manager
|
|
}
|
|
|
|
func NewDefaultHandler(mgr *Manager) *DefaultHandler {
|
|
return &DefaultHandler{
|
|
mgr: mgr,
|
|
}
|
|
}
|
|
|
|
// 处理Job。在此期间全局锁已锁定
|
|
func (h *DefaultHandler) Handle(job jobmod.Job) {
|
|
state := job.GetState()
|
|
if state == nil {
|
|
job.SetState(jobmod.NewStateFailed("unexpected nil state", nil))
|
|
h.mgr.handleState(job)
|
|
return
|
|
}
|
|
|
|
if _, ok := state.(*jobmod.StateFailed); ok {
|
|
logger.Warnf("state failed should not be handled by default handler")
|
|
return
|
|
}
|
|
|
|
job.SetState(jobmod.NewStateFailed("no handler for this state", state))
|
|
h.mgr.handleState(job)
|
|
}
|
|
|
|
// 外部发生了一个事件
|
|
func (h *DefaultHandler) OnEvent(broadcast event.Broadcast, evt event.Event) {
|
|
|
|
}
|
|
|
|
// 运行Handler
|
|
func (h *DefaultHandler) Serve() {
|
|
|
|
}
|
|
|
|
// 停止此Handler
|
|
func (h *DefaultHandler) Stop() {
|
|
|
|
}
|