github.com/celestiaorg/celestia-node@v0.15.0-beta.1/nodebuilder/das/module.go (about) 1 package das 2 3 import ( 4 "context" 5 6 "go.uber.org/fx" 7 8 "github.com/celestiaorg/celestia-node/das" 9 "github.com/celestiaorg/celestia-node/header" 10 modfraud "github.com/celestiaorg/celestia-node/nodebuilder/fraud" 11 "github.com/celestiaorg/celestia-node/nodebuilder/node" 12 ) 13 14 func ConstructModule(tp node.Type, cfg *Config) fx.Option { 15 var err error 16 // do not validate daser config for bridge node as it 17 // does not need it 18 if tp != node.Bridge { 19 err = cfg.Validate() 20 } 21 22 baseComponents := fx.Options( 23 fx.Supply(*cfg), 24 fx.Error(err), 25 fx.Provide( 26 func(c Config) []das.Option { 27 return []das.Option{ 28 das.WithSamplingRange(c.SamplingRange), 29 das.WithConcurrencyLimit(c.ConcurrencyLimit), 30 das.WithBackgroundStoreInterval(c.BackgroundStoreInterval), 31 das.WithSampleFrom(c.SampleFrom), 32 das.WithSampleTimeout(c.SampleTimeout), 33 } 34 }, 35 ), 36 ) 37 38 switch tp { 39 case node.Light, node.Full: 40 return fx.Module( 41 "das", 42 baseComponents, 43 fx.Provide(fx.Annotate( 44 newDASer, 45 fx.OnStart(func(ctx context.Context, breaker *modfraud.ServiceBreaker[*das.DASer, *header.ExtendedHeader]) error { 46 return breaker.Start(ctx) 47 }), 48 fx.OnStop(func(ctx context.Context, breaker *modfraud.ServiceBreaker[*das.DASer, *header.ExtendedHeader]) error { 49 return breaker.Stop(ctx) 50 }), 51 )), 52 // Module is needed for the RPC handler 53 fx.Provide(func(das *das.DASer) Module { 54 return das 55 }), 56 ) 57 case node.Bridge: 58 return fx.Module( 59 "das", 60 baseComponents, 61 fx.Provide(newDaserStub), 62 ) 63 default: 64 panic("invalid node type") 65 } 66 }