pool.v2: gopkg.in/fatih/pool.v2 Index | Files

package pool

import "gopkg.in/fatih/pool.v2"

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

Index

Package Files

channel.go conn.go pool.go

Variables

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

type Factory Uses

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

Factory is a function to create new connections.

type Pool Uses

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
}

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

func NewChannelPool Uses

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

NewChannelPool returns a new pool based on buffered channels with an initial capacity and maximum capacity. Factory is used when initial capacity is greater than zero to fill the pool. A zero initialCap doesn't fill the Pool until a new Get() is called. During a Get(), If there is no new connection available in the pool, a new connection will be created via the Factory() method.

type PoolConn Uses

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

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

func (*PoolConn) Close Uses

func (p *PoolConn) Close() error

Close() puts the given connects back to the pool instead of closing it.

func (*PoolConn) MarkUnusable Uses

func (p *PoolConn) MarkUnusable()

MarkUnusable() marks the connection not usable any more, to let the pool close it instead of returning it to pool.

Package pool imports 4 packages (graph) and is imported by 131 packages. Updated 2019-04-18. Refresh now. Tools for package owners.