| 33 | } |
| 34 | |
| 35 | func NewSimpleTaskExecutor(runner TaskRunner) *SimpleTaskExecutor { |
| 36 | if runner == nil { |
| 37 | runner = NewDefaultTaskRunner() |
| 38 | } |
| 39 | |
| 40 | executor := &SimpleTaskExecutor{ |
| 41 | timer: time.NewTimer(1 * time.Hour), |
| 42 | taskQueue: make(ScheduledTaskQueue, 0), |
| 43 | newTaskChannel: make(chan *ScheduledRunnableTask), |
| 44 | rescheduleTaskChannel: make(chan *ScheduledRunnableTask), |
| 45 | taskRunner: runner, |
| 46 | shutdownChannel: make(chan chan bool), |
| 47 | } |
| 48 | |
| 49 | executor.timer.Stop() |
| 50 | |
| 51 | go executor.run() |
| 52 | |
| 53 | return executor |
| 54 | } |
| 55 | |
| 56 | func (executor *SimpleTaskExecutor) Schedule(task Task, delay time.Duration) (ScheduledTask, error) { |
| 57 | if task == nil { |