pool: github.com/maxatome/pool Index | Files

package pool

import "github.com/maxatome/pool"

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


Package Files

channel.go conn.go pool.go


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() (RpcAble, error)

Factory is a function to create new RPC-able connections.

type Pool Uses

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.

    // 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 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 RPC-able connection available in the pool, a new RPC-able connection will be created via the Factory() method.

type PoolRconn Uses

type PoolRconn struct {
    // contains filtered or unexported fields

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

func (PoolRconn) Close Uses

func (p PoolRconn) Close() error

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

func (*PoolRconn) MarkUnusable Uses

func (p *PoolRconn) MarkUnusable()

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

type RpcAble Uses

type RpcAble interface {
    Call(serviceMethod string, args interface{}, reply interface{}) error
    Go(serviceMethod string, args interface{}, reply interface{}, done chan *rpc.Call) *rpc.Call
    Close() error

Package pool imports 4 packages (graph). Updated 2016-07-30. Refresh now. Tools for package owners. This is a quick bug-fix fork (has fewer than three commits, and only during the week it was created).