Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/oxtoacart/bpool
Buffer/Byte pool for Go
https://github.com/oxtoacart/bpool
Last synced: about 1 month ago
JSON representation
Buffer/Byte pool for Go
- Host: GitHub
- URL: https://github.com/oxtoacart/bpool
- Owner: oxtoacart
- License: apache-2.0
- Created: 2013-12-29T04:18:01.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2019-05-30T20:26:42.000Z (over 5 years ago)
- Last Synced: 2024-08-01T19:44:30.539Z (4 months ago)
- Language: Go
- Size: 15.6 KB
- Stars: 468
- Watchers: 13
- Forks: 56
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- go-awesome - bpool - byte buffer pool, supports bytes.Buffers (Open source library / Development Aid Package)
README
# bpool [![GoDoc](https://godoc.org/github.com/oxtoacart/bpool?status.png)](https://godoc.org/github.com/oxtoacart/bpool)
Package bpool implements leaky pools of byte arrays and Buffers as bounded channels.
It is based on the leaky buffer example from the Effective Go documentation: http://golang.org/doc/effective_go.html#leaky_bufferbpool provides the following pool types:
* [bpool.BufferPool](https://godoc.org/github.com/oxtoacart/bpool#BufferPool)
which provides a fixed-size pool of
[bytes.Buffers](http://golang.org/pkg/bytes/#Buffer).
* [bpool.BytePool](https://godoc.org/github.com/oxtoacart/bpool#BytePool) which
provides a fixed-size pool of `[]byte` slices with a pre-set width (length).
* [bpool.SizedBufferPool](https://godoc.org/github.com/oxtoacart/bpool#SizedBufferPool),
which is an alternative to `bpool.BufferPool` that pre-sizes the capacity of
buffers issued from the pool and discards buffers that have grown too large
upon return.A common use case for this package is to use buffers to execute HTML templates
against (via ExecuteTemplate) or encode JSON into (via json.NewEncoder). This
allows you to catch any rendering or marshalling errors prior to writing to a
`http.ResponseWriter`, which helps to avoid writing incomplete or malformed data
to the response.## Install
`go get github.com/oxtoacart/bpool`
## Documentation
See [godoc.org](http://godoc.org/github.com/oxtoacart/bpool) or use `godoc github.com/oxtoacart/bpool`
## Example
Here's a quick example for using `bpool.BufferPool`. We create a pool of the
desired size, call the `Get()` method to obtain a buffer for use, and call
`Put(buf)` to return the buffer to the pool.```go
var bufpool *bpool.BufferPool
func main() {
bufpool = bpool.NewBufferPool(48)
}
func someFunction() error {
// Get a buffer from the pool
buf := bufpool.Get()
...
...
...
// Return the buffer to the pool
bufpool.Put(buf)return nil
}
```## License
Apache 2.0 Licensed. See the LICENSE file for details.