[#62] signature: Refactor BufferPool

Signed-off-by: Alexander Chuprov <a.chuprov@yadro.com>
This commit is contained in:
Alexander Chuprov 2024-01-12 18:09:28 +03:00
parent b46e8cfbda
commit 72885aae83
4 changed files with 73 additions and 58 deletions

View file

@ -4,9 +4,14 @@ import (
"crypto/ecdsa"
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/util/pool"
crypto "git.frostfs.info/TrueCloudLab/frostfs-crypto"
)
const poolSliceMaxSize = 128 * 1024
var buffersPool = pool.NewBufferPool(poolSliceMaxSize)
type DataSource interface {
ReadSignedData([]byte) ([]byte, error)
SignedDataSize() int
@ -35,12 +40,10 @@ func SignDataWithHandler(key *ecdsa.PrivateKey, src DataSource, handler KeySigna
opts[i](cfg)
}
buffer, ok := tryGetNewBufferFromPool(src.SignedDataSize())
if ok {
defer returnBufferToPool(buffer)
}
buffer := buffersPool.Get(uint32(src.SignedDataSize()))
defer buffersPool.Put(buffer)
data, err := src.ReadSignedData(buffer.data)
data, err := src.ReadSignedData(buffer.Data)
if err != nil {
return err
}
@ -66,12 +69,10 @@ func VerifyDataWithSource(dataSrc DataSource, sigSrc KeySignatureSource, opts ..
opts[i](cfg)
}
buffer, ok := tryGetNewBufferFromPool(dataSrc.SignedDataSize())
if ok {
defer returnBufferToPool(buffer)
}
buffer := buffersPool.Get(uint32(dataSrc.SignedDataSize()))
defer buffersPool.Put(buffer)
data, err := dataSrc.ReadSignedData(buffer.data)
data, err := dataSrc.ReadSignedData(buffer.Data)
if err != nil {
return err
}