9 #include <botan/comp_filter.h>
10 #include <botan/exceptn.h>
12 #if defined(BOTAN_HAS_COMPRESSION)
13 #include <botan/compression.h>
18 #if defined(BOTAN_HAS_COMPRESSION)
20 Compression_Filter::Compression_Filter(
const std::string&
type,
size_t level,
size_t bs) :
22 m_buffersize(
std::
max<size_t>(bs, 256)),
27 throw Invalid_Argument(
"Compression type '" + type +
"' not found");
31 Compression_Filter::~Compression_Filter() { }
33 std::string Compression_Filter::name()
const
35 return m_comp->name();
38 void Compression_Filter::start_msg()
40 m_comp->start(m_level);
43 void Compression_Filter::write(
const uint8_t input[],
size_t input_length)
47 const size_t take =
std::min(m_buffersize, input_length);
50 m_buffer.assign(input, input + take);
51 m_comp->update(m_buffer);
60 void Compression_Filter::flush()
63 m_comp->update(m_buffer, 0,
true);
67 void Compression_Filter::end_msg()
70 m_comp->finish(m_buffer);
74 Decompression_Filter::Decompression_Filter(
const std::string& type,
size_t bs) :
76 m_buffersize(
std::
max<size_t>(bs, 256))
80 throw Invalid_Argument(
"Compression type '" + type +
"' not found");
84 Decompression_Filter::~Decompression_Filter() { }
86 std::string Decompression_Filter::name()
const
88 return m_comp->name();
91 void Decompression_Filter::start_msg()
96 void Decompression_Filter::write(
const uint8_t input[],
size_t input_length)
100 const size_t take =
std::min(m_buffersize, input_length);
103 m_buffer.assign(input, input + take);
104 m_comp->update(m_buffer);
109 input_length -= take;
113 void Decompression_Filter::end_msg()
116 m_comp->finish(m_buffer);
#define BOTAN_ASSERT(expr, assertion_made)
Compression_Algorithm * make_compressor(const std::string &name)
Decompression_Algorithm * make_decompressor(const std::string &name)