f194c840d7
In previous implementation WithCompressObjects returned Option than could panic if zstd (de)compressor creation failed with error. From now errors with (de)compressor creation result in an option without using data compression. In this case, the error is written to the log passed to the option constructor. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
35 lines
652 B
Go
35 lines
652 B
Go
package blobstor
|
|
|
|
import (
|
|
"github.com/klauspost/compress/zstd"
|
|
)
|
|
|
|
func noOpCompressor(data []byte) []byte {
|
|
return data
|
|
}
|
|
|
|
func noOpDecompressor(data []byte) ([]byte, error) {
|
|
return data, nil
|
|
}
|
|
|
|
func zstdCompressor() (func([]byte) []byte, error) {
|
|
enc, err := zstd.NewWriter(nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return func(data []byte) []byte {
|
|
return enc.EncodeAll(data, make([]byte, 0, len(data)))
|
|
}, nil
|
|
}
|
|
|
|
func zstdDecompressor() (func([]byte) ([]byte, error), error) {
|
|
dec, err := zstd.NewReader(nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return func(data []byte) ([]byte, error) {
|
|
return dec.DecodeAll(data, nil)
|
|
}, nil
|
|
}
|