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  }