1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 08:24:58 +00:00
serenity/Userland/Services/RequestServer/Request.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

51 lines
1.1 KiB
C++

/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <RequestServer/ConnectionFromClient.h>
#include <RequestServer/Request.h>
namespace RequestServer {
Request::Request(ConnectionFromClient& client, NonnullOwnPtr<Core::File>&& output_stream, i32 request_id)
: m_client(client)
, m_id(request_id)
, m_output_stream(move(output_stream))
{
}
void Request::stop()
{
m_client.did_finish_request({}, *this, false);
}
void Request::set_response_headers(HashMap<ByteString, ByteString, CaseInsensitiveStringTraits> const& response_headers)
{
m_response_headers = response_headers;
m_client.did_receive_headers({}, *this);
}
void Request::set_certificate(ByteString, ByteString)
{
}
void Request::did_finish(bool success)
{
m_client.did_finish_request({}, *this, success);
}
void Request::did_progress(Optional<u64> total_size, u64 downloaded_size)
{
m_total_size = total_size;
m_downloaded_size = downloaded_size;
m_client.did_progress_request({}, *this);
}
void Request::did_request_certificates()
{
m_client.did_request_certificates({}, *this);
}
}