Credit braintree/manners

This commit is contained in:
Iwasaki Yudai 2015-08-24 19:37:36 +09:00
parent 470621f39e
commit b37f7973bd
15 changed files with 904 additions and 8 deletions

View file

@ -0,0 +1,35 @@
package manners
import (
"net"
"net/http"
)
var defaultServer *GracefulServer
// ListenAndServe provides a graceful version of the function provided by the
// net/http package. Call Close() to stop the server.
func ListenAndServe(addr string, handler http.Handler) error {
defaultServer = NewWithServer(&http.Server{Addr: addr, Handler: handler})
return defaultServer.ListenAndServe()
}
// ListenAndServeTLS provides a graceful version of the function provided by the
// net/http package. Call Close() to stop the server.
func ListenAndServeTLS(addr string, certFile string, keyFile string, handler http.Handler) error {
defaultServer = NewWithServer(&http.Server{Addr: addr, Handler: handler})
return defaultServer.ListenAndServeTLS(certFile, keyFile)
}
// Serve provides a graceful version of the function provided by the net/http
// package. Call Close() to stop the server.
func Serve(l net.Listener, handler http.Handler) error {
defaultServer = NewWithServer(&http.Server{Handler: handler})
return defaultServer.Serve(l)
}
// Shuts down the default server used by ListenAndServe, ListenAndServeTLS and
// Serve. It returns true if it's the first time Close is called.
func Close() bool {
return defaultServer.Close()
}