@@ -98,8 +98,12 @@ type Task struct {
9898 isScheduled bool
9999}
100100
101- func NewTask (taskRequirements TaskRequirements ) * Task {
102- return & Task {TaskRequirements : taskRequirements }
101+ func NewTask (taskRequirements TaskRequirements , opts ... func (* Task )) * Task {
102+ t := & Task {TaskRequirements : taskRequirements }
103+ for _ , opt := range opts {
104+ opt (t )
105+ }
106+ return t
103107}
104108
105109func (t * Task ) InstallTask (options InstallTaskOptions ) {
@@ -155,10 +159,9 @@ type OneShotTask struct {
155159
156160func NewOneShotTask (taskRequirements TaskRequirements , when * time.Time ) * OneShotTask {
157161 o := & OneShotTask {}
158- o .Task = NewTask (taskRequirements )
159- if when != nil {
160- o .taskTime = when
161- }
162+ o .Task = NewTask (taskRequirements , func (task * Task ) {
163+ task .taskTime = when
164+ })
162165 return o
163166}
164167
@@ -172,10 +175,9 @@ type OneShotDeleteTask struct {
172175
173176func NewOneShotDeleteTask (taskRequirements TaskRequirements , when * time.Time ) * OneShotDeleteTask {
174177 o := & OneShotDeleteTask {}
175- o .Task = NewTask (taskRequirements )
176- if when != nil {
177- o .taskTime = when
178- }
178+ o .Task = NewTask (taskRequirements , func (task * Task ) {
179+ task .taskTime = when
180+ })
179181 return o
180182}
181183
@@ -379,11 +381,15 @@ func ClearTaskManager(localLog zerolog.Logger) {
379381}
380382
381383type taskItem struct {
382- taskTime time.Time
384+ taskTime * time.Time
383385 id int
384386 task TaskRequirements
385387}
386388
389+ func (t taskItem ) String () string {
390+ return fmt .Sprintf ("taskItem(taskTime:%v, id:%d, %v)" , t .taskTime , t .id , t .task )
391+ }
392+
387393type taskManager struct {
388394 sync.Mutex
389395
@@ -455,7 +461,7 @@ func (m *taskManager) InstallTask(task TaskRequirements) {
455461 // save this in the task list
456462 m .count ++
457463 heap .Push (& m .tasks , & PriorityItem [int64 , taskItem ]{
458- value : taskItem {taskTime : GetTaskManagerTime (), id : m .count , task : task },
464+ value : taskItem {taskTime : task . GetTaskTime (), id : m .count , task : task },
459465 priority : task .GetTaskTime ().UnixNano () - time.Time {}.UnixNano (),
460466 })
461467 m .log .Debug ().Stringer ("tasks" , m .tasks ).Msg ("tasks" )
0 commit comments