pool

package
v8.24.7 Latest Latest
Warning

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

Go to latest
Published: May 10, 2024 License: MIT, MIT Imports: 4 Imported by: 0

Documentation

Overview

Package pool implements a pool of net.Conn interfaces to manage and reuse them.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrClosed is the error resulting if the pool is closed via pool.Close().
	ErrClosed = errors.New("pool is closed")
)

Functions

This section is empty.

Types

type Conn

type Conn struct {
	net.Conn
	// contains filtered or unexported fields
}

Conn is a wrapper around net.Conn to modify the behavior of net.Conn's Close() method.

func (*Conn) Close

func (p *Conn) Close() error

Close puts the given connection back into the pool instead of closing it.

func (*Conn) MarkUnusable

func (p *Conn) MarkUnusable()

MarkUnusable marks the connection not usable anymore, to let the pool close it instead of returning it to pool.

type Factory

type Factory func() (net.Conn, error)

Factory is a function to create new connections.

type Pool

type Pool interface {
	// Get returns a new connection from the pool. Closing the connections puts
	// it back to the Pool. Closing it when the pool is destroyed or full will
	// be counted as an error.
	Get() (net.Conn, error)

	// Close closes the pool and all its connections. After Close() the pool is
	// no longer usable.
	Close()

	// Len returns the current number of connections of the pool.
	Len() int

	// Stats returns stats about the pool.
	Stats() (map[string]interface{}, error)
}

Pool interface describes a pool implementation. A pool should have maximum capacity. An ideal pool is threadsafe and easy to use.

func NewChannelPool

func NewChannelPool(maxCap int, factory Factory) (Pool, error)

NewChannelPool returns a new pool based on buffered channels with a maximum capacity. During a Get(), If there is no new connection available in the pool, a new connection will be created via the Factory() method.

Jump to

Keyboard shortcuts

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