diff --git a/library/httpserver/httpserver.go b/library/httpserver/httpserver.go index e1e7afbc..34ce5951 100644 --- a/library/httpserver/httpserver.go +++ b/library/httpserver/httpserver.go @@ -171,3 +171,31 @@ func StartFirenzeServer(srv *http.Server, cfg *configcenter.DefaultConfig, ip st logger.Info("Server exited") //setServerStatusFD(ServerStatusFDStop) } + +func StartLeviServer(srv *http.Server, ip string, port int) { + go func() { + logger.Info("Start HTTP Server, ip: %v, port: %v", ip, port) + if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + logger.Fatal("listen: %v", err) + return + } + }() + + quit := make(chan os.Signal, 1) + signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) + <-quit + logger.Info("Shutdown Server ...") + + ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second) + if err := srv.Shutdown(ctx); err != nil { + logger.Fatal("Server Shutdown:", err) + } + defer cancel() + + select { + case <-ctx.Done(): + logger.Info("timeout of 1 seconds.") + } + + logger.Info("Server exited") +}