- MarshalJSON added for BaseTask.
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package tasksch
|
package tasksch
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -34,6 +35,9 @@ type ITask interface {
|
|||||||
GetCreatedAt() time.Time
|
GetCreatedAt() time.Time
|
||||||
|
|
||||||
AddChild(task ITask)
|
AddChild(task ITask)
|
||||||
|
GetChildren() TaskList
|
||||||
|
|
||||||
|
json.Marshaler
|
||||||
}
|
}
|
||||||
|
|
||||||
type BaseTask struct {
|
type BaseTask struct {
|
||||||
@@ -137,7 +141,8 @@ func (t *BaseTask) Cancel() {
|
|||||||
}
|
}
|
||||||
t.locker.Unlock()
|
t.locker.Unlock()
|
||||||
|
|
||||||
for _, subTask := range t.Children {
|
children := t.GetChildren()
|
||||||
|
for _, subTask := range children {
|
||||||
subTask.Cancel()
|
subTask.Cancel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -178,6 +183,26 @@ func (t *BaseTask) AddChild(task ITask) {
|
|||||||
t.Children = append(t.Children, task)
|
t.Children = append(t.Children, task)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *BaseTask) GetChildren() (children TaskList) {
|
||||||
|
t.locker.RLock()
|
||||||
|
defer t.locker.RUnlock()
|
||||||
|
|
||||||
|
if len(t.Children) > 0 {
|
||||||
|
children = make(TaskList, len(t.Children))
|
||||||
|
copy(children, t.Children)
|
||||||
|
}
|
||||||
|
return children
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////
|
||||||
|
|
||||||
|
func (t *BaseTask) MarshalJSON() ([]byte, error) {
|
||||||
|
type tBaseTask BaseTask
|
||||||
|
t.locker.RLock()
|
||||||
|
defer t.locker.RUnlock()
|
||||||
|
return utils.MustMarshal((*tBaseTask)(t)), nil
|
||||||
|
}
|
||||||
|
|
||||||
func (t *BaseTask) run(taskHandler func()) {
|
func (t *BaseTask) run(taskHandler func()) {
|
||||||
go func() {
|
go func() {
|
||||||
taskHandler()
|
taskHandler()
|
||||||
@@ -189,7 +214,6 @@ func (t *BaseTask) run(taskHandler func()) {
|
|||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////
|
|
||||||
func (t *BaseTask) finishedOneJob(itemCount int, err error) {
|
func (t *BaseTask) finishedOneJob(itemCount int, err error) {
|
||||||
t.locker.Lock()
|
t.locker.Lock()
|
||||||
defer t.locker.Unlock()
|
defer t.locker.Unlock()
|
||||||
|
|||||||
Reference in New Issue
Block a user