sparrow-ipc 0.2.0
Loading...
Searching...
No Matches
compression.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <memory>
5#include <optional>
6#include <span>
7#include <variant>
8#include <vector>
9
10#include <sparrow/buffer/buffer.hpp>
11
13
14namespace sparrow_ipc
15{
16 enum class CompressionType : std::uint8_t
17 {
20 };
21
22 class CompressionCacheImpl;
23
25 {
26 public:
27
30
32 CompressionCache& operator=(CompressionCache&&) noexcept;
33
35 CompressionCache& operator=(const CompressionCache&) = delete;
36
37 std::optional<std::span<const std::uint8_t>> find(const void* data_ptr, const size_t data_size);
38 std::span<const std::uint8_t>
39 store(const void* data_ptr, const size_t data_size, std::vector<std::uint8_t>&& data);
40
41 [[nodiscard]] size_t size() const;
42 [[nodiscard]] size_t count(const void* data_ptr, const size_t data_size) const;
43 [[nodiscard]] bool empty() const;
44 void clear();
45
46 private:
47
48 std::unique_ptr<CompressionCacheImpl> m_pimpl;
49 };
50
51 [[nodiscard]] SPARROW_IPC_API std::span<const std::uint8_t> compress(
52 const CompressionType compression_type,
53 const std::span<const std::uint8_t>& data,
54 CompressionCache& cache
55 );
56
58 const CompressionType compression_type,
59 const std::span<const std::uint8_t>& data,
60 CompressionCache& cache
61 );
62
63 [[nodiscard]] SPARROW_IPC_API std::variant<sparrow::buffer<std::uint8_t>, std::span<const std::uint8_t>>
64 decompress(const CompressionType compression_type, std::span<const std::uint8_t> data);
65}
std::span< const std::uint8_t > store(const void *data_ptr, const size_t data_size, std::vector< std::uint8_t > &&data)
std::optional< std::span< const std::uint8_t > > find(const void *data_ptr, const size_t data_size)
CompressionCache(CompressionCache &&) noexcept
size_t count(const void *data_ptr, const size_t data_size) const
#define SPARROW_IPC_API
Definition config.hpp:12
SPARROW_IPC_API std::variant< sparrow::buffer< std::uint8_t >, std::span< const std::uint8_t > > decompress(const CompressionType compression_type, std::span< const std::uint8_t > data)
SPARROW_IPC_API std::span< const std::uint8_t > compress(const CompressionType compression_type, const std::span< const std::uint8_t > &data, CompressionCache &cache)
SPARROW_IPC_API size_t get_compressed_size(const CompressionType compression_type, const std::span< const std::uint8_t > &data, CompressionCache &cache)