diff options
author | Stephen McQuay (smcquay) <stephen@mcquay.me> | 2017-07-15 12:33:00 -0600 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@golang.org> | 2017-11-14 03:22:34 +0000 |
commit | b29bb78a7e0325a2522e14c25053c06a9a8ea1db (patch) | |
tree | 9c6ee71047fb71e7dee610823dfad0099ebd1192 | |
parent | f7df55d174b886f8aea0243aa40e8debffbdffc0 (diff) | |
download | go-git-b29bb78a7e0325a2522e14c25053c06a9a8ea1db.tar.gz |
net/http: add example to Server.Shutdown
Fixes #19579
Change-Id: Id99ca6de94d8d895dfaed1ed507e9d36c7f60670
Reviewed-on: https://go-review.googlesource.com/48869
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-rw-r--r-- | src/net/http/example_test.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/net/http/example_test.go b/src/net/http/example_test.go index 1774795d37..9de0893e87 100644 --- a/src/net/http/example_test.go +++ b/src/net/http/example_test.go @@ -5,11 +5,14 @@ package http_test import ( + "context" "fmt" "io" "io/ioutil" "log" "net/http" + "os" + "os/signal" ) func ExampleHijacker() { @@ -109,3 +112,28 @@ func ExampleResponseWriter_trailers() { w.Header().Set("AtEnd3", "value 3") // These will appear as trailers. }) } + +func ExampleServer_Shutdown() { + var srv http.Server + + idleConnsClosed := make(chan struct{}) + go func() { + sigint := make(chan os.Signal, 1) + signal.Notify(sigint, os.Interrupt) + <-sigint + + // We received an interrupt signal, shut down. + if err := srv.Shutdown(context.Background()); err != nil { + // Error from closing listeners, or context timeout: + log.Printf("HTTP server Shutdown: %v", err) + } + close(idleConnsClosed) + }() + + if err := srv.ListenAndServe(); err != http.ErrServerClosed { + // Error starting or closing listener: + log.Printf("HTTP server ListenAndServe: %v", err) + } + + <-idleConnsClosed +} |