From 7890c268d0b7e59c9f9bc24d7094887e08b8f665 Mon Sep 17 00:00:00 2001 From: Mike Crute Date: Sat, 21 May 2022 19:13:05 -0700 Subject: service: add eager jobs --- service/app_runner.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/service/app_runner.go b/service/app_runner.go index e1eb98b..0240c27 100644 --- a/service/app_runner.go +++ b/service/app_runner.go @@ -19,9 +19,10 @@ type RunnerFunc func(context.Context, *sync.WaitGroup) error type AppRunner struct { Logger AppRunnerLogger - initJobs []SyncRunnerFunc - jobs []RunnerFunc - backgroundJobs []RunnerFunc + initJobs []SyncRunnerFunc // Jobs that run synchronously before other jobs + jobs []RunnerFunc // Normal jobs + backgroundJobs []RunnerFunc // Jobs that can be disabled + eagerJobs []RunnerFunc // Jobs that must start immediately wg *sync.WaitGroup sigs chan os.Signal ctx context.Context @@ -33,6 +34,7 @@ func NewAppRunner(ctx context.Context, logger AppRunnerLogger) *AppRunner { initJobs: []SyncRunnerFunc{}, jobs: []RunnerFunc{}, backgroundJobs: []RunnerFunc{}, + eagerJobs: []RunnerFunc{}, wg: &sync.WaitGroup{}, sigs: make(chan os.Signal), Logger: logger, @@ -61,6 +63,11 @@ func (r *AppRunner) AddJob(f RunnerFunc) { r.jobs = append(r.jobs, f) } +func (r *AppRunner) AddJobRunNow(f RunnerFunc) { + r.eagerJobs = append(r.eagerJobs, f) + r.goRunPanic(f) +} + func (r *AppRunner) AddJobs(jobs []RunnerFunc) { for _, j := range jobs { r.AddJob(j) -- cgit v1.2.3