package network

import (
	"bytes"
	"io"

	"github.com/pierrec/lz4"
)

// compress compresses bytes using lz4.
func compress(source []byte) ([]byte, error) {
	dest := new(bytes.Buffer)
	w := lz4.NewWriter(dest)
	_, err := io.Copy(w, bytes.NewReader(source))
	if err != nil {
		return nil, err
	}
	if w.Close() != nil {
		return nil, err
	}
	return dest.Bytes(), nil
}

// decompress decompresses bytes using lz4.
func decompress(source []byte) ([]byte, error) {
	dest := new(bytes.Buffer)
	r := lz4.NewReader(bytes.NewReader(source))
	_, err := io.Copy(dest, r)
	if err != nil {
		return nil, err
	}
	return dest.Bytes(), nil
}