func Start()

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())
}