From fd223c75425e6870b1b4c5e931d1073804ecbd2a Mon Sep 17 00:00:00 2001 From: yusing Date: Fri, 28 Mar 2025 05:59:04 +0800 Subject: [PATCH] refactor: utils.WaitExit --- cmd/main.go | 12 +----------- internal/task/utils.go | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index c11a8113..4107dc88 100755 --- a/cmd/main.go +++ b/cmd/main.go @@ -138,17 +138,7 @@ func main() { config.WatchChanges() - sig := make(chan os.Signal, 1) - signal.Notify(sig, syscall.SIGINT) - signal.Notify(sig, syscall.SIGTERM) - signal.Notify(sig, syscall.SIGHUP) - - // wait for signal - <-sig - - // gracefully shutdown - logging.Info().Msg("shutting down") - _ = task.GracefulShutdown(time.Second * time.Duration(cfg.Value().TimeoutShutdown)) + task.WaitExit(cfg.Value().TimeoutShutdown) } func prepareDirectory(dir string) { diff --git a/internal/task/utils.go b/internal/task/utils.go index 3f376581..da0bc365 100644 --- a/internal/task/utils.go +++ b/internal/task/utils.go @@ -4,6 +4,9 @@ import ( "context" "encoding/json" "errors" + "os" + "os/signal" + "syscall" "time" "github.com/yusing/go-proxy/internal/logging" @@ -73,3 +76,17 @@ func GracefulShutdown(timeout time.Duration) (err error) { } } } + +func WaitExit(shutdownTimeout int) { + sig := make(chan os.Signal, 1) + signal.Notify(sig, syscall.SIGINT) + signal.Notify(sig, syscall.SIGTERM) + signal.Notify(sig, syscall.SIGHUP) + + // wait for signal + <-sig + + // gracefully shutdown + logging.Info().Msg("shutting down") + _ = GracefulShutdown(time.Second * time.Duration(shutdownTimeout)) +}