github.com/onflow/flow-go@v0.33.17/engine/collection/epochmgr/factories/sync.go (about) 1 package factories 2 3 import ( 4 "github.com/rs/zerolog" 5 6 "github.com/onflow/flow-go/engine/collection" 7 syncengine "github.com/onflow/flow-go/engine/collection/synchronization" 8 "github.com/onflow/flow-go/model/flow" 9 "github.com/onflow/flow-go/module" 10 "github.com/onflow/flow-go/module/chainsync" 11 "github.com/onflow/flow-go/network" 12 "github.com/onflow/flow-go/state/cluster" 13 "github.com/onflow/flow-go/storage" 14 ) 15 16 type SyncEngineFactory struct { 17 log zerolog.Logger 18 net network.EngineRegistry 19 me module.Local 20 metrics module.EngineMetrics 21 } 22 23 func NewSyncEngineFactory( 24 log zerolog.Logger, 25 metrics module.EngineMetrics, 26 net network.EngineRegistry, 27 me module.Local, 28 ) (*SyncEngineFactory, error) { 29 30 factory := &SyncEngineFactory{ 31 log: log, 32 me: me, 33 net: net, 34 metrics: metrics, 35 } 36 return factory, nil 37 } 38 39 func (f *SyncEngineFactory) Create( 40 participants flow.IdentityList, 41 state cluster.State, 42 blocks storage.ClusterBlocks, 43 core *chainsync.Core, 44 comp collection.Compliance, 45 ) (*syncengine.Engine, error) { 46 47 engine, err := syncengine.New( 48 f.log, 49 f.metrics, 50 f.net, 51 f.me, 52 participants, 53 state, 54 blocks, 55 comp, 56 core, 57 ) 58 return engine, err 59 }