5c8ba59790
This commit introduces the Validator interface, which is intended to be implemented by any sub configs. It specifies a Validate() error method that should fail if a sub configuration contains any invalid or insane parameters. In addition, a package-level Validate method can be used to check a variadic number of sub configs implementing the Validator interface. This allows the primary config struct to be extended via targeted and/or specialized sub configs, and validate all of them in sequence without bloating the main package with the actual validation logic.
53 lines
1.5 KiB
Go
53 lines
1.5 KiB
Go
package lncfg
|
|
|
|
import "fmt"
|
|
|
|
const (
|
|
// DefaultReadWorkers is the default maximum number of concurrent
|
|
// workers used by the daemon's read pool.
|
|
DefaultReadWorkers = 100
|
|
|
|
// DefaultWriteWorkers is the default maximum number of concurrent
|
|
// workers used by the daemon's write pool.
|
|
DefaultWriteWorkers = 100
|
|
|
|
// DefaultSigWorkers is the default maximum number of concurrent workers
|
|
// used by the daemon's sig pool.
|
|
DefaultSigWorkers = 8
|
|
)
|
|
|
|
// Workers exposes CLI configuration for turning resources consumed by worker
|
|
// pools.
|
|
type Workers struct {
|
|
// Read is the maximum number of concurrent read pool workers.
|
|
Read int `long:"read" description:"Maximum number of concurrent read pool workers."`
|
|
|
|
// Write is the maximum number of concurrent write pool workers.
|
|
Write int `long:"write" description:"Maximum number of concurrent write pool workers."`
|
|
|
|
// Sig is the maximum number of concurrent sig pool workers.
|
|
Sig int `long:"sig" description:"Maximum number of concurrent sig pool workers."`
|
|
}
|
|
|
|
// Validate checks the Workers configuration to ensure that the input values are
|
|
// sane.
|
|
func (w *Workers) Validate() error {
|
|
if w.Read <= 0 {
|
|
return fmt.Errorf("number of read workers (%d) must be "+
|
|
"positive", w.Read)
|
|
}
|
|
if w.Write <= 0 {
|
|
return fmt.Errorf("number of write workers (%d) must be "+
|
|
"positive", w.Write)
|
|
}
|
|
if w.Sig <= 0 {
|
|
return fmt.Errorf("number of sig workers (%d) must be "+
|
|
"positive", w.Sig)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// Compile-time constraint to ensure Workers implements the Validator interface.
|
|
var _ Validator = (*Workers)(nil)
|