2015-11-24 16:44:37 +00:00
|
|
|
package tsm1
|
|
|
|
|
2017-04-17 22:59:58 +00:00
|
|
|
import "sync"
|
2016-09-21 22:26:55 +00:00
|
|
|
|
2017-04-17 22:59:58 +00:00
|
|
|
var bufPool sync.Pool
|
2015-11-24 16:44:37 +00:00
|
|
|
|
|
|
|
// getBuf returns a buffer with length size from the buffer pool.
|
2017-04-17 22:59:58 +00:00
|
|
|
func getBuf(size int) *[]byte {
|
|
|
|
x := bufPool.Get()
|
|
|
|
if x == nil {
|
|
|
|
b := make([]byte, size)
|
|
|
|
return &b
|
|
|
|
}
|
|
|
|
buf := x.(*[]byte)
|
|
|
|
if cap(*buf) < size {
|
2018-02-17 11:41:07 +00:00
|
|
|
bufPool.Put(x)
|
2017-04-17 22:59:58 +00:00
|
|
|
b := make([]byte, size)
|
|
|
|
return &b
|
|
|
|
}
|
|
|
|
*buf = (*buf)[:size]
|
|
|
|
return buf
|
2015-11-24 16:44:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// putBuf returns a buffer to the pool.
|
2017-04-17 22:59:58 +00:00
|
|
|
func putBuf(buf *[]byte) {
|
2015-11-24 16:44:37 +00:00
|
|
|
bufPool.Put(buf)
|
|
|
|
}
|