mirror of
https://github.com/hay-kot/homebox.git
synced 2024-12-23 23:36:30 +00:00
2867a05c92
* use new httpkit runner * refactor out last httpkit changes * fix timeout defaults * fix wrong time input - closes #819
37 lines
601 B
Go
37 lines
601 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
)
|
|
|
|
type BackgroundTask struct {
|
|
name string
|
|
Interval time.Duration
|
|
Fn func(context.Context)
|
|
}
|
|
|
|
func (tsk *BackgroundTask) Name() string {
|
|
return tsk.name
|
|
}
|
|
|
|
func NewTask(name string, interval time.Duration, fn func(context.Context)) *BackgroundTask {
|
|
return &BackgroundTask{
|
|
Interval: interval,
|
|
Fn: fn,
|
|
}
|
|
}
|
|
|
|
func (tsk *BackgroundTask) Start(ctx context.Context) error {
|
|
timer := time.NewTimer(tsk.Interval)
|
|
|
|
for {
|
|
select {
|
|
case <-ctx.Done():
|
|
return nil
|
|
case <-timer.C:
|
|
timer.Reset(tsk.Interval)
|
|
tsk.Fn(ctx)
|
|
}
|
|
}
|
|
}
|