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  }