zstd.go 511 B

123456789101112131415161718192021222324252627
  1. package sarama
  2. import (
  3. "github.com/klauspost/compress/zstd"
  4. "sync"
  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. }