github.com/segmentio/parquet-go@v0.0.0-20230712180008-5d42db8f0d47/compress/snappy/snappy.go (about) 1 // Package snappy implements the SNAPPY parquet compression codec. 2 package snappy 3 4 import ( 5 "github.com/klauspost/compress/snappy" 6 "github.com/segmentio/parquet-go/format" 7 ) 8 9 type Codec struct { 10 } 11 12 // The snappy.Reader and snappy.Writer implement snappy encoding/decoding with 13 // a framing protocol, but snappy requires the implementation to use the raw 14 // snappy block encoding. This is why we need to use snappy.Encode/snappy.Decode 15 // and have to ship custom implementations of the compressed reader and writer. 16 17 func (c *Codec) String() string { 18 return "SNAPPY" 19 } 20 21 func (c *Codec) CompressionCodec() format.CompressionCodec { 22 return format.Snappy 23 } 24 25 func (c *Codec) Encode(dst, src []byte) ([]byte, error) { 26 return snappy.Encode(dst, src), nil 27 } 28 29 func (c *Codec) Decode(dst, src []byte) ([]byte, error) { 30 return snappy.Decode(dst, src) 31 }