http urls monitor.

static.go 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package manners
  2. import (
  3. "net"
  4. "net/http"
  5. "sync"
  6. )
  7. var (
  8. defaultServer *GracefulServer
  9. defaultServerLock = &sync.Mutex{}
  10. )
  11. func init() {
  12. defaultServerLock.Lock()
  13. }
  14. // ListenAndServe provides a graceful version of the function provided by the
  15. // net/http package. Call Close() to stop the server.
  16. func ListenAndServe(addr string, handler http.Handler) error {
  17. defaultServer = NewWithServer(&http.Server{Addr: addr, Handler: handler})
  18. defaultServerLock.Unlock()
  19. return defaultServer.ListenAndServe()
  20. }
  21. // ListenAndServeTLS provides a graceful version of the function provided by the
  22. // net/http package. Call Close() to stop the server.
  23. func ListenAndServeTLS(addr string, certFile string, keyFile string, handler http.Handler) error {
  24. defaultServer = NewWithServer(&http.Server{Addr: addr, Handler: handler})
  25. defaultServerLock.Unlock()
  26. return defaultServer.ListenAndServeTLS(certFile, keyFile)
  27. }
  28. // Serve provides a graceful version of the function provided by the net/http
  29. // package. Call Close() to stop the server.
  30. func Serve(l net.Listener, handler http.Handler) error {
  31. defaultServer = NewWithServer(&http.Server{Handler: handler})
  32. defaultServerLock.Unlock()
  33. return defaultServer.Serve(l)
  34. }
  35. // Shuts down the default server used by ListenAndServe, ListenAndServeTLS and
  36. // Serve. It returns true if it's the first time Close is called.
  37. func Close() bool {
  38. defaultServerLock.Lock()
  39. return defaultServer.Close()
  40. }