JCC-CSScheduler/manager/internal/jobmgr/event/utils.go

28 lines
561 B
Go

package event
import (
"context"
"gitlink.org.cn/cloudream/scheduler/manager/internal/jobmgr"
)
func WaitType[T jobmgr.Event](ctx context.Context, set *jobmgr.EventSet) (T, bool) {
ret, ok := set.Wait(ctx, func(evt jobmgr.Event) bool {
_, ok := evt.(T)
return ok
})
return ret.(T), ok
}
func WaitTypeAnd[T jobmgr.Event](ctx context.Context, set *jobmgr.EventSet, cond func(val T) bool) (T, bool) {
ret, ok := set.Wait(ctx, func(evt jobmgr.Event) bool {
e, ok := evt.(T)
if !ok {
return false
}
return cond(e)
})
return ret.(T), ok
}