28 lines
561 B
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
|
|
}
|