1
#include "source/extensions/compression/brotli/compressor/config.h"
2

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

            
9
BrotliCompressorFactory::BrotliCompressorFactory(
10
    const envoy::extensions::compression::brotli::compressor::v3::Brotli& brotli)
11
6
    : chunk_size_(PROTOBUF_GET_WRAPPED_OR_DEFAULT(brotli, chunk_size, DefaultChunkSize)),
12
6
      disable_literal_context_modeling_(brotli.disable_literal_context_modeling()),
13
6
      encoder_mode_(encoderModeEnum(brotli.encoder_mode())),
14
      input_block_bits_(
15
6
          PROTOBUF_GET_WRAPPED_OR_DEFAULT(brotli, input_block_bits, DefaultInputBlockBits)),
16
6
      quality_(PROTOBUF_GET_WRAPPED_OR_DEFAULT(brotli, quality, DefaultQuality)),
17
6
      window_bits_(PROTOBUF_GET_WRAPPED_OR_DEFAULT(brotli, window_bits, DefaultWindowBits)) {}
18

            
19
5
Envoy::Compression::Compressor::CompressorPtr BrotliCompressorFactory::createCompressor() {
20
5
  return std::make_unique<BrotliCompressorImpl>(quality_, window_bits_, input_block_bits_,
21
5
                                                disable_literal_context_modeling_, encoder_mode_,
22
5
                                                chunk_size_);
23
5
}
24

            
25
BrotliCompressorImpl::EncoderMode BrotliCompressorFactory::encoderModeEnum(
26
6
    envoy::extensions::compression::brotli::compressor::v3::Brotli::EncoderMode encoder_mode) {
27
6
  switch (encoder_mode) {
28
1
  case envoy::extensions::compression::brotli::compressor::v3::Brotli::GENERIC:
29
1
    return BrotliCompressorImpl::EncoderMode::Generic;
30
1
  case envoy::extensions::compression::brotli::compressor::v3::Brotli::TEXT:
31
1
    return BrotliCompressorImpl::EncoderMode::Text;
32
1
  case envoy::extensions::compression::brotli::compressor::v3::Brotli::FONT:
33
1
    return BrotliCompressorImpl::EncoderMode::Font;
34
3
  default:
35
3
    return BrotliCompressorImpl::EncoderMode::Default;
36
6
  }
37
6
}
38

            
39
Envoy::Compression::Compressor::CompressorFactoryPtr
40
BrotliCompressorLibraryFactory::createCompressorFactoryFromProtoTyped(
41
    const envoy::extensions::compression::brotli::compressor::v3::Brotli& proto_config,
42
6
    Server::Configuration::GenericFactoryContext&) {
43
6
  return std::make_unique<BrotliCompressorFactory>(proto_config);
44
6
}
45

            
46
/**
47
 * Static registration for the brotli compressor library. @see NamedCompressorLibraryConfigFactory.
48
 */
49
REGISTER_FACTORY(BrotliCompressorLibraryFactory,
50
                 Envoy::Compression::Compressor::NamedCompressorLibraryConfigFactory);
51

            
52
} // namespace Compressor
53
} // namespace Brotli
54
} // namespace Compression
55
} // namespace Extensions
56
} // namespace Envoy