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
11
12namespace sparrow_ipc
13{
14 enum class CompressionType : std::uint8_t
15 {
18 };
19
20 class CompressionCacheImpl;
21
23 {
24 public:
27
29 CompressionCache& operator=(CompressionCache&&) noexcept;
30
32 CompressionCache& operator=(const CompressionCache&) = delete;
33
34 std::optional<std::span<const std::uint8_t>> find(const void* data_ptr, const size_t data_size);
35 std::span<const std::uint8_t> store(const void* data_ptr, const size_t data_size, std::vector<std::uint8_t>&& data);
36
37 [[nodiscard]] size_t size() const;
38 [[nodiscard]] size_t count(const void* data_ptr, const size_t data_size) const;
39 [[nodiscard]] bool empty() const;
40 void clear();
41
42 private:
43 std::unique_ptr<CompressionCacheImpl> m_pimpl;
44 };
45
46 [[nodiscard]] SPARROW_IPC_API std::span<const std::uint8_t> compress(
47 const CompressionType compression_type,
48 const std::span<const std::uint8_t>& data,
49 CompressionCache& cache);
50
52 const CompressionType compression_type,
53 const std::span<const std::uint8_t>& data,
54 CompressionCache& cache);
55
56 [[nodiscard]] SPARROW_IPC_API std::variant<std::vector<std::uint8_t>, std::span<const std::uint8_t>> decompress(
57 const CompressionType compression_type,
58 std::span<const std::uint8_t> data);
59}
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::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)
SPARROW_IPC_API std::variant< std::vector< std::uint8_t >, std::span< const std::uint8_t > > decompress(const CompressionType compression_type, std::span< const std::uint8_t > data)