12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package pool
- import "github.com/gobwas/pool/internal/pmath"
- // Option configures pool.
- type Option func(Config)
- // Config describes generic pool configuration.
- type Config interface {
- AddSize(n int)
- SetSizeMapping(func(int) int)
- }
- // WithSizeLogRange returns an Option that will add logarithmic range of
- // pooling sizes containing [min, max] values.
- func WithLogSizeRange(min, max int) Option {
- return func(c Config) {
- pmath.LogarithmicRange(min, max, func(n int) {
- c.AddSize(n)
- })
- }
- }
- // WithSize returns an Option that will add given pooling size to the pool.
- func WithSize(n int) Option {
- return func(c Config) {
- c.AddSize(n)
- }
- }
- func WithSizeMapping(sz func(int) int) Option {
- return func(c Config) {
- c.SetSizeMapping(sz)
- }
- }
- func WithLogSizeMapping() Option {
- return WithSizeMapping(pmath.CeilToPowerOfTwo)
- }
- func WithIdentitySizeMapping() Option {
- return WithSizeMapping(pmath.Identity)
- }
|