Documentation ¶
Overview ¶
Package conn provides utilities related to connections.
Index ¶
Constants ¶
This section is empty.
Variables ¶
ErrConnectionUnavailable is returned by the Manager's Write method when the manager cannot yield a good connection.
Functions ¶
func Exponential ¶
Exponential takes a duration and returns another one that is twice as long, +/- 50%. It is used to provide backoff for operations that may fail and should avoid thundering herds. See https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/ for rationale
Types ¶
type Dialer ¶
Dialer imitates net.Dial. Dialer is assumed to yield connections that are safe for use by multiple concurrent goroutines.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager manages a net.Conn.
Clients provide a way to create the connection with a Dialer, network, and address. Clients should Take the connection when they want to use it, and Put back whatever error they receive from its use. When a non-nil error is Put, the connection is invalidated, and a new connection is established. Connection failures are retried after an exponential backoff.
func NewDefaultManager ¶
NewDefaultManager is a helper constructor, suitable for most normal use in real (non-test) code. It uses the real net.Dial and time.After functions.
func NewManager ¶
NewManager returns a connection manager using the passed Dialer, network, and address. The AfterFunc is used to control exponential backoff and retries. The logger is used to log errors; pass a log.NopLogger if you don't care to receive them. For normal use, prefer NewDefaultManager.
func (*Manager) Put ¶
Put accepts an error that came from a previously yielded connection. If the error is non-nil, the manager will invalidate the current connection and try to reconnect, with exponential backoff. Putting a nil error is a no-op.