33 lines
562 B
Go
33 lines
562 B
Go
package runbook
|
|
|
|
import (
|
|
"context"
|
|
"sync"
|
|
)
|
|
|
|
var jobCancelMap sync.Map
|
|
|
|
func registerJobCancel(jobID uint, cancel context.CancelFunc) {
|
|
jobCancelMap.Store(jobID, cancel)
|
|
}
|
|
|
|
func clearJobCancel(jobID uint) {
|
|
if v, ok := jobCancelMap.Load(jobID); ok {
|
|
if cancel, ok2 := v.(context.CancelFunc); ok2 {
|
|
cancel()
|
|
}
|
|
jobCancelMap.Delete(jobID)
|
|
}
|
|
}
|
|
|
|
func CancelJob(jobID uint) bool {
|
|
if v, ok := jobCancelMap.Load(jobID); ok {
|
|
if cancel, ok2 := v.(context.CancelFunc); ok2 {
|
|
cancel()
|
|
}
|
|
jobCancelMap.Delete(jobID)
|
|
return true
|
|
}
|
|
return false
|
|
}
|