package network

import (
	"github.com/nspcc-dev/neo-go/pkg/network/payload"
	"github.com/pierrec/lz4"
)

// compress compresses bytes using lz4.
func compress(source []byte) ([]byte, error) {
	dest := make([]byte, lz4.CompressBlockBound(len(source)))
	size, err := lz4.CompressBlock(source, dest, nil)
	if err != nil {
		return nil, err
	}
	return dest[:size], nil
}

// decompress decompresses bytes using lz4.
func decompress(source []byte) ([]byte, error) {
	maxSize := len(source) * 255
	if maxSize > payload.MaxSize {
		maxSize = payload.MaxSize
	}
	dest := make([]byte, maxSize)
	size, err := lz4.UncompressBlock(source, dest)
	if err != nil {
		return nil, err
	}
	return dest[:size], nil
}