config

package
v0.1.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 30, 2023 License: Apache-2.0 Imports: 8 Imported by: 6

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ClientConfig

type ClientConfig struct {
	// MaxHeaderListSize is the http2 SETTINGS_MAX_HEADER_LIST_SIZE to
	// send in the initial settings frame. It is how many bytes
	// of response headers are allowed. Unlike the http2 spec, zero here
	// means to use a default limit (currently 10MB). If you actually
	// want to advertise an unlimited value to the peer, Transport
	// interprets the highest possible value here (0xffffffff or 1<<32-1)
	// to mean no limit.
	MaxHeaderListSize uint32

	// AllowHTTP, if true, permits HTTP/2 requests using the insecure,
	// plain-text "http" scheme. Note that this does not enable h2c support.
	AllowHTTP bool

	// ReadIdleTimeout is the timeout after which a health check using ping
	// frame will be carried out if no frame is received on the connection.
	// Note that a ping response will is considered a received frame, so if
	// there is no other traffic on the connection, the health check will
	// be performed every ReadIdleTimeout interval.
	// If zero, no health check is performed.
	ReadIdleTimeout time.Duration

	// PingTimeout is the timeout after which the connection will be closed
	// if a response to Ping is not received.
	// Defaults to 15s.
	PingTimeout time.Duration

	// WriteByteTimeout is the timeout after which the connection will be
	// closed no data can be written to it. The timeout begins when data is
	// available to write, and is extended whenever any bytes are written.
	WriteByteTimeout time.Duration

	// StrictMaxConcurrentStreams controls whether the server's
	// SETTINGS_MAX_CONCURRENT_STREAMS should be respected
	// globally. If false, new TCP connections are created to the
	// server as needed to keep each under the per-connection
	// SETTINGS_MAX_CONCURRENT_STREAMS limit. If true, the
	// server's SETTINGS_MAX_CONCURRENT_STREAMS is interpreted as
	// a global limit and callers of RoundTrip block when needed,
	// waiting for their turn.
	StrictMaxConcurrentStreams bool

	// Default Dialer is used if not set.
	Dialer network.Dialer

	// Timeout for establishing new connections to hosts.
	//
	// Default DialTimeout is used if not set.
	DialTimeout time.Duration

	// Whether to use TLS (aka SSL or HTTPS) for host connections.
	// Optional TLS config.
	TLSConfig *tls.Config

	// Idle keep-alive connections are closed after this duration.
	//
	// By default idle connections are closed
	// after DefaultMaxIdleConnDuration.
	MaxIdleConnDuration time.Duration

	// All configurations related to retry
	RetryConfig *retry.Config

	// RetryIf controls whether a retry should be attempted after an error.
	//
	// By default will use isIdempotent function
	RetryIf client.RetryIfFunc

	// Connection will close after each request when set this to true.
	DisableKeepAlive bool
}

ClientConfig All configurations related to retry

func NewClientConfig

func NewClientConfig(opts ...ClientOption) *ClientConfig

func (*ClientConfig) Apply

func (o *ClientConfig) Apply(opts []ClientOption)

type ClientOption

type ClientOption struct {
	F func(o *ClientConfig)
}

ClientOption is the only struct that can be used to set HTTP2 ClientConfig.

func WithAllowHTTP

func WithAllowHTTP(allow bool) ClientOption

WithAllowHTTP is used to set whether to allow http.

If enabled, client will use h2c mode.

func WithClientDisableKeepAlive

func WithClientDisableKeepAlive(disable bool) ClientOption

WithClientDisableKeepAlive is used to set whether to disable keep alive.

func WithDialTimeout

func WithDialTimeout(timeout time.Duration) ClientOption

WithDialTimeout is used to set dial timeout.

func WithDialer

func WithDialer(d network.Dialer) ClientOption

WithDialer is used to set dialer.

func WithMaxHeaderListSize

func WithMaxHeaderListSize(maxHeaderListSize uint32) ClientOption

