代码拉取完成,页面将自动刷新
package start
import (
"os"
"os/signal"
"strings"
"syscall"
"github.com/infraboard/mcube/app"
"github.com/spf13/cobra"
// 注册所有服务
_ "gitee.com/go-course/go9/projects/devcloud/mpaas/apps"
"gitee.com/go-course/go9/projects/devcloud/mpaas/common/logger"
"gitee.com/go-course/go9/projects/devcloud/mpaas/conf"
"gitee.com/go-course/go9/projects/devcloud/mpaas/protocol"
)
// startCmd represents the start command
var Cmd = &cobra.Command{
Use: "start",
Short: "mpaas API服务",
Long: "mpaas API服务",
RunE: func(cmd *cobra.Command, args []string) error {
conf := conf.C()
// 启动服务
ch := make(chan os.Signal, 1)
defer close(ch)
signal.Notify(ch, syscall.SIGTERM, syscall.SIGINT, syscall.SIGHUP, syscall.SIGQUIT)
// 初始化服务
svr, err := newService(conf)
if err != nil {
return err
}
// 等待信号处理
go svr.waitSign(ch)
// 启动服务
if err := svr.start(); err != nil {
if !strings.Contains(err.Error(), "http: Server closed") {
return err
}
}
return nil
},
}
func newService(cnf *conf.Config) (*service, error) {
http := protocol.NewHTTPService()
grpc := protocol.NewGRPCService()
svr := &service{
http: http,
grpc: grpc,
}
return svr, nil
}
type service struct {
http *protocol.HTTPService
grpc *protocol.GRPCService
}
func (s *service) start() error {
logger.L().Info().Msgf("loaded grpc app: %s", app.LoadedGrpcApp())
logger.L().Info().Msgf("loaded http app: %s", app.LoadedRESTfulApp())
logger.L().Info().Msgf("loaded internal app: %s", app.LoadedInternalApp())
go s.grpc.Start()
return s.http.Start()
}
func (s *service) waitSign(sign chan os.Signal) {
for sg := range sign {
switch v := sg.(type) {
default:
logger.L().Info().Msgf("receive signal '%v', start graceful shutdown", v.String())
if err := s.grpc.Stop(); err != nil {
logger.L().Info().Msgf("grpc graceful shutdown err: %s, force exit", err)
} else {
logger.L().Info().Msgf("grpc service stop complete")
}
if err := s.http.Stop(); err != nil {
logger.L().Info().Msgf("http graceful shutdown err: %s, force exit", err)
} else {
logger.L().Info().Msgf("http service stop complete")
}
return
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。