Documentation
¶
Index ¶
- type Gateway
- func (g *Gateway) Address() string
- func (g *Gateway) Serve(services ...*service.Service) merry.Error
- func (g *Gateway) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (g *Gateway) ServeTLS(services ...*service.Service) merry.Error
- func (g *Gateway) Shutdown() (err error)
- func (g *Gateway) String() string
- type URLHook
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Gateway ¶
type Gateway struct {
Name string // The name of the Gateway for registration
Addr string // TCP address to listen on, ":http" if empty
HandleInterrupt bool // Should SIGINT and SIGTERM interrupts be handled?
DisableKeepAlive bool // Should TCP keep alive be disabled?
GracePeriod time.Duration // Timeout for graceful shutdown of open connections
TLSConfig *tls.Config // optional TLS config, used by ServeTLS
// ReadTimeout is the maximum duration for reading the entire
// request, including the body.
//
// Because ReadTimeout does not let Handlers make per-request
// decisions on each request body's acceptable deadline or
// upload rate, most users will prefer to use
// ReadHeaderTimeout. It is valid to use them both.
ReadTimeout time.Duration
// ReadHeaderTimeout is the amount of time allowed to read
// request headers. The connection's read deadline is reset
// after reading the headers and the Handler can decide what
// is considered too slow for the body.
ReadHeaderTimeout time.Duration
// WriteTimeout is the maximum duration before timing out
// writes of the response. It is reset whenever a new
// request's header is read. Like ReadTimeout, it does not
// let Handlers make decisions on a per-request basis.
WriteTimeout time.Duration
// IdleTimeout is the maximum amount of time to wait for the
// next request when keep-alives are enabled. If IdleTimeout
// is zero, the value of ReadTimeout is used. If both are
// zero, ReadHeaderTimeout is used.
IdleTimeout time.Duration
// MaxHeaderBytes controls the maximum number of bytes the
// server will read parsing the request header's keys and
// values, including the request line. It does not limit the
// size of the request body.
// If zero, DefaultMaxHeaderBytes is used.
MaxHeaderBytes int
// TLSNextProto optionally specifies a function to take over
// ownership of the provided TLS connection when an NPN/ALPN
// protocol upgrade has occurred. The map key is the protocol
// name negotiated. The Handler argument should be used to
// handle HTTP requests and will initialize the Request's TLS
// and RemoteAddr if not already set. The connection is
// automatically closed when the function returns.
// If TLSNextProto is not nil, HTTP/2 support is not enabled
// automatically.
TLSNextProto map[string]func(*http.Server, *tls.Conn, http.Handler)
// RequestIDHeaderName optionally customizes the name of the
// response header for the request id.
// If empty "X-Request-Id" will be used.
RequestIDHeaderName string
// RequestIDGenerator optionally customizes how request ids
// are generated.
// If nil then `httpx.Request.GenerateID` will be used.
RequestIDGenerator httpx.StringExtractor
// Handlers define handlers to run on all request before
// any other dispatch or validation.
// Example uses would be rate limiting or authentication.
Handlers []httpx.Handler
// HandlersTimeout is the maximum amount of time to wait for
// all gateway-level handlers to complete.
// If the timeout is exceeded the entire request is aborted.
HandlersTimeout time.Duration
// InternalServerErrorHandler optionally customizes the
// response returned to the user agent when the gateway
// encounters an error trying to service the requst before
// the corresponding endpoint has been determined.
// If nil the default handler will return a 500 status code
// with an empty body.
InternalServerErrorHandler httpx.ErrorHandler
// NotFoundHandler optionally customizes the response
// returned to the user agent when no endpoint is configured
// service a request path.
// If nil the default handler will return a 404 status code
// with an empty body.
NotFoundHandler httpx.Handler
// Registrar implements sd.Registrar and registers
// the gateway service with a service registry, using the
// Gateway's `Name` field. If nil, no registration occurs.
Registrar sd.Registrar
// RegistrationURLHook provides the *url.URL to be used in
// the Registrar's `Register` method. If `Registrar` is nil,
// this hook is not called. If this hook is nil, no service is
// registered via `Register`.
RegistrationURLHook URLHook
// CheckURLHook provides the *url.URL to be used in
// the Registrar's `AddCheck` method. If `Registrar` is nil,
// this hook is not called. If this hook is nil, no check is
// registered via `AddCheck`.
CheckURLHook URLHook
// ErrorHook optionally customizes how errors encountered
// servicing a request are disposed.
// If nil the request id and error are sent to the standard
// library `log.Println` function.
ErrorHook httpx.ErrorHook
// CompletionHook optionally customizes the behavior after
// a request has been serviced.
// If nil no action will be taken.
CompletionHook httpx.CompletionHook
// contains filtered or unexported fields
}
Click to show internal directories.
Click to hide internal directories.