| // +build ignore,OMIT |
| |
| package main |
| |
| import ( |
| "context" |
| "fmt" |
| "log" |
| "net/http" |
| "os" |
| "os/signal" |
| ) |
| |
| func main() { |
| // subscribe to SIGINT signals |
| quit := make(chan os.Signal) // HL |
| signal.Notify(quit, os.Interrupt) |
| |
| srv := &http.Server{Addr: ":8080", Handler: http.DefaultServeMux} |
| go func() { // HL |
| <-quit // HL |
| log.Println("Shutting down server...") |
| if err := srv.Shutdown(context.Background()); err != nil { // HL |
| log.Fatalf("could not shutdown: %v", err) |
| } |
| }() |
| |
| http.HandleFunc("/", handler) |
| err := srv.ListenAndServe() |
| if err != http.ErrServerClosed { // HL |
| log.Fatalf("listen: %s\n", err) |
| } |
| log.Println("Server gracefully stopped") |
| } |
| |
| func handler(w http.ResponseWriter, r *http.Request) { |
| fmt.Fprintln(w, "hello") |
| } |