AWS SDK for C++

AWS SDK for C++ Version 1.11.896

Loading...
Searching...
No Matches
HttpClient.h
1
6#pragma once
7
8#include <aws/core/Core_EXPORTS.h>
9#include <aws/core/http/HttpConnection.h>
10#include <aws/core/utils/Outcome.h>
11#include <aws/core/client/AWSError.h>
12
13#include <atomic>
14#include <condition_variable>
15#include <memory>
16#include <mutex>
17
18namespace Aws
19{
20 namespace Utils
21 {
22 namespace RateLimits
23 {
24 class RateLimiterInterface;
25 } // namespace RateLimits
26 } // namespace Utils
27
28 namespace Http
29 {
30 class HttpRequest;
31 class HttpResponse;
32
36 class AWS_CORE_API HttpClient
37 {
38 public:
40 virtual ~HttpClient() {}
41
45 virtual std::shared_ptr<HttpResponse> MakeRequest(const std::shared_ptr<HttpRequest>& request,
47 Aws::Utils::RateLimits::RateLimiterInterface* writeLimiter = nullptr) const = 0;
48
52 virtual bool SupportsChunkedTransferEncoding() const { return true; }
53
57 virtual bool IsDefaultAwsHttpClient() const { return false; }
58
74 void RetryRequestSleep(std::chrono::milliseconds sleepTime);
75
77
78 explicit operator bool() const
79 {
80 return !m_bad;
81 }
82
83 virtual Aws::Crt::Optional<Aws::Client::AWSError<Aws::Client::CoreErrors>> AcquireConnection(
84 const std::shared_ptr<HttpRequest>& request,
85 const std::function<void(std::shared_ptr<Aws::Http::Connection>, int)>& onClientConnectionAvailable) {
86 AWS_UNREFERENCED_PARAM(request);
87 AWS_UNREFERENCED_PARAM(onClientConnectionAvailable);
89 "NotImplemented",
90 "creating a connection is not supported on this http client",
91 false};
92 }
93
99 virtual Aws::Crt::Optional<Aws::Client::AWSError<Aws::Client::CoreErrors>> MakeRequestAsync(
100 const std::shared_ptr<HttpRequest>& request,
101 std::function<void(std::shared_ptr<HttpResponse>)> onResponseComplete,
102 std::function<void(const std::shared_ptr<Aws::Http::Connection>&)> onClientConnectionAvailable = nullptr,
104 Aws::Utils::RateLimits::RateLimiterInterface* writeLimiter = nullptr) const {
105 AWS_UNREFERENCED_PARAM(request);
106 AWS_UNREFERENCED_PARAM(onResponseComplete);
107 AWS_UNREFERENCED_PARAM(onClientConnectionAvailable);
108 AWS_UNREFERENCED_PARAM(readLimiter);
109 AWS_UNREFERENCED_PARAM(writeLimiter);
111 "NotImplemented",
112 "async requests are not supported on this http client",
113 false};
114 }
115
116 protected:
117 bool m_bad;
118
119 private:
120
121 std::atomic< bool > m_disableRequestProcessing;
122 std::mutex m_requestProcessingSignalLock;
123 std::condition_variable m_requestProcessingSignal;
124 };
125
126 } // namespace Http
127} // namespace Aws
128
129
void RetryRequestSleep(std::chrono::milliseconds sleepTime)
virtual bool SupportsChunkedTransferEncoding() const
Definition HttpClient.h:52
bool ContinueRequest(const Aws::Http::HttpRequest &) const
bool IsRequestProcessingEnabled() const
virtual 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)
Definition HttpClient.h:83
virtual Aws::Crt::Optional< Aws::Client::AWSError< Aws::Client::CoreErrors > > MakeRequestAsync(const std::shared_ptr< HttpRequest > &request, std::function< void(std::shared_ptr< HttpResponse >)> onResponseComplete, std::function< void(const std::shared_ptr< Aws::Http::Connection > &)> onClientConnectionAvailable=nullptr, Aws::Utils::RateLimits::RateLimiterInterface *readLimiter=nullptr, Aws::Utils::RateLimits::RateLimiterInterface *writeLimiter=nullptr) const
Definition HttpClient.h:99
virtual bool IsDefaultAwsHttpClient() const
Definition HttpClient.h:57
virtual std::shared_ptr< HttpResponse > MakeRequest(const std::shared_ptr< HttpRequest > &request, Aws::Utils::RateLimits::RateLimiterInterface *readLimiter=nullptr, Aws::Utils::RateLimits::RateLimiterInterface *writeLimiter=nullptr) const =0