2
0
2020-09-28 07:53:01 -07:00
2018-12-26 17:26:50 -06:00
2020-09-26 11:05:58 -05:00
2019-06-08 17:40:51 -05:00
2019-04-08 19:40:18 -05:00
2019-04-08 19:40:18 -05:00
2018-12-26 17:17:08 -06:00
2018-12-26 17:21:07 -06:00
2018-12-26 18:54:41 -06:00

Build Status

Puddle

Puddle is a tiny generic resource pool library for Go that uses the standard context library to signal cancellation of acquires. It is designed to contain the minimum functionality required for a resource pool. It can be used directly or it can be used as the base for a domain specific resource pool. For example, a database connection pool may use puddle internally and implement health checks and keep-alive behavior without needing to implement any concurrent code of its own.

Features

  • Acquire cancellation via context standard library
  • Statistics API for monitoring pool pressure
  • No dependencies outside of standard library
  • High performance
  • 100% test coverage

Example Usage

constructor := func(context.Context) (interface{}, error) {
  return net.Dial("tcp", "127.0.0.1:8080")
}
destructor := func(value interface{}) {
  value.(net.Conn).Close()
}
maxPoolSize := 10

pool := puddle.NewPool(constructor, destructor, maxPoolSize)

// Acquire resource from the pool.
res, err := pool.Acquire(context.Background())
if err != nil {
  // ...
}

// Use resource.
_, err = res.Value().(net.Conn).Write([]byte{1})
if err != nil {
  // ...
}

// Release when done.
res.Release()

License

MIT

S
Description
No description provided
Readme 189 KiB
Languages
Go 100%