#pragma once

/**
 * \file Compression.h
 * \brief File containing compress utilities
 */

#include "DataBuffer.h"
#include <cstdint>

namespace blitz {
namespace utils {

/**
 * \brief Compress some data
 * \param buffer : the data to compress
 * \return the compressed data
 */
DataBuffer Compress(const DataBuffer& buffer);

/**
 * \brief Reads the packet lenght and uncompress it
 * \param buffer : the data to uncompress
 * \return the uncompressed data
 */
DataBuffer Decompress(DataBuffer& buffer);

/**
 * \brief Uncompress some data
 * \param buffer : the data to uncompress
 * \param packetLength : lenght of data
 * \return the uncompressed data
 */
DataBuffer Decompress(DataBuffer& buffer, std::uint64_t packetLength);

}  // namespace utils
}  // namespace blitz
