Serenity Operating System
1/*
2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <AK/HashMap.h>
10#include <LibIPC/ConnectionFromClient.h>
11#include <RequestServer/Forward.h>
12#include <RequestServer/RequestClientEndpoint.h>
13#include <RequestServer/RequestServerEndpoint.h>
14
15namespace RequestServer {
16
17class ConnectionFromClient final
18 : public IPC::ConnectionFromClient<RequestClientEndpoint, RequestServerEndpoint> {
19 C_OBJECT(ConnectionFromClient);
20
21public:
22 ~ConnectionFromClient() override = default;
23
24 virtual void die() override;
25
26 void did_receive_headers(Badge<Request>, Request&);
27 void did_finish_request(Badge<Request>, Request&, bool success);
28 void did_progress_request(Badge<Request>, Request&);
29 void did_request_certificates(Badge<Request>, Request&);
30
31private:
32 explicit ConnectionFromClient(NonnullOwnPtr<Core::LocalSocket>);
33
34 virtual Messages::RequestServer::IsSupportedProtocolResponse is_supported_protocol(DeprecatedString const&) override;
35 virtual Messages::RequestServer::StartRequestResponse start_request(DeprecatedString const&, URL const&, IPC::Dictionary const&, ByteBuffer const&, Core::ProxyData const&) override;
36 virtual Messages::RequestServer::StopRequestResponse stop_request(i32) override;
37 virtual Messages::RequestServer::SetCertificateResponse set_certificate(i32, DeprecatedString const&, DeprecatedString const&) override;
38 virtual void ensure_connection(URL const& url, ::RequestServer::CacheLevel const& cache_level) override;
39
40 HashMap<i32, OwnPtr<Request>> m_requests;
41};
42
43}