1
0
mirror of https://github.com/facebook/proxygen.git synced 2026-10-24 01:33:54 +03:00

Move ZstdStreamDecompressor into decompression

Summary:
**Context:** Group Proxygen decompression classes and helpers in `proxygen::decompression`.

**This diff:** Move `ZstdStreamDecompressor` and its associated constants into that namespace and update its live callers across fbsource. Include embedded C++ callers and retain existing include paths.

___

landed-with-radar-review

Differential Revision: D126117909

fbshipit-source-id: e77f003a6b475376187462011b43b05900614c7c
This commit is contained in:
Erin Kramer
2026-10-22 10:45:49 -07:00
committed by meta-codesync[bot]
parent c19c392332
commit ce435f35a9
7 changed files with 18 additions and 14 deletions

View File

@@ -17,7 +17,8 @@ void DecompressionFilter::onRequest(std::unique_ptr<HTTPMessage> msg) noexcept {
auto contentEncoding =
headers.getSingleOrNullptr(HTTP_HEADER_CONTENT_ENCODING);
if (contentEncoding && *contentEncoding == "zstd") {
decompressor_ = std::make_unique<ZstdStreamDecompressor>();
decompressor_ =
std::make_unique<proxygen::decompression::ZstdStreamDecompressor>();
headers.remove(HTTP_HEADER_CONTENT_ENCODING);
headers.remove(HTTP_HEADER_CONTENT_LENGTH);
}

View File

@@ -49,7 +49,7 @@ struct ZlibTest {
struct ZstdTest {
static std::unique_ptr<StreamDecompressor> makeDecompressor() {
return std::make_unique<ZstdStreamDecompressor>();
return std::make_unique<proxygen::decompression::ZstdStreamDecompressor>();
}
static std::string getExpectedEncoding() {
return "zstd";

View File

@@ -103,7 +103,8 @@ void DecompressionIngressFilter::initializeWithHTTPMessage(HTTPMessage& msg) {
statsCallback_->onDecompressionAlgo(std::string(it->name));
}
if (it->type == CompressionType::ZSTD) {
decompressor_ = std::make_unique<ZstdStreamDecompressor>();
decompressor_ =
std::make_unique<proxygen::decompression::ZstdStreamDecompressor>();
} else {
decompressor_ =
std::make_unique<proxygen::decompression::ZlibStreamDecompressor>(

View File

@@ -40,7 +40,7 @@ struct ZlibTest {
struct ZstdTest {
static std::unique_ptr<StreamDecompressor> makeDecompressor() {
return std::make_unique<ZstdStreamDecompressor>();
return std::make_unique<proxygen::decompression::ZstdStreamDecompressor>();
}
static std::string getExpectedEncoding() {
return "zstd";

View File

@@ -11,7 +11,7 @@
#include <folly/io/Cursor.h>
#include <folly/io/IOBuf.h>
namespace proxygen {
namespace proxygen::decompression {
void ZstdStreamDecompressor::freeDCtx(ZSTD_DCtx* dctx) {
ZSTD_freeDCtx(dctx);
@@ -88,4 +88,4 @@ std::unique_ptr<folly::IOBuf> ZstdStreamDecompressor::decompress(
return out;
}
} // namespace proxygen
} // namespace proxygen::decompression

View File

@@ -26,7 +26,7 @@
#include <proxygen/lib/utils/StreamDecompressor.h>
namespace proxygen {
namespace proxygen::decompression {
constexpr uint64_t kDefaultMaxZstdDecompressionRatio = 1000;
@@ -72,4 +72,4 @@ class ZstdStreamDecompressor : public StreamDecompressor {
uint64_t totalInputBytes_{0};
uint64_t totalOutputBytes_{0};
};
} // namespace proxygen
} // namespace proxygen::decompression

View File

@@ -42,7 +42,8 @@ std::unique_ptr<folly::IOBuf> makeBuf(uint32_t size) {
void verify(std::unique_ptr<IOBuf> original,
std::unique_ptr<IOBuf> compressed,
bool reuseBuf) {
auto zd = std::make_unique<ZstdStreamDecompressor>(reuseBuf);
auto zd = std::make_unique<proxygen::decompression::ZstdStreamDecompressor>(
reuseBuf);
auto decompressed = zd->decompress(compressed.get());
ASSERT_FALSE(zd->hasError()) << "Decompression error.";
@@ -56,7 +57,8 @@ void verify(std::unique_ptr<IOBuf> original,
void verifyPieces(std::unique_ptr<IOBuf> original,
std::vector<std::unique_ptr<IOBuf>> compressed,
bool reuseBuf) {
auto zd = std::make_unique<ZstdStreamDecompressor>(reuseBuf);
auto zd = std::make_unique<proxygen::decompression::ZstdStreamDecompressor>(
reuseBuf);
auto decompressed = folly::IOBuf::create(0);
@@ -260,7 +262,7 @@ TEST_F(ZstdTests, MaxDecompressionRatio_FailsWhenRatioTooSmall) {
auto compressed = compress(original);
ASSERT_NE(compressed, nullptr);
auto zd = std::make_unique<ZstdStreamDecompressor>(
auto zd = std::make_unique<proxygen::decompression::ZstdStreamDecompressor>(
/*reuseOutBuf=*/false, /*maxDecompressionRatio=*/10);
auto decompressed = zd->decompress(compressed.get());
@@ -275,7 +277,7 @@ TEST_F(ZstdTests, MaxDecompressionRatio_PassesWhenRatioLargeEnough) {
ASSERT_NE(compressed, nullptr);
// Use a very large ratio so decompression succeeds.
auto zd = std::make_unique<ZstdStreamDecompressor>(
auto zd = std::make_unique<proxygen::decompression::ZstdStreamDecompressor>(
/*reuseOutBuf=*/false, /*maxDecompressionRatio=*/1000000);
auto decompressed = zd->decompress(compressed.get());
@@ -291,7 +293,7 @@ TEST_F(ZstdTests, MaxDecompressionRatio_PassesWhenExplicitlyUnlimited) {
ASSERT_NE(compressed, nullptr);
// Explicitly opt out of ratio limit.
auto zd = std::make_unique<ZstdStreamDecompressor>(
auto zd = std::make_unique<proxygen::decompression::ZstdStreamDecompressor>(
/*reuseOutBuf=*/false, /*maxDecompressionRatio=*/std::nullopt);
auto decompressed = zd->decompress(compressed.get());
@@ -308,7 +310,7 @@ TEST_F(ZstdTests, MaxDecompressionRatio_StreamingChunksFailure) {
auto compressed = compress(original);
ASSERT_NE(compressed, nullptr);
auto zd = std::make_unique<ZstdStreamDecompressor>(
auto zd = std::make_unique<proxygen::decompression::ZstdStreamDecompressor>(
/*reuseOutBuf=*/false, /*maxDecompressionRatio=*/10);
// Split compressed data into small chunks.