62 lines
992 B
Go
62 lines
992 B
Go
package pool
|
|
|
|
import (
|
|
"bytes"
|
|
"math/big"
|
|
"sync"
|
|
)
|
|
|
|
var bytesBufferPool = sync.Pool{
|
|
New: allocBytesBuffer,
|
|
}
|
|
|
|
func allocBytesBuffer() interface{} {
|
|
return &bytes.Buffer{}
|
|
}
|
|
|
|
func GetBytesBuffer() *bytes.Buffer {
|
|
//nolint:forcetypeassert
|
|
return bytesBufferPool.Get().(*bytes.Buffer)
|
|
}
|
|
|
|
func ReleaseBytesBuffer(b *bytes.Buffer) {
|
|
b.Reset()
|
|
bytesBufferPool.Put(b)
|
|
}
|
|
|
|
var bigIntPool = sync.Pool{
|
|
New: allocBigInt,
|
|
}
|
|
|
|
func allocBigInt() interface{} {
|
|
return &big.Int{}
|
|
}
|
|
|
|
func GetBigInt() *big.Int {
|
|
//nolint:forcetypeassert
|
|
return bigIntPool.Get().(*big.Int)
|
|
}
|
|
|
|
func ReleaseBigInt(i *big.Int) {
|
|
bigIntPool.Put(i.SetInt64(0))
|
|
}
|
|
|
|
var keyToErrorMapPool = sync.Pool{
|
|
New: allocKeyToErrorMap,
|
|
}
|
|
|
|
func allocKeyToErrorMap() interface{} {
|
|
return make(map[string]error)
|
|
}
|
|
|
|
func GetKeyToErrorMap() map[string]error {
|
|
//nolint:forcetypeassert
|
|
return keyToErrorMapPool.Get().(map[string]error)
|
|
}
|
|
|
|
func ReleaseKeyToErrorMap(m map[string]error) {
|
|
for key := range m {
|
|
delete(m, key)
|
|
}
|
|
}
|