github.com/celestiaorg/celestia-node@v0.15.0-beta.1/nodebuilder/rpc/module.go (about) 1 package rpc 2 3 import ( 4 "context" 5 6 "go.uber.org/fx" 7 8 "github.com/celestiaorg/celestia-node/api/rpc" 9 "github.com/celestiaorg/celestia-node/nodebuilder/node" 10 ) 11 12 func ConstructModule(tp node.Type, cfg *Config) fx.Option { 13 // sanitize config values before constructing module 14 cfgErr := cfg.Validate() 15 16 baseComponents := fx.Options( 17 fx.Supply(cfg), 18 fx.Error(cfgErr), 19 fx.Provide(fx.Annotate( 20 server, 21 fx.OnStart(func(ctx context.Context, server *rpc.Server) error { 22 return server.Start(ctx) 23 }), 24 fx.OnStop(func(ctx context.Context, server *rpc.Server) error { 25 return server.Stop(ctx) 26 }), 27 )), 28 ) 29 30 switch tp { 31 case node.Light, node.Full, node.Bridge: 32 return fx.Module( 33 "rpc", 34 baseComponents, 35 fx.Invoke(registerEndpoints), 36 ) 37 default: 38 panic("invalid node type") 39 } 40 }