Remove makeDecompressionSource()

This function doesn't support all compression methods (i.e. 'none' and
'br') so it shouldn't be exposed.

Also restore the original decompress() as a wrapper around
makeDecompressionSink().
This commit is contained in:
Eelco Dolstra 2021-04-22 10:23:20 +02:00
parent a6eebcff36
commit 5385755227
2 changed files with 6 additions and 21 deletions

View file

@ -186,19 +186,11 @@ struct BrotliDecompressionSink : ChunkedCompressionSink
ref<std::string> decompress(const std::string & method, const std::string & in) ref<std::string> decompress(const std::string & method, const std::string & in)
{ {
if (method == "none" || method == "") StringSink ssink;
return make_ref<std::string>(in); auto sink = makeDecompressionSink(method, ssink);
else if (method == "br") { (*sink)(in);
StringSink ssink; sink->finish();
auto sink = makeDecompressionSink(method, ssink); return ssink.s;
(*sink)(in);
sink->finish();
return ssink.s;
} else {
StringSource ssrc(in);
auto src = makeDecompressionSource(ssrc);
return make_ref<std::string>(src->drain());
}
} }
std::unique_ptr<FinishSink> makeDecompressionSink(const std::string & method, Sink & nextSink) std::unique_ptr<FinishSink> makeDecompressionSink(const std::string & method, Sink & nextSink)
@ -209,7 +201,7 @@ std::unique_ptr<FinishSink> makeDecompressionSink(const std::string & method, Si
return std::make_unique<BrotliDecompressionSink>(nextSink); return std::make_unique<BrotliDecompressionSink>(nextSink);
else else
return sourceToSink([&](Source & source) { return sourceToSink([&](Source & source) {
auto decompressionSource = makeDecompressionSource(source); auto decompressionSource = std::make_unique<ArchiveDecompressionSource>(source);
decompressionSource->drainInto(nextSink); decompressionSource->drainInto(nextSink);
}); });
} }
@ -267,11 +259,6 @@ struct BrotliCompressionSink : ChunkedCompressionSink
} }
}; };
std::unique_ptr<Source> makeDecompressionSource(Source & prev)
{
return std::unique_ptr<Source>(new ArchiveDecompressionSource(prev));
}
ref<CompressionSink> makeCompressionSink(const std::string & method, Sink & nextSink, const bool parallel) ref<CompressionSink> makeCompressionSink(const std::string & method, Sink & nextSink, const bool parallel)
{ {
std::vector<std::string> la_supports = { std::vector<std::string> la_supports = {

View file

@ -15,8 +15,6 @@ struct CompressionSink : BufferedSink, FinishSink
using FinishSink::finish; using FinishSink::finish;
}; };
std::unique_ptr<Source> makeDecompressionSource(Source & prev);
ref<std::string> decompress(const std::string & method, const std::string & in); ref<std::string> decompress(const std::string & method, const std::string & in);
std::unique_ptr<FinishSink> makeDecompressionSink(const std::string & method, Sink & nextSink); std::unique_ptr<FinishSink> makeDecompressionSink(const std::string & method, Sink & nextSink);