Documentation
¶
Index ¶
- Constants
- func IsCodeError() bool
- type FieldType
- type MapRunPoolServer
- type MapRunPoolServerConfig
- type MapUpdPoolServer
- type MapUpdPoolServerConfig
- type PoolServer
- type PoolServerConfig
- func (p PoolServerConfig) MapRun(f MapRunPoolServerConfig) PoolServerConfig
- func (p PoolServerConfig) MapUpdate(f MapUpdPoolServerConfig) PoolServerConfig
- func (p PoolServerConfig) PoolServer() (PoolServer, liberr.Error)
- func (p PoolServerConfig) UpdatePoolServer(pSrv PoolServer) (PoolServer, liberr.Error)
- func (p PoolServerConfig) Validate() liberr.Error
- type Server
- type ServerConfig
- func (c ServerConfig) GetExpose() *url.URL
- func (c ServerConfig) GetListen() *url.URL
- func (c ServerConfig) GetTLS() (libtls.TLSConfig, liberr.Error)
- func (c ServerConfig) IsTLS() bool
- func (c ServerConfig) Server() Server
- func (c *ServerConfig) SetDefaultTLS(f func() libtls.TLSConfig)
- func (c *ServerConfig) SetParentContext(f func() context.Context)
- func (c ServerConfig) Validate() liberr.Error
Constants ¶
View Source
const ( ErrorParamsEmpty errors.CodeError = iota + errors.MIN_PKG_Httpserver ErrorHTTP2Configure ErrorPoolAdd ErrorPoolValidate ErrorPoolListen ErrorServerValidate ErrorPortUse )
Variables ¶
This section is empty.
Functions ¶
func IsCodeError ¶
func IsCodeError() bool
Types ¶
type MapRunPoolServer ¶ added in v1.5.0
type MapRunPoolServer func(srv Server)
type MapRunPoolServerConfig ¶ added in v1.5.0
type MapRunPoolServerConfig func(cfg ServerConfig)
type MapUpdPoolServer ¶ added in v1.5.0
type MapUpdPoolServerConfig ¶ added in v1.5.0
type MapUpdPoolServerConfig func(cfg ServerConfig) ServerConfig
type PoolServer ¶ added in v1.5.0
type PoolServer interface {
Add(srv ...Server) (PoolServer, liberr.Error)
Get(bindAddress string) Server
Del(bindAddress string) PoolServer
Has(bindAddress string) bool
Len() int
MapRun(f MapRunPoolServer)
MapUpd(f MapUpdPoolServer)
List(fieldFilter, fieldReturn FieldType, pattern, regex string) []string
Filter(field FieldType, pattern, regex string) PoolServer
IsRunning(asLeast bool) bool
WaitNotify(ctx context.Context, cancel context.CancelFunc)
Listen(handler http.Handler) liberr.Error
Restart()
Shutdown()
}
func NewPool ¶ added in v1.5.0
func NewPool(srv ...Server) PoolServer
type PoolServerConfig ¶ added in v1.5.0
type PoolServerConfig []ServerConfig
func (PoolServerConfig) MapRun ¶ added in v1.5.0
func (p PoolServerConfig) MapRun(f MapRunPoolServerConfig) PoolServerConfig
func (PoolServerConfig) MapUpdate ¶ added in v1.5.0
func (p PoolServerConfig) MapUpdate(f MapUpdPoolServerConfig) PoolServerConfig
func (PoolServerConfig) PoolServer ¶ added in v1.5.0
func (p PoolServerConfig) PoolServer() (PoolServer, liberr.Error)
func (PoolServerConfig) UpdatePoolServer ¶ added in v1.5.0
func (p PoolServerConfig) UpdatePoolServer(pSrv PoolServer) (PoolServer, liberr.Error)
func (PoolServerConfig) Validate ¶ added in v1.5.0
func (p PoolServerConfig) Validate() liberr.Error
type Server ¶ added in v1.5.0
type Server interface {
GetConfig() *ServerConfig
SetConfig(cfg *ServerConfig)
GetName() string
GetBindable() string
GetExpose() string
IsRunning() bool
IsTLS() bool
WaitNotify()
Merge(srv Server) bool
Listen(handler http.Handler) liberr.Error
Restart()
Shutdown()
}
func NewServer ¶
func NewServer(cfg *ServerConfig) Server
type ServerConfig ¶ added in v1.5.0
type ServerConfig struct {
// 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 `mapstructure:"read_timeout" json:"read_timeout" yaml:"read_timeout" toml:"read_timeout"`
// 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. If ReadHeaderTimeout
// is zero, the value of ReadTimeout is used. If both are
// zero, there is no timeout.
ReadHeaderTimeout time.Duration `mapstructure:"read_header_timeout" json:"read_header_timeout" yaml:"read_header_timeout" toml:"read_header_timeout"`
// 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 `mapstructure:"write_timeout" json:"write_timeout" yaml:"write_timeout" toml:"write_timeout"`
// 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 `mapstructure:"max_header_bytes" json:"max_header_bytes" yaml:"max_header_bytes" toml:"max_header_bytes"`
// MaxHandlers limits the number of http.Handler ServeHTTP goroutines
// which may run at a time over all connections.
// Negative or zero no limit.
MaxHandlers int `mapstructure:"max_handlers" json:"max_handlers" yaml:"max_handlers" toml:"max_handlers"`
// MaxConcurrentStreams optionally specifies the number of
// concurrent streams that each client may have open at a
// time. This is unrelated to the number of http.Handler goroutines
// which may be active globally, which is MaxHandlers.
// If zero, MaxConcurrentStreams defaults to at least 100, per
// the HTTP/2 spec's recommendations.
MaxConcurrentStreams uint32 `json:"max_concurrent_streams" json:"max_concurrent_streams" yaml:"max_concurrent_streams" toml:"max_concurrent_streams"`
// MaxReadFrameSize optionally specifies the largest frame
// this server is willing to read. A valid value is between
// 16k and 16M, inclusive. If zero or otherwise invalid, a
// default value is used.
MaxReadFrameSize uint32 `json:"max_read_frame_size" json:"max_read_frame_size" yaml:"max_read_frame_size" toml:"max_read_frame_size"`
// PermitProhibitedCipherSuites, if true, permits the use of
// cipher suites prohibited by the HTTP/2 spec.
PermitProhibitedCipherSuites bool `` /* 155-byte string literal not displayed */
// IdleTimeout specifies how long until idle clients should be
// closed with a GOAWAY frame. PING frames are not considered
// activity for the purposes of IdleTimeout.
IdleTimeout time.Duration `json:"idle_timeout" json:"idle_timeout" yaml:"idle_timeout" toml:"idle_timeout"`
// MaxUploadBufferPerConnection is the size of the initial flow
// control window for each connections. The HTTP/2 spec does not
// allow this to be smaller than 65535 or larger than 2^32-1.
// If the value is outside this range, a default value will be
// used instead.
MaxUploadBufferPerConnection int32 `` /* 159-byte string literal not displayed */
// MaxUploadBufferPerStream is the size of the initial flow control
// window for each stream. The HTTP/2 spec does not allow this to
// be larger than 2^32-1. If the value is zero or larger than the
// maximum, a default value will be used instead.
MaxUploadBufferPerStream int32 `` /* 143-byte string literal not displayed */
// Name is the name of the current server
// the configuration allow multipke server, which each one must be identify by a name
// If not defined, will use the listen address
Name string `mapstructure:"name" json:"name" yaml:"name" toml:"name" validate:"required"`
// Listen is the local address (ip, hostname, unix socket, ...) with a port
// The server will bind with this address only and listen for the port defined
Listen string `mapstructure:"listen" json:"listen" yaml:"listen" toml:"listen" validate:"required,hostname_port"`
// Expose is the address use to call this server. This can be allow to use a single fqdn to multiple server"
Expose string `mapstructure:"expose" json:"expose" yaml:"expose" toml:"expose" validate:"required,url"`
// TLS is the tls configuration for this server.
// To allow tls on this server, at least the TLS Config option InheritDefault must be at true and the default TLS config must be set.
// If you don't want any tls config, just omit or set an empty struct.
TLS libtls.Config `mapstructure:"tls" json:"tls" yaml:"tls" toml:"tls"`
// contains filtered or unexported fields
}
func (ServerConfig) GetExpose ¶ added in v1.5.0
func (c ServerConfig) GetExpose() *url.URL
func (ServerConfig) GetListen ¶ added in v1.5.0
func (c ServerConfig) GetListen() *url.URL
func (ServerConfig) GetTLS ¶ added in v1.5.0
func (c ServerConfig) GetTLS() (libtls.TLSConfig, liberr.Error)
func (ServerConfig) IsTLS ¶ added in v1.5.0
func (c ServerConfig) IsTLS() bool
func (ServerConfig) Server ¶ added in v1.5.0
func (c ServerConfig) Server() Server
func (*ServerConfig) SetDefaultTLS ¶ added in v1.5.0
func (c *ServerConfig) SetDefaultTLS(f func() libtls.TLSConfig)
func (*ServerConfig) SetParentContext ¶ added in v1.5.0
func (c *ServerConfig) SetParentContext(f func() context.Context)
func (ServerConfig) Validate ¶ added in v1.5.0
func (c ServerConfig) Validate() liberr.Error
Click to show internal directories.
Click to hide internal directories.