github.com/celestiaorg/celestia-node@v0.15.0-beta.1/nodebuilder/p2p/module.go (about) 1 package p2p 2 3 import ( 4 logging "github.com/ipfs/go-log/v2" 5 "github.com/libp2p/go-libp2p/core/metrics" 6 "go.uber.org/fx" 7 8 "github.com/celestiaorg/celestia-node/nodebuilder/node" 9 "github.com/celestiaorg/celestia-node/share/ipld" 10 ) 11 12 var log = logging.Logger("module/p2p") 13 14 // ConstructModule collects all the components and services related to p2p. 15 func ConstructModule(tp node.Type, cfg *Config) fx.Option { 16 // sanitize config values before constructing module 17 cfgErr := cfg.Validate() 18 19 baseComponents := fx.Options( 20 fx.Supply(*cfg), 21 fx.Error(cfgErr), 22 fx.Provide(Key), 23 fx.Provide(id), 24 fx.Provide(peerStore), 25 fx.Provide(connectionManager), 26 fx.Provide(connectionGater), 27 fx.Provide(host), 28 fx.Provide(routedHost), 29 fx.Provide(pubSub), 30 fx.Provide(dataExchange), 31 fx.Provide(ipld.NewBlockservice), 32 fx.Provide(peerRouting), 33 fx.Provide(contentRouting), 34 fx.Provide(addrsFactory(cfg.AnnounceAddresses, cfg.NoAnnounceAddresses)), 35 fx.Provide(metrics.NewBandwidthCounter), 36 fx.Provide(newModule), 37 fx.Invoke(Listen(cfg.ListenAddresses)), 38 fx.Provide(resourceManager), 39 fx.Provide(resourceManagerOpt(allowList)), 40 ) 41 42 switch tp { 43 case node.Full, node.Bridge: 44 return fx.Module( 45 "p2p", 46 baseComponents, 47 fx.Provide(blockstoreFromEDSStore), 48 fx.Provide(infiniteResources), 49 ) 50 case node.Light: 51 return fx.Module( 52 "p2p", 53 baseComponents, 54 fx.Provide(blockstoreFromDatastore), 55 fx.Provide(autoscaleResources), 56 ) 57 default: 58 panic("invalid node type") 59 } 60 }