Documentation
¶
Overview ¶
Package pool implements a pool of iocommon.ReadSeekCloser interfaces to manage and reuse them.
Index ¶
Constants ¶
This section is empty.
Variables ¶
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 Factory ¶
type Factory func() (iocommon.ReadSeekCloser, error)
Factory is a function to create new connections.
type Pool ¶
type Pool interface {
// Get returns a new reader from the pool. Closing the readers puts
// it back to the Pool. Closing it when the pool is destroyed or full will
// be counted as an error.
Get() (iocommon.ReadSeekCloser, error)
// Close closes the pool and all its readers. After Close() the pool is
// no longer usable.
Close()
// Len returns the current number of readers 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 ¶
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 PoolReader ¶
type PoolReader struct {
iocommon.ReadSeekCloser
// contains filtered or unexported fields
}
PoolReader is a wrapper around iocommon.ReadSeekCloser to modify the the behavior of iocommon.ReadSeekCloser's Close() method.
func (*PoolReader) Close ¶
func (p *PoolReader) Close() error
Close() puts the given connects back to the pool instead of closing it.
func (*PoolReader) MarkUnusable ¶
func (p *PoolReader) MarkUnusable()
MarkUnusable() marks the connection not usable any more, to let the pool close it instead of returning it to pool.