File tree Expand file tree Collapse file tree 2 files changed +68
-2
lines changed Expand file tree Collapse file tree 2 files changed +68
-2
lines changed Original file line number Diff line number Diff line change 77
88 proxy "github.com/codeshelldev/secured-signal-api/internals/proxy"
99 middlewares "github.com/codeshelldev/secured-signal-api/internals/proxy/middlewares"
10+ docker "github.com/codeshelldev/secured-signal-api/utils/docker"
1011 env "github.com/codeshelldev/secured-signal-api/utils/env"
1112 log "github.com/codeshelldev/secured-signal-api/utils/logger"
1213)
@@ -56,5 +57,20 @@ func main() {
5657
5758 log .Info ("Server Listening on " , addr )
5859
59- http .ListenAndServe (addr , log_m0 .Use ())
60- }
60+ server := & http.Server {
61+ Addr : addr ,
62+ Handler : log_m0 .Use (),
63+ }
64+
65+ stop := docker .Run (func (){
66+ err := server .ListenAndServe ()
67+
68+ if err != nil && err != http .ErrServerClosed {
69+ log .Fatal ("Server error: " , err .Error ())
70+ }
71+ })
72+
73+ <- stop
74+
75+ docker .Shutdown (server )
76+ }
Original file line number Diff line number Diff line change 1+ package docker
2+
3+ import (
4+ "context"
5+ "net/http"
6+ "os"
7+ "os/signal"
8+ "syscall"
9+ "time"
10+
11+ log "github.com/codeshelldev/secured-signal-api/utils/logger"
12+ )
13+
14+ var stop chan os.Signal
15+
16+ func Run (main func ()) chan os.Signal {
17+ stop = make (chan os.Signal , 1 )
18+ signal .Notify (stop , syscall .SIGINT , syscall .SIGTERM )
19+
20+ go main ()
21+
22+ return stop
23+ }
24+
25+ func Exit (code int ) {
26+ log .Info ("Exiting..." )
27+
28+ os .Exit (code )
29+
30+ stop <- syscall .SIGTERM
31+ }
32+
33+ func Shutdown (server * http.Server ) {
34+ log .Info ("Shutdown signal received" )
35+
36+ log .Sync ()
37+
38+ ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Second )
39+ defer cancel ()
40+
41+ err := server .Shutdown (ctx );
42+
43+ if err != nil {
44+ log .Fatal ("Server shutdown failed: " , err .Error ())
45+
46+ log .Info ("Server exited forcefully" )
47+ } else {
48+ log .Info ("Server exited gracefully" )
49+ }
50+ }
You can’t perform that action at this time.
0 commit comments