Documentation
¶
Overview ¶
Package pool is a generated GoMock package.
Package pool provides implementations for object pooling.
Index ¶
- func AppendByte(bytes []byte, b byte, pool BytesPool) []byte
- func AppendByteChecked(bytes checked.Bytes, b byte, pool CheckedBytesPool) (result checked.Bytes, swapped bool)
- type Allocator
- type Bucket
- type BucketByCapacity
- type BucketConfiguration
- type BucketizedAllocator
- type BucketizedObjectPool
- type BucketizedPoolConfiguration
- type BytesPool
- type CheckedAllocator
- type CheckedBytesPool
- type CheckedObjectPool
- type FloatsPool
- type MockBytesPool
- type MockBytesPoolMockRecorder
- type MockCheckedBytesPool
- type MockCheckedBytesPoolMockRecorder
- type NewBytesPoolFn
- type ObjectPool
- type ObjectPoolConfiguration
- type ObjectPoolOptions
- type OnPoolAccessErrorFn
- type WatermarkConfiguration
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AppendByte ¶
AppendByte appends a byte to a byte slice getting a new slice from the BytesPool if the slice is at capacity
func AppendByteChecked ¶
func AppendByteChecked( bytes checked.Bytes, b byte, pool CheckedBytesPool, ) ( result checked.Bytes, swapped bool, )
AppendByteChecked appends a byte to a byte slice getting a new slice from the CheckedBytesPool if the slice is at capacity
Types ¶
type Bucket ¶
type Bucket struct {
// Capacity is the size of each element in the bucket.
Capacity int
// Count is the number of fixed elements in the bucket.
Count int
// Options is an optional override to specify options to use for a bucket,
// specify nil to use the options specified to the bucketized pool
// constructor for this bucket.
Options ObjectPoolOptions
}
Bucket specifies a pool bucket.
type BucketByCapacity ¶
type BucketByCapacity []Bucket
BucketByCapacity is a sortable collection of pool buckets.
func (BucketByCapacity) Len ¶
func (x BucketByCapacity) Len() int
func (BucketByCapacity) Less ¶
func (x BucketByCapacity) Less(i, j int) bool
func (BucketByCapacity) Swap ¶
func (x BucketByCapacity) Swap(i, j int)
type BucketConfiguration ¶
type BucketConfiguration struct {
// The count of the items in the bucket.
Count int `yaml:"count"`
// The capacity of each item in the bucket.
Capacity int `yaml:"capacity"`
}
BucketConfiguration contains configuration for a pool bucket.
func (*BucketConfiguration) NewBucket ¶
func (c *BucketConfiguration) NewBucket() Bucket
NewBucket creates a new bucket.
type BucketizedAllocator ¶
type BucketizedAllocator func(capacity int) interface{}
BucketizedAllocator allocates an object for a bucket given its capacity.
type BucketizedObjectPool ¶
type BucketizedObjectPool interface {
// Init initializes the pool.
Init(alloc BucketizedAllocator)
// Get provides an object from the pool.
Get(capacity int) interface{}
// Put returns an object to the pool, given the object capacity.
Put(obj interface{}, capacity int)
}
BucketizedObjectPool is a bucketized pool of objects.
func NewBucketizedObjectPool ¶
func NewBucketizedObjectPool(sizes []Bucket, opts ObjectPoolOptions) BucketizedObjectPool
NewBucketizedObjectPool creates a bucketized object pool
type BucketizedPoolConfiguration ¶
type BucketizedPoolConfiguration struct {
// The pool bucket configuration.
Buckets []BucketConfiguration `yaml:"buckets"`
// The watermark configuration.
Watermark WatermarkConfiguration `yaml:"watermark"`
}
BucketizedPoolConfiguration contains configuration for bucketized pools.
func (*BucketizedPoolConfiguration) NewBuckets ¶
func (c *BucketizedPoolConfiguration) NewBuckets() []Bucket
NewBuckets create a new list of buckets.
func (*BucketizedPoolConfiguration) NewObjectPoolOptions ¶
func (c *BucketizedPoolConfiguration) NewObjectPoolOptions( instrumentOpts instrument.Options, ) ObjectPoolOptions
NewObjectPoolOptions creates a new set of object pool options.
type BytesPool ¶
type BytesPool interface {
// Init initializes the pool.
Init()
// Get provides a buffer from the pool.
Get(capacity int) []byte
// Put returns a buffer to the pool.
Put(buffer []byte)
}
BytesPool provides a pool for variable size buffers.
func NewBytesPool ¶
func NewBytesPool(sizes []Bucket, opts ObjectPoolOptions) BytesPool
NewBytesPool creates a new bytes pool
type CheckedAllocator ¶
type CheckedAllocator func() checked.ReadWriteRef
CheckedAllocator allocates a checked object for a pool.
type CheckedBytesPool ¶
type CheckedBytesPool interface {
// Init initializes the pool.
Init()
// Get provides a buffer from the pool, to return it to the pool simply
// increment it immediately, continue to increment and decrement through
// use and when decremented to zero and finalized it will return itself
// to the pool. The pool uses the finalizer on the checked.Bytes so be sure
// not to override it.
Get(capacity int) checked.Bytes
// BytesPool returns the underlying bytes pool used, useful if required
// to retrieve when only the checked bytes pool is accessible.
BytesPool() BytesPool
}
CheckedBytesPool provides a checked pool for variable size buffers.
func NewCheckedBytesPool ¶
func NewCheckedBytesPool( sizes []Bucket, opts ObjectPoolOptions, newBackingBytesPool NewBytesPoolFn, ) CheckedBytesPool
NewCheckedBytesPool creates a new checked bytes pool
type CheckedObjectPool ¶
type CheckedObjectPool interface {
// Init initializes the pool.
Init(alloc CheckedAllocator)
// Get provides an object from the pool to return it to the pool simply
// increment it immediately, continue to increment and decrement through
// use and when decremented to zero and finalized it will return itself
// to the pool. The pool uses the finalizer on the checked value so be sure
// not to override it.
Get() checked.ReadWriteRef
}
CheckedObjectPool provides a checked pool for objects.
func NewCheckedObjectPool ¶
func NewCheckedObjectPool(opts ObjectPoolOptions) CheckedObjectPool
NewCheckedObjectPool creates a new checked pool
type FloatsPool ¶
type FloatsPool interface {
// Init initializes the pool.
Init()
// Get provides an float64 slice from the pool.
Get(capacity int) []float64
// Put returns an float64 slice to the pool.
Put(value []float64)
}
FloatsPool provides a pool for variable-sized float64 slices.
func NewFloatsPool ¶
func NewFloatsPool(sizes []Bucket, opts ObjectPoolOptions) FloatsPool
NewFloatsPool creates a new floats pool
type MockBytesPool ¶
type MockBytesPool struct {
// contains filtered or unexported fields
}
MockBytesPool is a mock of BytesPool interface
func NewMockBytesPool ¶
func NewMockBytesPool(ctrl *gomock.Controller) *MockBytesPool
NewMockBytesPool creates a new mock instance
func (*MockBytesPool) EXPECT ¶
func (m *MockBytesPool) EXPECT() *MockBytesPoolMockRecorder
EXPECT returns an object that allows the caller to indicate expected use
type MockBytesPoolMockRecorder ¶
type MockBytesPoolMockRecorder struct {
// contains filtered or unexported fields
}
MockBytesPoolMockRecorder is the mock recorder for MockBytesPool
func (*MockBytesPoolMockRecorder) Get ¶
func (mr *MockBytesPoolMockRecorder) Get(arg0 interface{}) *gomock.Call
Get indicates an expected call of Get
func (*MockBytesPoolMockRecorder) Init ¶
func (mr *MockBytesPoolMockRecorder) Init() *gomock.Call
Init indicates an expected call of Init
func (*MockBytesPoolMockRecorder) Put ¶
func (mr *MockBytesPoolMockRecorder) Put(arg0 interface{}) *gomock.Call
Put indicates an expected call of Put
type MockCheckedBytesPool ¶
type MockCheckedBytesPool struct {
// contains filtered or unexported fields
}
MockCheckedBytesPool is a mock of CheckedBytesPool interface
func NewMockCheckedBytesPool ¶
func NewMockCheckedBytesPool(ctrl *gomock.Controller) *MockCheckedBytesPool
NewMockCheckedBytesPool creates a new mock instance
func (*MockCheckedBytesPool) BytesPool ¶
func (m *MockCheckedBytesPool) BytesPool() BytesPool
BytesPool mocks base method
func (*MockCheckedBytesPool) EXPECT ¶
func (m *MockCheckedBytesPool) EXPECT() *MockCheckedBytesPoolMockRecorder
EXPECT returns an object that allows the caller to indicate expected use
type MockCheckedBytesPoolMockRecorder ¶
type MockCheckedBytesPoolMockRecorder struct {
// contains filtered or unexported fields
}
MockCheckedBytesPoolMockRecorder is the mock recorder for MockCheckedBytesPool
func (*MockCheckedBytesPoolMockRecorder) BytesPool ¶
func (mr *MockCheckedBytesPoolMockRecorder) BytesPool() *gomock.Call
BytesPool indicates an expected call of BytesPool
func (*MockCheckedBytesPoolMockRecorder) Get ¶
func (mr *MockCheckedBytesPoolMockRecorder) Get(arg0 interface{}) *gomock.Call
Get indicates an expected call of Get
func (*MockCheckedBytesPoolMockRecorder) Init ¶
func (mr *MockCheckedBytesPoolMockRecorder) Init() *gomock.Call
Init indicates an expected call of Init
type NewBytesPoolFn ¶
NewBytesPoolFn is a function to construct a new bytes pool
type ObjectPool ¶
type ObjectPool interface {
// Init initializes the pool.
Init(alloc Allocator)
// Get provides an object from the pool.
Get() interface{}
// Put returns an object to the pool.
Put(obj interface{})
}
ObjectPool provides a pool for objects.
Example ¶
package main
import (
"fmt"
"github.com/m3db/m3/src/x/pool"
)
type exampleObject struct {
a, b, c int64
}
func (o *exampleObject) reset() {
o.a = 0
o.b = 0
o.c = 0
}
func main() {
opts := pool.NewObjectPoolOptions()
p := pool.NewObjectPool(opts)
p.Init(func() interface{} {
// The Pool's Allocator should generally only return pointer
// types, since a pointer can be put into the return interface
// value without an allocation.
return new(exampleObject)
})
// Get an exampleObject from the pool.
o := p.Get().(*exampleObject)
fmt.Printf("Retrieved struct should have default values: %+v", o)
func NewObjectPool ¶
func NewObjectPool(opts ObjectPoolOptions) ObjectPool
NewObjectPool creates a new pool
type ObjectPoolConfiguration ¶
type ObjectPoolConfiguration struct {
// The size of the pool.
Size int `yaml:"size"`
// The watermark configuration.
Watermark WatermarkConfiguration `yaml:"watermark"`
}
ObjectPoolConfiguration contains configuration for object pools.
func (*ObjectPoolConfiguration) NewObjectPoolOptions ¶
func (c *ObjectPoolConfiguration) NewObjectPoolOptions( instrumentOpts instrument.Options, ) ObjectPoolOptions
NewObjectPoolOptions creates a new set of object pool options.
type ObjectPoolOptions ¶
type ObjectPoolOptions interface {
// SetSize sets the size of the object pool.
SetSize(value int) ObjectPoolOptions
// Size returns the size of the object pool.
Size() int
// SetRefillLowWatermark sets the refill low watermark value between [0, 1),
// if zero then no refills occur.
SetRefillLowWatermark(value float64) ObjectPoolOptions
// RefillLowWatermark returns the refill low watermark value between [0, 1),
// if zero then no refills occur.
RefillLowWatermark() float64
// SetRefillHighWatermark sets the refill high watermark value between [0, 1),
// if less or equal to low watermark then no refills occur.
SetRefillHighWatermark(value float64) ObjectPoolOptions
// RefillLowWatermark returns the refill low watermark value between [0, 1),
// if less or equal to low watermark then no refills occur.
RefillHighWatermark() float64
// SetInstrumentOptions sets the instrument options.
SetInstrumentOptions(value instrument.Options) ObjectPoolOptions
// InstrumentOptions returns the instrument options.
InstrumentOptions() instrument.Options
// SetOnPoolAccessErrorFn sets the on pool access error callback, by
// default this is a panic.
SetOnPoolAccessErrorFn(value OnPoolAccessErrorFn) ObjectPoolOptions
// OnPoolAccessErrorFn returns the on pool access error callback, by
// default this is a panic.
OnPoolAccessErrorFn() OnPoolAccessErrorFn
}
ObjectPoolOptions provides options for an object pool.
func NewObjectPoolOptions ¶
func NewObjectPoolOptions() ObjectPoolOptions
NewObjectPoolOptions creates a new set of object pool options
type OnPoolAccessErrorFn ¶
type OnPoolAccessErrorFn func(err error)
OnPoolAccessErrorFn is a function to call when a pool access error occurs, such as get or put before the pool is initialized.
type WatermarkConfiguration ¶
type WatermarkConfiguration struct {
// The low watermark to start refilling the pool, if zero none.
RefillLowWatermark float64 `yaml:"low" validate:"min=0.0,max=1.0"`
// The high watermark to stop refilling the pool, if zero none.
RefillHighWatermark float64 `yaml:"high" validate:"min=0.0,max=1.0"`
}
WatermarkConfiguration contains watermark configuration for pools.