Line data Source code
1 : #include "source/extensions/compression/zstd/decompressor/config.h" 2 : 3 : namespace Envoy { 4 : namespace Extensions { 5 : namespace Compression { 6 : namespace Zstd { 7 : namespace Decompressor { 8 : 9 : ZstdDecompressorFactory::ZstdDecompressorFactory( 10 : const envoy::extensions::compression::zstd::decompressor::v3::Zstd& zstd, Stats::Scope& scope, 11 : Event::Dispatcher& dispatcher, Api::Api& api, ThreadLocal::SlotAllocator& tls) 12 : : scope_(scope), 13 0 : chunk_size_(PROTOBUF_GET_WRAPPED_OR_DEFAULT(zstd, chunk_size, ZSTD_DStreamOutSize())) { 14 0 : if (zstd.dictionaries_size() > 0) { 15 0 : ddict_manager_ = std::make_unique<ZstdDDictManager>( 16 0 : zstd.dictionaries(), dispatcher, api, tls, false, 17 0 : [](const void* dict_buffer, size_t dict_size) -> ZSTD_DDict* { 18 0 : return ZSTD_createDDict(dict_buffer, dict_size); 19 0 : }); 20 0 : } 21 0 : } 22 : 23 : Envoy::Compression::Decompressor::DecompressorPtr 24 0 : ZstdDecompressorFactory::createDecompressor(const std::string& stats_prefix) { 25 0 : return std::make_unique<ZstdDecompressorImpl>(scope_, stats_prefix, ddict_manager_, chunk_size_); 26 0 : } 27 : 28 : Envoy::Compression::Decompressor::DecompressorFactoryPtr 29 : ZstdDecompressorLibraryFactory::createDecompressorFactoryFromProtoTyped( 30 : const envoy::extensions::compression::zstd::decompressor::v3::Zstd& proto_config, 31 0 : Server::Configuration::FactoryContext& context) { 32 0 : auto& server_context = context.serverFactoryContext(); 33 0 : return std::make_unique<ZstdDecompressorFactory>( 34 0 : proto_config, context.scope(), server_context.mainThreadDispatcher(), server_context.api(), 35 0 : server_context.threadLocal()); 36 0 : } 37 : 38 : /** 39 : * Static registration for the zstd decompressor. @see NamedDecompressorLibraryConfigFactory. 40 : */ 41 : REGISTER_FACTORY(ZstdDecompressorLibraryFactory, 42 : Envoy::Compression::Decompressor::NamedDecompressorLibraryConfigFactory); 43 : } // namespace Decompressor 44 : } // namespace Zstd 45 : } // namespace Compression 46 : } // namespace Extensions 47 : } // namespace Envoy