123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package servers
- import (
- "gogs.tyduyong.com/duyong/dy-admin/internal/iam/config"
- "os"
- "os/signal"
- "syscall"
- )
- // APIServer 管理本服务开放的所有端口
- type APIServer struct {
- gRPCAPIServer *grpcAPIServer
- httpAPIServer *httpAPIServer
- }
- // PreparedAPIServer 必须得到此实例,才能run
- type PreparedAPIServer struct {
- *APIServer
- }
- func CreateAPIServer(cfg *config.Config) (*APIServer, error) {
- return &APIServer{
- gRPCAPIServer: newRpcServer(cfg),
- httpAPIServer: newHttpServer(cfg),
- }, nil
- }
- func (s *APIServer) PrepareRun() *PreparedAPIServer {
- // 服务运行前操作
- return &PreparedAPIServer{s}
- }
- func (ps *PreparedAPIServer) Run() error {
- // 启动服务
- ps.gRPCAPIServer.Run()
- ps.httpAPIServer.Run()
- // 监听信号 2和9
- sigCh := make(chan os.Signal, 1)
- signal.Notify(sigCh, syscall.SIGINT, syscall.SIGKILL)
- <-sigCh
- // 停止服务
- ps.gRPCAPIServer.Close()
- ps.httpAPIServer.Close()
- return nil
- }
|