github.com/onflow/flow-go@v0.35.7-crescendo-preview.23-atree-inlining/network/compressor/lz4Compressor.go (about) 1 package compressor 2 3 import ( 4 "io" 5 6 "github.com/pierrec/lz4" 7 8 "github.com/onflow/flow-go/network" 9 ) 10 11 var _ network.Compressor = (*Lz4Compressor)(nil) 12 13 type Lz4Compressor struct{} 14 15 func NewLz4Compressor() *Lz4Compressor { 16 return &Lz4Compressor{} 17 } 18 19 func (lz4Comp Lz4Compressor) NewReader(r io.Reader) (io.ReadCloser, error) { 20 return io.NopCloser(lz4.NewReader(r)), nil 21 } 22 23 func (lz4Comp Lz4Compressor) NewWriter(w io.Writer) (network.WriteCloseFlusher, error) { 24 return &lz4WriteCloseFlusher{w: lz4.NewWriter(w)}, nil 25 } 26 27 type lz4WriteCloseFlusher struct { 28 w *lz4.Writer 29 } 30 31 func (lz4W *lz4WriteCloseFlusher) Write(p []byte) (int, error) { 32 return lz4W.w.Write(p) 33 } 34 35 func (lz4W *lz4WriteCloseFlusher) Close() error { 36 return lz4W.w.Close() 37 } 38 39 func (lz4W *lz4WriteCloseFlusher) Flush() error { 40 return lz4W.w.Flush() 41 }