in runtime/server.go [34:86]
func Start() error {
var (
initSuccessed bool
gracesrvs []emserver.GracefulServer
)
defer func() {
// if init failed, we need to stop the server already started
if !initSuccessed && len(gracesrvs) > 0 {
for _, srv := range gracesrvs {
srv.Stop()
}
}
}()
if config.GlobalConfig().Server.TCPOption != nil {
tcpserver, err := emserver.NewTCPServer(config.GlobalConfig().Server.TCPOption)
if err != nil {
return err
}
gracesrvs = append(gracesrvs, tcpserver)
}
if config.GlobalConfig().Server.GRPCOption != nil {
grpcserver, err := emserver.NewGRPCServer(config.GlobalConfig().Server.GRPCOption)
if err != nil {
return err
}
gracesrvs = append(gracesrvs, grpcserver)
}
if config.GlobalConfig().Server.HTTPOption != nil {
httpserver, err := emserver.NewHTTPServer(config.GlobalConfig().Server.HTTPOption)
if err != nil {
return err
}
gracesrvs = append(gracesrvs, httpserver)
}
if config.GlobalConfig().PProf != nil && config.GlobalConfig().PProf.Enable {
pprofserver := emserver.NewPProfServer(config.GlobalConfig().PProf)
gracesrvs = append(gracesrvs, pprofserver)
}
srv := &Server{
servers: gracesrvs,
}
app := fx.New(
fx.Invoke(register),
fx.Provide(func() *Server {
return srv
}),
)
initSuccessed = true
return app.Start(context.TODO())
}