feat: task manage api
This commit is contained in:
@ -99,6 +99,14 @@ func (tm *Manager[K]) GetByStates(states ...string) []*Task[K] {
|
||||
return tasks
|
||||
}
|
||||
|
||||
func (tm *Manager[K]) ListUndone() []*Task[K] {
|
||||
return tm.GetByStates(PENDING, RUNNING, CANCELING)
|
||||
}
|
||||
|
||||
func (tm *Manager[K]) ListDone() []*Task[K] {
|
||||
return tm.GetByStates(SUCCEEDED, CANCELED, ERRORED)
|
||||
}
|
||||
|
||||
func NewTaskManager[K comparable](maxWorker int, updateID ...func(*K)) *Manager[K] {
|
||||
tm := &Manager[K]{
|
||||
tasks: generic_sync.MapOf[K, *Task[K]]{},
|
||||
|
@ -10,7 +10,7 @@ import (
|
||||
var (
|
||||
PENDING = "pending"
|
||||
RUNNING = "running"
|
||||
Succeeded = "succeeded"
|
||||
SUCCEEDED = "succeeded"
|
||||
CANCELING = "canceling"
|
||||
CANCELED = "canceled"
|
||||
ERRORED = "errored"
|
||||
@ -65,7 +65,7 @@ func (t *Task[K]) run() {
|
||||
} else if t.Error != nil {
|
||||
t.state = ERRORED
|
||||
} else {
|
||||
t.state = Succeeded
|
||||
t.state = SUCCEEDED
|
||||
if t.callback != nil {
|
||||
t.callback(t)
|
||||
}
|
||||
@ -77,7 +77,7 @@ func (t *Task[K]) retry() {
|
||||
}
|
||||
|
||||
func (t *Task[K]) Cancel() {
|
||||
if t.state == Succeeded || t.state == CANCELED {
|
||||
if t.state == SUCCEEDED || t.state == CANCELED {
|
||||
return
|
||||
}
|
||||
if t.cancel != nil {
|
||||
|
@ -28,7 +28,7 @@ func TestTask_Manager(t *testing.T) {
|
||||
t.Errorf("task status not running: %s", task.state)
|
||||
}
|
||||
time.Sleep(time.Second)
|
||||
if task.state != Succeeded {
|
||||
if task.state != SUCCEEDED {
|
||||
t.Errorf("task status not finished: %s", task.state)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user