github.com/onflow/flow-go@v0.33.17/engine/collection/epochmgr/factories/builder.go (about) 1 package factories 2 3 import ( 4 "fmt" 5 6 "github.com/dgraph-io/badger/v2" 7 "github.com/rs/zerolog" 8 9 "github.com/onflow/flow-go/module" 10 builder "github.com/onflow/flow-go/module/builder/collection" 11 finalizer "github.com/onflow/flow-go/module/finalizer/collection" 12 "github.com/onflow/flow-go/module/mempool" 13 "github.com/onflow/flow-go/network" 14 clusterstate "github.com/onflow/flow-go/state/cluster" 15 "github.com/onflow/flow-go/state/protocol" 16 "github.com/onflow/flow-go/storage" 17 ) 18 19 type BuilderFactory struct { 20 db *badger.DB 21 protoState protocol.State 22 mainChainHeaders storage.Headers 23 trace module.Tracer 24 opts []builder.Opt 25 metrics module.CollectionMetrics 26 pusher network.Engine // engine for pushing finalized collection to consensus committee 27 log zerolog.Logger 28 } 29 30 func NewBuilderFactory( 31 db *badger.DB, 32 protoState protocol.State, 33 mainChainHeaders storage.Headers, 34 trace module.Tracer, 35 metrics module.CollectionMetrics, 36 pusher network.Engine, 37 log zerolog.Logger, 38 opts ...builder.Opt, 39 ) (*BuilderFactory, error) { 40 41 factory := &BuilderFactory{ 42 db: db, 43 protoState: protoState, 44 mainChainHeaders: mainChainHeaders, 45 trace: trace, 46 metrics: metrics, 47 pusher: pusher, 48 log: log, 49 opts: opts, 50 } 51 return factory, nil 52 } 53 54 func (f *BuilderFactory) Create( 55 clusterState clusterstate.State, 56 clusterHeaders storage.Headers, 57 clusterPayloads storage.ClusterPayloads, 58 pool mempool.Transactions, 59 epoch uint64, 60 ) (module.Builder, *finalizer.Finalizer, error) { 61 62 build, err := builder.NewBuilder( 63 f.db, 64 f.trace, 65 f.protoState, 66 clusterState, 67 f.mainChainHeaders, 68 clusterHeaders, 69 clusterPayloads, 70 pool, 71 f.log, 72 epoch, 73 f.opts..., 74 ) 75 if err != nil { 76 return nil, nil, fmt.Errorf("could not create builder: %w", err) 77 } 78 79 final := finalizer.NewFinalizer( 80 f.db, 81 pool, 82 f.pusher, 83 f.metrics, 84 ) 85 86 return build, final, nil 87 }