WithMaxHeaderListSize sets max header list size.

func WithMaxIdempotentCallAttempts

func WithMaxIdempotentCallAttempts(n int) ClientOption

WithMaxIdempotentCallAttempts sets maximum number of attempts for idempotent calls.

func WithMaxIdleConnDuration

func WithMaxIdleConnDuration(d time.Duration) ClientOption

WithMaxIdleConnDuration is used to set max idle connection duration.

func WithPingTimeout

func WithPingTimeout(pt time.Duration) ClientOption

WithPingTimeout is used to set the timeout after which the connection will be closed if a response to Ping is not received.

func WithReadIdleTimeout

func WithReadIdleTimeout(readIdleTimeout time.Duration) ClientOption

WithReadIdleTimeout is used to set the timeout after which a health check using ping frame will be carried out if no frame is received on the connection.

func WithRetryConfig

func WithRetryConfig(opts ...retry.Option) ClientOption

WithRetryConfig sets client retry config

func WithStrictMaxConcurrentStreams

func WithStrictMaxConcurrentStreams(strictMaxConcurrentStreams bool) ClientOption

WithStrictMaxConcurrentStreams is used to controls whether the server's SETTINGS_MAX_CONCURRENT_STREAMS should be respected globally.

func WithTLSConfig

func WithTLSConfig(tlsConfig *tls.Config) ClientOption

WithTLSConfig is used to set tls config.

func WithWriteByteTimeout

func WithWriteByteTimeout(writeByteTimeout time.Duration) ClientOption

WithWriteByteTimeout is used to set the timeout after which the connection will be closed no data can be written to it.

type Config

type Config struct {
	DisableKeepalive bool
	EnableTrace      bool
	ReadTimeout      time.Duration

	// MaxHandlers limits the number of http.Handler ServeHTTP goroutines
	// which may run at a time over all connections.
	// Negative or zero no limit.
	// TODO: implement
	MaxHandlers int

	// 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

	// 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

	// PermitProhibitedCipherSuites, if true, permits the use of
	// cipher suites prohibited by the HTTP/2 spec.
	PermitProhibitedCipherSuites bool

	// 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

	// 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

	// 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
}

func NewConfig

func NewConfig(opts ...Option) *Config

func (*Config) Apply

func (o *Config) Apply(opts []Option)

type Option

type Option struct {
	F func(o *Config)
}

Option is the only struct that can be used to set HTTP2 Config.

func WithDisableKeepAlive

func WithDisableKeepAlive(disableKeepAlive bool) Option

WithDisableKeepAlive is used to set whether disableKeepAlive.

func WithIdleTimeout added in v0.1.3

func WithIdleTimeout(t time.Duration) Option

WithIdleTimeout is used to set idle timeout.

func WithMaxConcurrentStreams added in v0.1.3

func WithMaxConcurrentStreams(n uint32) Option

WithMaxConcurrentStreams is used to set the max concurrent streams.

func WithMaxReadFrameSize added in v0.1.3

func WithMaxReadFrameSize(n uint32) Option

WithMaxReadFrameSize is used to set the max read frame size.

func WithMaxUploadBufferPerConnection added in v0.1.3

func WithMaxUploadBufferPerConnection(n int32) Option

WithMaxUploadBufferPerConnection is used to set max upload buffer per connection.

func WithMaxUploadBufferPerStream added in v0.1.3

func WithMaxUploadBufferPerStream(n int32) Option

WithMaxUploadBufferPerStream is used to set max upload buffer per stream.

func WithPermitProhibitedCipherSuites added in v0.1.3

func WithPermitProhibitedCipherSuites(permitProhibitedChipherSuites bool) Option

WithPermitProhibitedCipherSuites is used to set whether permit prohibited chipher suites.

func WithReadTimeout

func WithReadTimeout(t time.Duration) Option

WithReadTimeout is used to set the read timeout.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL