zstd.go 512 B

12345678910111213141516171819202122232425262728
  1. package sarama
  2. import (
  3. "sync"
  4. "github.com/klauspost/compress/zstd"
  5. )
  6. var (
  7. zstdDec *zstd.Decoder
  8. zstdEnc *zstd.Encoder
  9. zstdEncOnce, zstdDecOnce sync.Once
  10. )
  11. func zstdDecompress(dst, src []byte) ([]byte, error) {
  12. zstdDecOnce.Do(func() {
  13. zstdDec, _ = zstd.NewReader(nil)
  14. })
  15. return zstdDec.DecodeAll(src, dst)
  16. }
  17. func zstdCompress(dst, src []byte) ([]byte, error) {
  18. zstdEncOnce.Do(func() {
  19. zstdEnc, _ = zstd.NewWriter(nil, zstd.WithZeroFrames(true))
  20. })
  21. return zstdEnc.EncodeAll(src, dst), nil
  22. }