123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package manners
-
- import (
- "net"
- "net/http"
- "sync"
- )
-
- var (
- defaultServer *GracefulServer
- defaultServerLock = &sync.Mutex{}
- )
-
- func init() {
- defaultServerLock.Lock()
- }
-
- // 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})
- defaultServerLock.Unlock()
- 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})
- defaultServerLock.Unlock()
- 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})
- defaultServerLock.Unlock()
- 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 {
- defaultServerLock.Lock()
- return defaultServer.Close()
- }
|