30 lines
420 B
Go
30 lines
420 B
Go
package log
|
|
|
|
import (
|
|
"bytes"
|
|
"sync"
|
|
)
|
|
|
|
type BufferPool struct {
|
|
sync.Pool
|
|
}
|
|
|
|
func NewBufferPool() *BufferPool {
|
|
return &BufferPool{
|
|
Pool: sync.Pool{New: func() interface{} {
|
|
b := bytes.NewBuffer(make([]byte, 128))
|
|
b.Reset()
|
|
return b
|
|
}},
|
|
}
|
|
}
|
|
|
|
func (bp *BufferPool) Get() *bytes.Buffer {
|
|
return bp.Pool.Get().(*bytes.Buffer)
|
|
}
|
|
|
|
func (bp *BufferPool) Put(b *bytes.Buffer) {
|
|
b.Reset()
|
|
bp.Pool.Put(b)
|
|
}
|