| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- package statsd
- type bufferPool struct {
- pool chan *statsdBuffer
- bufferMaxSize int
- bufferMaxElements int
- }
- func newBufferPool(poolSize, bufferMaxSize, bufferMaxElements int) *bufferPool {
- p := &bufferPool{
- pool: make(chan *statsdBuffer, poolSize),
- bufferMaxSize: bufferMaxSize,
- bufferMaxElements: bufferMaxElements,
- }
- for i := 0; i < poolSize; i++ {
- p.addNewBuffer()
- }
- return p
- }
- func (p *bufferPool) addNewBuffer() {
- p.pool <- newStatsdBuffer(p.bufferMaxSize, p.bufferMaxElements)
- }
- func (p *bufferPool) borrowBuffer() *statsdBuffer {
- select {
- case b := <-p.pool:
- return b
- default:
- return newStatsdBuffer(p.bufferMaxSize, p.bufferMaxElements)
- }
- }
- func (p *bufferPool) returnBuffer(buffer *statsdBuffer) {
- buffer.reset()
- select {
- case p.pool <- buffer:
- default:
- }
- }
|