aarifullin
0f45e3d344
All checks were successful
DCO action / DCO (pull_request) Successful in 2m10s
Vulncheck / Vulncheck (pull_request) Successful in 3m26s
Build / Build Components (1.20) (pull_request) Successful in 5m41s
Build / Build Components (1.21) (pull_request) Successful in 5m44s
Tests and linters / Staticcheck (pull_request) Successful in 7m10s
Tests and linters / Lint (pull_request) Successful in 8m14s
Tests and linters / Tests (1.21) (pull_request) Successful in 14m24s
Tests and linters / Tests (1.20) (pull_request) Successful in 14m41s
Tests and linters / Tests with -race (pull_request) Successful in 14m38s
Signed-off-by: Airat Arifullin <a.arifullin@yadro.com>
67 lines
1.1 KiB
Go
67 lines
1.1 KiB
Go
package chainbase
|
|
|
|
import (
|
|
"io/fs"
|
|
"os"
|
|
"time"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/logger"
|
|
"go.etcd.io/bbolt"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type Option func(*cfg)
|
|
|
|
type cfg struct {
|
|
path string
|
|
perm fs.FileMode
|
|
noSync bool
|
|
maxBatchDelay time.Duration
|
|
maxBatchSize int
|
|
log *logger.Logger
|
|
}
|
|
|
|
func defaultCfg() *cfg {
|
|
return &cfg{
|
|
perm: os.ModePerm,
|
|
maxBatchDelay: bbolt.DefaultMaxBatchDelay,
|
|
maxBatchSize: bbolt.DefaultMaxBatchSize,
|
|
log: &logger.Logger{Logger: zap.L()},
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
|
|
func WithLogger(l *logger.Logger) Option {
|
|
return func(c *cfg) {
|
|
c.log = l
|
|
}
|
|
}
|