Documentation ¶
Overview ¶
Package pool implements a pool of RpcAble 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 Pool ¶
type Pool interface { // Get returns a new RPC-able connection from the pool. Closing a // RPC-able connection puts it back to the Pool. Closing it when the // pool is destroyed or full will be counted as an error. Get() (RpcAble, error) // Close closes the pool and all its RPC-able connections. After // Close() the pool is no longer usable. Close() // Len returns the current number of RPC-able 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 ¶
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 RPC-able connection available in the pool, a new RPC-able connection will be created via the Factory() method.
type PoolRconn ¶
type PoolRconn struct { RpcAble // contains filtered or unexported fields }
PoolRconn is a wrapper around RpcAble to modify the behavior of RpcAble's Close() method.
func (*PoolRconn) MarkUnusable ¶
func (p *PoolRconn) MarkUnusable()
MarkUnusable() marks the rconn not usable any more, to let the pool close it instead of returning it to pool.