9#include <botan/filters.h>
10#include <botan/exceptn.h>
12#if defined(BOTAN_HAS_COMPRESSION)
13 #include <botan/compression.h>
18#if defined(BOTAN_HAS_COMPRESSION)
20Compression_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");
31Compression_Filter::~Compression_Filter() { }
33std::string Compression_Filter::name()
const
35 return m_comp->name();
38void Compression_Filter::start_msg()
40 m_comp->start(m_level);
43void 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);
60void Compression_Filter::flush()
63 m_comp->update(m_buffer, 0,
true);
67void Compression_Filter::end_msg()
70 m_comp->finish(m_buffer);
74Decompression_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");
84Decompression_Filter::~Decompression_Filter() { }
86std::string Decompression_Filter::name()
const
88 return m_comp->name();
91void Decompression_Filter::start_msg()
96void 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;
113void Decompression_Filter::end_msg()
116 m_comp->finish(m_buffer);
#define BOTAN_ASSERT(expr, assertion_made)
Decompression_Algorithm * make_decompressor(const std::string &name)
Compression_Algorithm * make_compressor(const std::string &name)