...
1 package logrus
2
3 import (
4 "bytes"
5 "sync"
6 )
7
8 var (
9 bufferPool BufferPool
10 )
11
12 type BufferPool interface {
13 Put(*bytes.Buffer)
14 Get() *bytes.Buffer
15 }
16
17 type defaultPool struct {
18 pool *sync.Pool
19 }
20
21 func (p *defaultPool) Put(buf *bytes.Buffer) {
22 p.pool.Put(buf)
23 }
24
25 func (p *defaultPool) Get() *bytes.Buffer {
26 return p.pool.Get().(*bytes.Buffer)
27 }
28
29
30
31 func SetBufferPool(bp BufferPool) {
32 bufferPool = bp
33 }
34
35 func init() {
36 SetBufferPool(&defaultPool{
37 pool: &sync.Pool{
38 New: func() interface{} {
39 return new(bytes.Buffer)
40 },
41 },
42 })
43 }
44
View as plain text