68 lines
2.0 KiB
Go
68 lines
2.0 KiB
Go
package tasksch
|
|
|
|
import (
|
|
"sort"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
defTaskMan TaskMan
|
|
defLastHours = 24
|
|
)
|
|
|
|
type TaskMan struct {
|
|
taskList map[string]ITask
|
|
}
|
|
|
|
func init() {
|
|
defTaskMan.taskList = make(map[string]ITask)
|
|
}
|
|
|
|
func (m *TaskMan) RunParallelTask(taskName string, config *ParallelConfig, userName string, worker WorkFunc, itemList interface{}, params ...interface{}) *ParallelTask {
|
|
task := RunParallelTask(taskName, config, userName, worker, itemList, params...)
|
|
m.ManageTask(task)
|
|
return task
|
|
}
|
|
|
|
func (m *TaskMan) RunSeqTask(taskName string, userName string, worker SeqWorkFunc, stepCount int, params ...interface{}) *SeqTask {
|
|
task := RunSeqTask(taskName, userName, worker, stepCount, params...)
|
|
m.ManageTask(task)
|
|
return task
|
|
}
|
|
|
|
func (m *TaskMan) GetTasks(taskID string, fromStatus, toStatus int, lastHours int) (taskList TaskList) {
|
|
if lastHours == 0 {
|
|
lastHours = defLastHours
|
|
}
|
|
lastTime := time.Now().Add(time.Duration(-lastHours) * time.Hour).Unix()
|
|
for k, v := range m.taskList {
|
|
status := v.GetStatus()
|
|
if !((taskID != "" && taskID != k) || status < fromStatus || status > toStatus || v.GetCreatedAt().Unix() < lastTime) {
|
|
taskList = append(taskList, v)
|
|
}
|
|
}
|
|
sort.Sort(TaskList(taskList))
|
|
return taskList
|
|
}
|
|
|
|
func (m *TaskMan) ManageTask(task ITask) ITask {
|
|
m.taskList[task.GetID()] = task
|
|
return task
|
|
}
|
|
|
|
func RunManagedParallelTask(taskName string, config *ParallelConfig, userName string, worker WorkFunc, itemList interface{}, params ...interface{}) *ParallelTask {
|
|
return defTaskMan.RunParallelTask(taskName, config, userName, worker, itemList, params...)
|
|
}
|
|
|
|
func RunManagedSeqTask(taskName string, userName string, worker SeqWorkFunc, stepCount int, params ...interface{}) *SeqTask {
|
|
return defTaskMan.RunSeqTask(taskName, userName, worker, stepCount, params...)
|
|
}
|
|
|
|
func GetTasks(taskID string, fromStatus, toStatus int, lastHours int) (taskList TaskList) {
|
|
return defTaskMan.GetTasks(taskID, fromStatus, toStatus, lastHours)
|
|
}
|
|
|
|
func ManageTask(task ITask) ITask {
|
|
return defTaskMan.ManageTask(task)
|
|
}
|