1
#include "source/extensions/compression/zstd/compressor/zstd_compressor_impl.h"
2

            
3
namespace Envoy {
4
namespace Extensions {
5
namespace Compression {
6
namespace Zstd {
7
namespace Compressor {
8

            
9
ZstdCompressorImpl::ZstdCompressorImpl(uint32_t compression_level, bool enable_checksum,
10
                                       uint32_t strategy, const ZstdCDictManagerPtr& cdict_manager,
11
                                       uint32_t chunk_size)
12
342
    : ZstdCompressorImplBase(compression_level, enable_checksum, strategy, chunk_size),
13
342
      cdict_manager_(cdict_manager) {
14
342
  size_t result;
15
342
  if (cdict_manager_) {
16
174
    ZSTD_CDict* cdict = cdict_manager_->getFirstDictionary();
17
174
    result = ZSTD_CCtx_refCDict(cctx_.get(), cdict);
18
182
  } else {
19
168
    result = ZSTD_CCtx_setParameter(cctx_.get(), ZSTD_c_compressionLevel, compression_level_);
20
168
  }
21
342
  RELEASE_ASSERT(!ZSTD_isError(result), "");
22
342
}
23

            
24
void ZstdCompressorImpl::compressPreprocess(Buffer::Instance&,
25
3733
                                            Envoy::Compression::Compressor::State) {}
26

            
27
void ZstdCompressorImpl::compressProcess(const Buffer::Instance&,
28
                                         const Buffer::RawSlice& input_slice,
29
3077
                                         Buffer::Instance& accumulation_buffer) {
30
3077
  setInput(input_slice);
31
3077
  process(accumulation_buffer, ZSTD_e_continue);
32
3077
}
33

            
34
3733
void ZstdCompressorImpl::compressPostprocess(Buffer::Instance&) {}
35

            
36
} // namespace Compressor
37
} // namespace Zstd
38
} // namespace Compression
39
} // namespace Extensions
40
} // namespace Envoy