Serenity Operating System
at master 43 lines 1.5 kB view raw
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/ConnectionToServer.h> 11#include <RequestServer/RequestClientEndpoint.h> 12#include <RequestServer/RequestServerEndpoint.h> 13 14namespace Protocol { 15 16class Request; 17 18class RequestClient final 19 : public IPC::ConnectionToServer<RequestClientEndpoint, RequestServerEndpoint> 20 , public RequestClientEndpoint { 21 IPC_CLIENT_CONNECTION(RequestClient, "/tmp/session/%sid/portal/request"sv) 22 23public: 24 template<typename RequestHashMapTraits = Traits<DeprecatedString>> 25 RefPtr<Request> start_request(DeprecatedString const& method, URL const&, HashMap<DeprecatedString, DeprecatedString, RequestHashMapTraits> const& request_headers = {}, ReadonlyBytes request_body = {}, Core::ProxyData const& = {}); 26 27 void ensure_connection(URL const&, ::RequestServer::CacheLevel); 28 29 bool stop_request(Badge<Request>, Request&); 30 bool set_certificate(Badge<Request>, Request&, DeprecatedString, DeprecatedString); 31 32private: 33 RequestClient(NonnullOwnPtr<Core::LocalSocket>); 34 35 virtual void request_progress(i32, Optional<u32> const&, u32) override; 36 virtual void request_finished(i32, bool, u32) override; 37 virtual void certificate_requested(i32) override; 38 virtual void headers_became_available(i32, IPC::Dictionary const&, Optional<u32> const&) override; 39 40 HashMap<i32, RefPtr<Request>> m_requests; 41}; 42 43}