diff options
author | Mike Crute <mike@crute.us> | 2022-05-21 19:13:05 -0700 |
---|---|---|
committer | Mike Crute <mike@crute.us> | 2022-05-21 19:13:05 -0700 |
commit | 7890c268d0b7e59c9f9bc24d7094887e08b8f665 (patch) | |
tree | 38ecf64ee63e8ea9d9a3fee9bdef9e844319fe6a | |
parent | daecc0776d67cd2c14c04f62f60603373b7512e3 (diff) | |
download | golib-7890c268d0b7e59c9f9bc24d7094887e08b8f665.tar.bz2 golib-7890c268d0b7e59c9f9bc24d7094887e08b8f665.tar.xz golib-7890c268d0b7e59c9f9bc24d7094887e08b8f665.zip |
service: add eager jobsv0.3.4
-rw-r--r-- | service/app_runner.go | 13 |
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 | ||
20 | type AppRunner struct { | 20 | type 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 | ||
66 | func (r *AppRunner) AddJobRunNow(f RunnerFunc) { | ||
67 | r.eagerJobs = append(r.eagerJobs, f) | ||
68 | r.goRunPanic(f) | ||
69 | } | ||
70 | |||
64 | func (r *AppRunner) AddJobs(jobs []RunnerFunc) { | 71 | func (r *AppRunner) AddJobs(jobs []RunnerFunc) { |
65 | for _, j := range jobs { | 72 | for _, j := range jobs { |
66 | r.AddJob(j) | 73 | r.AddJob(j) |