package blobstor import ( "github.com/klauspost/compress/zstd" ) // zstdFrameMagic contains first 4 bytes of any compressed object // https://github.com/klauspost/compress/blob/master/zstd/framedec.go#L58 . var zstdFrameMagic = []byte{0x28, 0xb5, 0x2f, 0xfd} func noOpCompressor(data []byte) []byte { return data } func noOpDecompressor(data []byte) ([]byte, error) { return data, nil } func zstdCompressor() (*zstd.Encoder, func([]byte) []byte, error) { enc, err := zstd.NewWriter(nil) if err != nil { return nil, nil, err } return enc, func(data []byte) []byte { return enc.EncodeAll(data, make([]byte, 0, len(data))) }, nil } func zstdDecompressor() (*zstd.Decoder, func([]byte) ([]byte, error), error) { dec, err := zstd.NewReader(nil) if err != nil { return nil, nil, err } return dec, func(data []byte) ([]byte, error) { return dec.DecodeAll(data, nil) }, nil }