2023-12-16 07:12:20 +00:00
|
|
|
package health
|
|
|
|
|
2024-03-11 06:41:32 +00:00
|
|
|
import "runtime"
|
|
|
|
|
2023-12-16 07:12:20 +00:00
|
|
|
type config struct {
|
|
|
|
liveChecks []Checker
|
|
|
|
readyChecks []Checker
|
|
|
|
maxConcurrent int
|
|
|
|
}
|
|
|
|
|
|
|
|
type Option func(cfg *config)
|
|
|
|
|
|
|
|
const maxConcurrentDefault = 5
|
|
|
|
|
|
|
|
func newConfig(opts ...Option) *config {
|
|
|
|
cfg := &config{
|
2024-03-11 06:41:32 +00:00
|
|
|
maxConcurrent: min(runtime.NumCPU(), maxConcurrentDefault),
|
2023-12-16 07:12:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
for _, opt := range opts {
|
|
|
|
opt(cfg)
|
|
|
|
}
|
|
|
|
|
|
|
|
return cfg
|
|
|
|
}
|
|
|
|
|
|
|
|
func WithMaxConcurrent(max int) Option {
|
|
|
|
return func(cfg *config) {
|
|
|
|
cfg.maxConcurrent = max
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func WithLiveCheck(check Checker) Option {
|
|
|
|
return func(cfg *config) {
|
|
|
|
cfg.liveChecks = append(cfg.liveChecks, check)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func WithReadyCheck(check Checker) Option {
|
|
|
|
return func(cfg *config) {
|
|
|
|
cfg.readyChecks = append(cfg.readyChecks, check)
|
|
|
|
}
|
|
|
|
}
|