userver: userver/compression/error.hpp Source File
Loading...
Searching...
No Matches
error.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/compression/error.hpp
4/// @brief Decompression errors
5/// @ingroup userver_universal
6
7#include <stdexcept>
8
9#include <fmt/format.h>
10
11USERVER_NAMESPACE_BEGIN
12
13/// @brief Compression and decompression utilities and errors.
14namespace compression {
15
16/// Base class for decompression errors
17class DecompressionError : public std::runtime_error {
18public:
19 using std::runtime_error::runtime_error;
20
21 DecompressionError(const DecompressionError&) = default;
22 DecompressionError(DecompressionError&&) = default;
23 DecompressionError& operator=(const DecompressionError&) = default;
24 DecompressionError& operator=(DecompressionError&&) = default;
25
26 ~DecompressionError() override;
27};
28
29/// Decompressed data size exceeds the limit
31public:
32 TooBigError()
33 : DecompressionError("Decompressed data exceeds the limit")
34 {}
35
36 TooBigError(const TooBigError&) = default;
37 TooBigError(TooBigError&&) = default;
38 TooBigError& operator=(const TooBigError&) = default;
39 TooBigError& operator=(TooBigError&&) = default;
40
41 ~TooBigError() override;
42};
43
45public:
46 explicit ErrWithCode(const char* err_name)
47 : DecompressionError(fmt::format("Decompression failed: {}", err_name))
48 {}
49
50 ErrWithCode(const ErrWithCode&) = default;
51 ErrWithCode(ErrWithCode&&) = default;
52 ErrWithCode& operator=(const ErrWithCode&) = default;
53 ErrWithCode& operator=(ErrWithCode&&) = default;
54
55 ~ErrWithCode() override;
56};
57
58} // namespace compression
59
60USERVER_NAMESPACE_END