Documentation ¶
Overview ¶
Package grace use to hot reload Description: http://grisha.org/blog/2014/06/03/graceful-restart-in-golang/
Usage:
import(
"log" "net/http" "os" "github.com/izi-global/izigo/grace"
)
func handler(w http.ResponseWriter, r *http.Request) { w.Write([]byte("WORLD!")) } func main() { mux := http.NewServeMux() mux.HandleFunc("/hello", handler) err := grace.ListenAndServe("localhost:8080", mux) if err != nil { log.Println(err) } log.Println("Server on 8080 stopped") os.Exit(0) }
Index ¶
- Constants
- Variables
- func ListenAndServe(addr string, handler http.Handler) error
- func ListenAndServeTLS(addr string, certFile string, keyFile string, handler http.Handler) error
- type Server
- func (srv *Server) ListenAndServe() (err error)
- func (srv *Server) ListenAndServeMutualTLS(certFile, keyFile, trustFile string) (err error)
- func (srv *Server) ListenAndServeTLS(certFile, keyFile string) (err error)
- func (srv *Server) RegisterSignalHook(ppFlag int, sig os.Signal, f func()) (err error)
- func (srv *Server) Serve() (err error)
Constants ¶
const ( // PreSignal is the position to add filter before signal PreSignal = iota // PostSignal is the position to add filter after signal PostSignal // StateInit represent the application inited StateInit // StateRunning represent the application is running StateRunning // StateShuttingDown represent the application is shutting down StateShuttingDown // StateTerminate represent the application is killed StateTerminate )
Variables ¶
var ( // DefaultReadTimeOut is the HTTP read timeout DefaultReadTimeOut time.Duration // DefaultWriteTimeOut is the HTTP Write timeout DefaultWriteTimeOut time.Duration // DefaultMaxHeaderBytes is the Max HTTP Herder size, default is 0, no limit DefaultMaxHeaderBytes int // DefaultTimeout is the shutdown server's timeout. default is 60s DefaultTimeout = 60 * time.Second )
Functions ¶
func ListenAndServe ¶
ListenAndServe refer http.ListenAndServe
Types ¶
type Server ¶
type Server struct { *http.Server GraceListener net.Listener SignalHooks map[int]map[os.Signal][]func() Network string // contains filtered or unexported fields }
Server embedded http.Server
func (*Server) ListenAndServe ¶
ListenAndServe listens on the TCP network address srv.Addr and then calls Serve to handle requests on incoming connections. If srv.Addr is blank, ":http" is used.
func (*Server) ListenAndServeMutualTLS ¶
ListenAndServeMutualTLS listens on the TCP network address srv.Addr and then calls Serve to handle requests on incoming mutual TLS connections.
func (*Server) ListenAndServeTLS ¶
ListenAndServeTLS listens on the TCP network address srv.Addr and then calls Serve to handle requests on incoming TLS connections.
Filenames containing a certificate and matching private key for the server must be provided. If the certificate is signed by a certificate authority, the certFile should be the concatenation of the server's certificate followed by the CA's certificate.
If srv.Addr is blank, ":https" is used.
func (*Server) RegisterSignalHook ¶
RegisterSignalHook registers a function to be run PreSignal or PostSignal for a given signal.