1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 08:27:45 +00:00

LibHTTP: Avoid implicitly copying ByteBuffer

This commit is contained in:
Ben Wiederhake 2021-11-28 23:00:52 +01:00 committed by Brian Gianforcaro
parent d78365f785
commit f59f7674c8
5 changed files with 10 additions and 10 deletions

View file

@ -41,8 +41,8 @@ protected:
virtual bool is_established() const override { return true; } virtual bool is_established() const override { return true; }
private: private:
explicit HttpJob(const HttpRequest& request, OutputStream& output_stream) explicit HttpJob(HttpRequest&& request, OutputStream& output_stream)
: Job(request, output_stream) : Job(move(request), output_stream)
{ {
} }

View file

@ -45,8 +45,8 @@ protected:
virtual void read_while_data_available(Function<IterationDecision()>) override; virtual void read_while_data_available(Function<IterationDecision()>) override;
private: private:
explicit HttpsJob(const HttpRequest& request, OutputStream& output_stream, const Vector<Certificate>* override_certs = nullptr) explicit HttpsJob(HttpRequest&& request, OutputStream& output_stream, const Vector<Certificate>* override_certs = nullptr)
: Job(request, output_stream) : Job(move(request), output_stream)
, m_override_ca_certificates(override_certs) , m_override_ca_certificates(override_certs)
{ {
} }

View file

@ -40,7 +40,7 @@ static Optional<ByteBuffer> handle_content_encoding(const ByteBuffer& buf, const
dbgln(" Output size: {}", uncompressed.value().size()); dbgln(" Output size: {}", uncompressed.value().size());
} }
return uncompressed.value(); return uncompressed.release_value();
} else if (content_encoding == "deflate") { } else if (content_encoding == "deflate") {
dbgln_if(JOB_DEBUG, "Job::handle_content_encoding: buf is deflate compressed!"); dbgln_if(JOB_DEBUG, "Job::handle_content_encoding: buf is deflate compressed!");
@ -66,15 +66,15 @@ static Optional<ByteBuffer> handle_content_encoding(const ByteBuffer& buf, const
dbgln(" Output size: {}", uncompressed.value().size()); dbgln(" Output size: {}", uncompressed.value().size());
} }
return uncompressed.value(); return uncompressed.release_value();
} }
return buf; return buf;
} }
Job::Job(const HttpRequest& request, OutputStream& output_stream) Job::Job(HttpRequest&& request, OutputStream& output_stream)
: Core::NetworkJob(output_stream) : Core::NetworkJob(output_stream)
, m_request(request) , m_request(move(request))
{ {
} }

View file

@ -18,7 +18,7 @@ namespace HTTP {
class Job : public Core::NetworkJob { class Job : public Core::NetworkJob {
public: public:
explicit Job(const HttpRequest&, OutputStream&); explicit Job(HttpRequest&&, OutputStream&);
virtual ~Job() override; virtual ~Job() override;
virtual void start(NonnullRefPtr<Core::Socket>) override = 0; virtual void start(NonnullRefPtr<Core::Socket>) override = 0;

View file

@ -81,7 +81,7 @@ OwnPtr<Request> start_request(TBadgedProtocol&& protocol, ClientConnection& clie
auto output_stream = make<OutputFileStream>(pipe_result.value().write_fd); auto output_stream = make<OutputFileStream>(pipe_result.value().write_fd);
output_stream->make_unbuffered(); output_stream->make_unbuffered();
auto job = TJob::construct(request, *output_stream); auto job = TJob::construct(move(request), *output_stream);
auto protocol_request = TRequest::create_with_job(forward<TBadgedProtocol>(protocol), client, (TJob&)*job, move(output_stream)); auto protocol_request = TRequest::create_with_job(forward<TBadgedProtocol>(protocol), client, (TJob&)*job, move(output_stream));
protocol_request->set_request_fd(pipe_result.value().read_fd); protocol_request->set_request_fd(pipe_result.value().read_fd);