package chainbase import ( "io/fs" "os" "time" "go.etcd.io/bbolt" ) type Option func(*cfg) type cfg struct { path string perm fs.FileMode noSync bool maxBatchDelay time.Duration maxBatchSize int } func defaultCfg() *cfg { return &cfg{ perm: os.ModePerm, maxBatchDelay: bbolt.DefaultMaxBatchDelay, maxBatchSize: bbolt.DefaultMaxBatchSize, } } func WithPath(path string) Option { return func(c *cfg) { c.path = path } } func WithPerm(perm fs.FileMode) Option { return func(c *cfg) { c.perm = perm } } func WithNoSync(noSync bool) Option { return func(c *cfg) { c.noSync = noSync } } func WithMaxBatchDelay(maxBatchDelay time.Duration) Option { return func(c *cfg) { c.maxBatchDelay = maxBatchDelay } } func WithMaxBatchSize(maxBatchSize int) Option { return func(c *cfg) { c.maxBatchSize = maxBatchSize } }