45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package sync
 | |
| 
 | |
| import (
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/micro/go-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
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // SyncInterval sets the duration between syncs from L0 to L1
 | |
| func SyncInterval(d time.Duration) Option {
 | |
| 	return func(o *Options) {
 | |
| 		o.SyncInterval = d
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // SyncMultiplier sets the multiplication factor for time to wait each sync layer
 | |
| func SyncMultiplier(i int64) Option {
 | |
| 	return func(o *Options) {
 | |
| 		o.SyncMultiplier = i
 | |
| 	}
 | |
| }
 |