micro/util/sync/options.go
Vasiliy Tolstov 7b2e3cc8aa lint fixes
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-09-30 21:00:02 +03:00

47 lines
1.1 KiB
Go

package sync
import (
"time"
"github.com/unistack-org/micro/v3/store"
)
// Options represents Sync options
type Options struct {
// Stores represents layers in the sync in ascending order. L0, L1, L2, etc
Stores []store.Store
// SyncInterval is the duration between syncs from L0 to L1
SyncInterval time.Duration
// SyncMultiplier is the multiplication factor between each store.
SyncMultiplier int64
}
// Option sets Sync Options
type Option func(o *Options)
// Stores sets the layers that make up the sync
func Stores(stores ...store.Store) Option {
return func(o *Options) {
o.Stores = make([]store.Store, len(stores))
for i, s := range stores {
o.Stores[i] = s
}
}
}
// nolint: golint,revive
// SyncInterval sets the duration between syncs from L0 to L1
func SyncInterval(d time.Duration) Option {
return func(o *Options) {
o.SyncInterval = d
}
}
// nolint: golint,revive
// SyncMultiplier sets the multiplication factor for time to wait each sync layer
func SyncMultiplier(i int64) Option {
return func(o *Options) {
o.SyncMultiplier = i
}
}