gxpool

package
v0.3.3 Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2020 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

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

Package pool implements a pool of Object 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().
	ErrEmpty  = errors.New("pool is empty")
	ErrClosed = errors.New("pool is closed")
)

Functions

This section is empty.

Types

type Keeper added in v0.3.2

type Keeper struct {
	// contains filtered or unexported fields
}

func NewKeeper added in v0.3.2

func NewKeeper(workerNum int) *Keeper

func (*Keeper) Close added in v0.3.2

func (k *Keeper) Close()

func (*Keeper) PendingTaskNum added in v0.3.2

func (k *Keeper) PendingTaskNum() int

func (*Keeper) PushTask added in v0.3.2

func (k *Keeper) PushTask(t Task, timeout time.Duration) error

func (*Keeper) Stop added in v0.3.2

func (k *Keeper) Stop()

type Object

type Object interface {
	Close() error
}

Object is Pool object

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

	Put(Object) 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

func NewChannelPool(poolLen int) (Pool, error)

NewChannelPool returns a new pool based on buffered channels maximum capacity. Pool doesn't fill the Pool until the (Pool)Put() is called. If there is no new Object available in the pool, (Pool)Get will return nil and u should create a new one by yourself.

type Task added in v0.3.2

type Task func(workerID int)

type Worker added in v0.3.2

type Worker struct {
	ID int
	// contains filtered or unexported fields
}

func NewWorker added in v0.3.2

func NewWorker(id int, k *Keeper) *Worker

type WorkerPool added in v0.3.2

type WorkerPool []*Worker

func (WorkerPool) Len added in v0.3.2

func (p WorkerPool) Len() int

func (WorkerPool) Less added in v0.3.2

func (p WorkerPool) Less(i, j int) bool

func (*WorkerPool) Pop added in v0.3.2

func (p *WorkerPool) Pop() interface{}

func (*WorkerPool) Push added in v0.3.2

func (p *WorkerPool) Push(w interface{})

func (WorkerPool) Swap added in v0.3.2

func (p WorkerPool) Swap(i, j int)

Jump to

Keyboard shortcuts

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