import "github.com/go-kit/kit/util/conn"
Package conn provides utilities related to connections.
ErrConnectionUnavailable is returned by the Manager's Write method when the manager cannot yield a good connection.
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
AfterFunc imitates time.After.
Dialer imitates net.Dial. Dialer is assumed to yield connections that are safe for use by multiple concurrent goroutines.
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.
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.
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.
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.
Take yields the current connection. It may be nil.
Write writes the passed data to the connection in a single Take/Put cycle.
Package conn imports 5 packages (graph) and is imported by 220 packages. Updated 2020-05-15. Refresh now. Tools for package owners.