serenity/Userland/Services/RequestServer/HttpsRequest.cpp
Ali Mohammad Pur 5232afa13d RequestServer+LibProtocol: Make starting requests fully async
This makes it so the clients don't have to wait for RS to become
responsive, potentially allowing them to do other things while RS
handles the connections.
Fixes #23306.
2024-02-26 14:13:37 +01:00

38 lines
1.1 KiB
C++

/*
* Copyright (c) 2020, the SerenityOS developers.
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibHTTP/HttpsJob.h>
#include <RequestServer/HttpCommon.h>
#include <RequestServer/HttpsProtocol.h>
#include <RequestServer/HttpsRequest.h>
namespace RequestServer {
HttpsRequest::HttpsRequest(ConnectionFromClient& client, NonnullRefPtr<HTTP::HttpsJob> job, NonnullOwnPtr<Core::File>&& output_stream, i32 request_id)
: Request(client, move(output_stream), request_id)
, m_job(job)
{
Detail::init(this, job);
}
void HttpsRequest::set_certificate(ByteString certificate, ByteString key)
{
m_job->set_certificate(move(certificate), move(key));
}
HttpsRequest::~HttpsRequest()
{
m_job->on_finish = nullptr;
m_job->on_progress = nullptr;
m_job->cancel();
}
NonnullOwnPtr<HttpsRequest> HttpsRequest::create_with_job(Badge<HttpsProtocol>&&, ConnectionFromClient& client, NonnullRefPtr<HTTP::HttpsJob> job, NonnullOwnPtr<Core::File>&& output_stream, i32 request_id)
{
return adopt_own(*new HttpsRequest(client, move(job), move(output_stream), request_id));
}
}