refactor(server/v2): simplify server component init (#20742)

This commit is contained in:
Julien Robert
2024-06-21 10:14:50 +00:00
committed by GitHub
parent 207b30262f
commit c823d18def
6 changed files with 29 additions and 33 deletions
+13 -13
View File
@@ -35,17 +35,17 @@ type GRPCService interface {
RegisterGRPCServer(gogogrpc.Server)
}
func New() GRPCServer {
return GRPCServer{}
func New() *GRPCServer {
return &GRPCServer{}
}
// Init returns a correctly configured and initialized gRPC server.
// Note, the caller is responsible for starting the server.
func (g GRPCServer) Init(appI serverv2.AppI[transaction.Tx], v *viper.Viper, logger log.Logger) (serverv2.ServerComponent[transaction.Tx], error) {
func (g *GRPCServer) Init(appI serverv2.AppI[transaction.Tx], v *viper.Viper, logger log.Logger) error {
cfg := DefaultConfig()
if v != nil {
if err := v.Sub(serverName).Unmarshal(&cfg); err != nil {
return GRPCServer{}, fmt.Errorf("failed to unmarshal config: %w", err)
return fmt.Errorf("failed to unmarshal config: %w", err)
}
}
@@ -61,18 +61,18 @@ func (g GRPCServer) Init(appI serverv2.AppI[transaction.Tx], v *viper.Viper, log
// the gRPC server exposes.
gogoreflection.Register(grpcSrv)
return GRPCServer{
grpcSrv: grpcSrv,
config: cfg,
logger: logger.With(log.ModuleKey, serverName),
}, nil
g.grpcSrv = grpcSrv
g.config = cfg
g.logger = logger.With(log.ModuleKey, serverName)
return nil
}
func (g GRPCServer) Name() string {
func (g *GRPCServer) Name() string {
return serverName
}
func (g GRPCServer) Start(ctx context.Context) error {
func (g *GRPCServer) Start(ctx context.Context) error {
listener, err := net.Listen("tcp", g.config.Address)
if err != nil {
return fmt.Errorf("failed to listen on address %s: %w", g.config.Address, err)
@@ -95,14 +95,14 @@ func (g GRPCServer) Start(ctx context.Context) error {
return err
}
func (g GRPCServer) Stop(ctx context.Context) error {
func (g *GRPCServer) Stop(ctx context.Context) error {
g.logger.Info("stopping gRPC server...", "address", g.config.Address)
g.grpcSrv.GracefulStop()
return nil
}
func (g GRPCServer) Config() any {
func (g *GRPCServer) Config() any {
if g.config == nil || g.config == (&Config{}) {
return DefaultConfig()
}