forked from thessem/zap-prettyconsole
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pool.go
54 lines (43 loc) · 1006 Bytes
/
pool.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package prettyconsole
import (
"sync"
"go.uber.org/zap/buffer"
)
var (
_prettyConsolePool = sync.Pool{New: func() interface{} {
return &prettyConsoleEncoder{}
}}
_recorderPool = sync.Pool{New: func() interface{} {
return &recordingEncoder{}
}}
_bufferPool = buffer.NewPool()
_bufferPoolGet = _bufferPool.Get
)
func getRecordingEncoder() *recordingEncoder {
return _recorderPool.Get().(*recordingEncoder)
}
func putRecordingEncoder() *recordingEncoder {
return _recorderPool.Get().(*recordingEncoder)
}
func getPrettyConsoleEncoder() *prettyConsoleEncoder {
return _prettyConsolePool.Get().(*prettyConsoleEncoder)
}
func putPrettyConsoleEncoder(e *prettyConsoleEncoder) {
e.cfg = nil
if e.buf != nil {
putBuffer(e.buf)
}
e.buf = nil
e.namespaceIndent = 0
e.inList = false
e.listSep = ""
e._listSepSpace = ""
e._listSepComma = ""
_prettyConsolePool.Put(e)
}
func getBuffer() *buffer.Buffer {
return _bufferPool.Get()
}
func putBuffer(b *buffer.Buffer) {
b.Free()
}