AWS SDK for C++

AWS SDK for C++ Version 1.11.806

Loading...
Searching...
No Matches
CRTHttpClient.h
1
6#include <aws/core/Core_EXPORTS.h>
7
8#include <aws/core/http/HttpClient.h>
9#include <aws/core/http/standard/StandardHttpResponse.h>
10#include <aws/core/client/ClientConfiguration.h>
11
12#include <aws/crt/io/TlsOptions.h>
13#include <aws/crt/http/HttpConnection.h>
14
15namespace Aws
16{
17 namespace Crt
18 {
19 namespace Http
20 {
21 class HttpClientConnectionManager;
22 class HttpClientConnectionOptions;
23 }
24
25 namespace Io
26 {
27 class ClientBootstrap;
28 }
29 }
30
31 namespace Client
32 {
33 struct ClientConfiguration;
34 } // namespace Client
35
36 namespace Http
37 {
41 class AWS_CORE_API CRTHttpClient : public HttpClient {
42 public:
44
48 CRTHttpClient(const Aws::Client::ClientConfiguration& clientConfig, Crt::Io::ClientBootstrap& bootstrap);
49 ~CRTHttpClient() override;
50
51 std::shared_ptr<HttpResponse> MakeRequest(const std::shared_ptr<HttpRequest>& request,
53 Aws::Utils::RateLimits::RateLimiterInterface* writeLimiter) const override;
54
55 bool IsDefaultAwsHttpClient() const override { return true; }
56
57 Aws::Crt::Optional<Aws::Client::AWSError<Aws::Client::CoreErrors>> AcquireConnection(
58 const std::shared_ptr<HttpRequest>& request,
59 const std::function<void(std::shared_ptr<Aws::Http::Connection>, int)>& onClientConnectionAvailable) override;
60
61 private:
62 // Yeah, I know, but someone made MakeRequest() const and didn't think about the fact that
63 // making an HTTP request most certainly mutates state. It was me. I'm the person that did that, and
64 // now we're stuck with it. Thanks me.
65 mutable std::unordered_map<Aws::String, const std::shared_ptr<Crt::Http::HttpClientConnectionManager>> m_connectionPools;
66 mutable std::mutex m_connectionPoolLock;
67
68 Crt::Optional<Crt::Io::TlsContext> m_context;
69 Crt::Optional<Crt::Http::HttpClientConnectionProxyOptions> m_proxyOptions;
70
71 Crt::Io::ClientBootstrap& m_bootstrap;
72 Client::ClientConfiguration m_configuration;
73
74 std::shared_ptr<Crt::Http::HttpClientConnectionManager> GetWithCreateConnectionManagerForRequest(const std::shared_ptr<HttpRequest>& request, const Crt::Http::HttpClientConnectionOptions& connectionOptions) const;
75 Crt::Http::HttpClientConnectionOptions CreateConnectionOptionsForRequest(const std::shared_ptr<HttpRequest>& request) const;
76 void CheckAndInitializeProxySettings(const Aws::Client::ClientConfiguration& clientConfig);
77
78 static Aws::String ResolveConnectionPoolKey(const URI& uri);
79 };
80 }
81}
std::shared_ptr< HttpResponse > MakeRequest(const std::shared_ptr< HttpRequest > &request, Aws::Utils::RateLimits::RateLimiterInterface *readLimiter, Aws::Utils::RateLimits::RateLimiterInterface *writeLimiter) const override
bool IsDefaultAwsHttpClient() const override
Aws::Crt::Optional< Aws::Client::AWSError< Aws::Client::CoreErrors > > AcquireConnection(const std::shared_ptr< HttpRequest > &request, const std::function< void(std::shared_ptr< Aws::Http::Connection >, int)> &onClientConnectionAvailable) override
CRTHttpClient(const Aws::Client::ClientConfiguration &clientConfig, Crt::Io::ClientBootstrap &bootstrap)
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
Definition AWSString.h:97