/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include <folly/Portability.h> #include <folly/compression/Compression.h> #if FOLLY_HAVE_LIBZ #include <zlib.h> /** * Interface for Zlib-specific codec initialization. */ namespace folly { namespace compression { namespace zlib { struct Options { … }; /** * Get the default options for gzip compression. * A codec created with these options will have type CodecType::GZIP. */ Options defaultGzipOptions(); /** * Get the default options for zlib compression. * A codec created with these options will have type CodecType::ZLIB. */ Options defaultZlibOptions(); /** * Get a codec with the given options and compression level. * * If the windowSize is 15 and the format is Format::ZLIB or Format::GZIP, then * the type of the codec will be CodecType::ZLIB or CodecType::GZIP * respectively. Otherwise, the type will be CodecType::USER_DEFINED. * * Automatic uncompression is not supported with USER_DEFINED codecs. * * Levels supported: 0 = no compression, 1 = fast, ..., 9 = best; default = 6 */ std::unique_ptr<Codec> getCodec( Options options = Options(), int level = COMPRESSION_LEVEL_DEFAULT); std::unique_ptr<StreamCodec> getStreamCodec( Options options = Options(), int level = COMPRESSION_LEVEL_DEFAULT); } // namespace zlib } // namespace compression } // namespace folly #endif // FOLLY_HAVE_LIBZ namespace folly::io::zlib { defaultGzipOptions; defaultZlibOptions; getCodec; getStreamCodec; Options; } // namespace folly::io::zlib