github.com/celestiaorg/celestia-node@v0.15.0-beta.1/nodebuilder/gateway/module.go (about) 1 package gateway 2 3 import ( 4 "context" 5 6 logging "github.com/ipfs/go-log/v2" 7 "go.uber.org/fx" 8 9 "github.com/celestiaorg/celestia-node/api/gateway" 10 headerServ "github.com/celestiaorg/celestia-node/nodebuilder/header" 11 "github.com/celestiaorg/celestia-node/nodebuilder/node" 12 shareServ "github.com/celestiaorg/celestia-node/nodebuilder/share" 13 stateServ "github.com/celestiaorg/celestia-node/nodebuilder/state" 14 ) 15 16 var log = logging.Logger("module/gateway") 17 18 func ConstructModule(tp node.Type, cfg *Config) fx.Option { 19 // sanitize config values before constructing module 20 cfgErr := cfg.Validate() 21 if !cfg.Enabled { 22 return fx.Options() 23 } 24 25 baseComponents := fx.Options( 26 fx.Supply(cfg), 27 fx.Error(cfgErr), 28 fx.Provide(fx.Annotate( 29 server, 30 fx.OnStart(func(ctx context.Context, server *gateway.Server) error { 31 return server.Start(ctx) 32 }), 33 fx.OnStop(func(ctx context.Context, server *gateway.Server) error { 34 return server.Stop(ctx) 35 }), 36 )), 37 ) 38 39 switch tp { 40 case node.Light, node.Full: 41 return fx.Module( 42 "gateway", 43 baseComponents, 44 fx.Invoke(Handler), 45 ) 46 case node.Bridge: 47 return fx.Module( 48 "gateway", 49 baseComponents, 50 fx.Invoke(func( 51 state stateServ.Module, 52 share shareServ.Module, 53 header headerServ.Module, 54 serv *gateway.Server, 55 ) { 56 Handler(state, share, header, nil, serv) 57 }), 58 ) 59 default: 60 panic("invalid node type") 61 } 62 }