github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/compression/zstd.go (about) 1 package compression 2 3 import ( 4 "io" 5 6 "github.com/concourse/baggageclaim" 7 "github.com/klauspost/compress/zstd" 8 ) 9 10 type zstdCompression struct{} 11 12 func NewZstdCompression() Compression { 13 return &zstdCompression{} 14 } 15 16 func (c *zstdCompression) NewReader(reader io.ReadCloser) (io.ReadCloser, error) { 17 d, err := zstd.NewReader(reader) 18 if err != nil { 19 return nil, err 20 } 21 return &zstdReader{decoder: d}, nil 22 } 23 24 func (c *zstdCompression) Encoding() baggageclaim.Encoding { 25 return baggageclaim.ZstdEncoding 26 } 27 28 type zstdReader struct { 29 decoder *zstd.Decoder 30 } 31 32 func (zr *zstdReader) Read(p []byte) (int, error) { 33 return zr.decoder.Read(p) 34 } 35 36 func (zr *zstdReader) Close() error { 37 zr.decoder.Close() 38 return nil 39 }