...
1 package pool
2
3 import (
4 "bytes"
5 "math/big"
6 "sync"
7 )
8
9 var bytesBufferPool = sync.Pool{
10 New: allocBytesBuffer,
11 }
12
13 func allocBytesBuffer() interface{} {
14 return &bytes.Buffer{}
15 }
16
17 func GetBytesBuffer() *bytes.Buffer {
18
19 return bytesBufferPool.Get().(*bytes.Buffer)
20 }
21
22 func ReleaseBytesBuffer(b *bytes.Buffer) {
23 b.Reset()
24 bytesBufferPool.Put(b)
25 }
26
27 var bigIntPool = sync.Pool{
28 New: allocBigInt,
29 }
30
31 func allocBigInt() interface{} {
32 return &big.Int{}
33 }
34
35 func GetBigInt() *big.Int {
36
37 return bigIntPool.Get().(*big.Int)
38 }
39
40 func ReleaseBigInt(i *big.Int) {
41 bigIntPool.Put(i.SetInt64(0))
42 }
43
44 var keyToErrorMapPool = sync.Pool{
45 New: allocKeyToErrorMap,
46 }
47
48 func allocKeyToErrorMap() interface{} {
49 return make(map[string]error)
50 }
51
52 func GetKeyToErrorMap() map[string]error {
53
54 return keyToErrorMapPool.Get().(map[string]error)
55 }
56
57 func ReleaseKeyToErrorMap(m map[string]error) {
58 for key := range m {
59 delete(m, key)
60 }
61 }
62
View as plain text