package http_test
import (
+ "context"
"fmt"
"io"
"io/ioutil"
"log"
"net/http"
+ "os"
+ "os/signal"
)
func ExampleHijacker() {
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
+}