aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Crute <mike@crute.us>2022-05-21 19:13:05 -0700
committerMike Crute <mike@crute.us>2022-05-21 19:13:05 -0700
commit7890c268d0b7e59c9f9bc24d7094887e08b8f665 (patch)
tree38ecf64ee63e8ea9d9a3fee9bdef9e844319fe6a
parentdaecc0776d67cd2c14c04f62f60603373b7512e3 (diff)
downloadgolib-7890c268d0b7e59c9f9bc24d7094887e08b8f665.tar.bz2
golib-7890c268d0b7e59c9f9bc24d7094887e08b8f665.tar.xz
golib-7890c268d0b7e59c9f9bc24d7094887e08b8f665.zip
service: add eager jobsv0.3.4
-rw-r--r--service/app_runner.go13
1 files 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
19 19
20type AppRunner struct { 20type AppRunner struct {
21 Logger AppRunnerLogger 21 Logger AppRunnerLogger
22 initJobs []SyncRunnerFunc 22 initJobs []SyncRunnerFunc // Jobs that run synchronously before other jobs
23 jobs []RunnerFunc 23 jobs []RunnerFunc // Normal jobs
24 backgroundJobs []RunnerFunc 24 backgroundJobs []RunnerFunc // Jobs that can be disabled
25 eagerJobs []RunnerFunc // Jobs that must start immediately
25 wg *sync.WaitGroup 26 wg *sync.WaitGroup
26 sigs chan os.Signal 27 sigs chan os.Signal
27 ctx context.Context 28 ctx context.Context
@@ -33,6 +34,7 @@ func NewAppRunner(ctx context.Context, logger AppRunnerLogger) *AppRunner {
33 initJobs: []SyncRunnerFunc{}, 34 initJobs: []SyncRunnerFunc{},
34 jobs: []RunnerFunc{}, 35 jobs: []RunnerFunc{},
35 backgroundJobs: []RunnerFunc{}, 36 backgroundJobs: []RunnerFunc{},
37 eagerJobs: []RunnerFunc{},
36 wg: &sync.WaitGroup{}, 38 wg: &sync.WaitGroup{},
37 sigs: make(chan os.Signal), 39 sigs: make(chan os.Signal),
38 Logger: logger, 40 Logger: logger,
@@ -61,6 +63,11 @@ func (r *AppRunner) AddJob(f RunnerFunc) {
61 r.jobs = append(r.jobs, f) 63 r.jobs = append(r.jobs, f)
62} 64}
63 65
66func (r *AppRunner) AddJobRunNow(f RunnerFunc) {
67 r.eagerJobs = append(r.eagerJobs, f)
68 r.goRunPanic(f)
69}
70
64func (r *AppRunner) AddJobs(jobs []RunnerFunc) { 71func (r *AppRunner) AddJobs(jobs []RunnerFunc) {
65 for _, j := range jobs { 72 for _, j := range jobs {
66 r.AddJob(j) 73 r.AddJob(j)