AWS SDK for C++

AWS SDK for C++ Version 1.11.908

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 <functional>
16#include <memory>
17#include <mutex>
18
19namespace Aws
20{
21 namespace Utils
22 {
23 namespace RateLimits
24 {
25 class RateLimiterInterface;
26 } // namespace RateLimits
27
28 namespace Threading
29 {
30 class Executor;
31 } // namespace Threading
32 } // namespace Utils
33
34 namespace Http
35 {
36 class HttpRequest;
37 class HttpResponse;
38
42 class AWS_CORE_API HttpClient
43 {
44 public:
46 virtual ~HttpClient() {}
47
51 virtual std::shared_ptr<HttpResponse> MakeRequest(const std::shared_ptr<HttpRequest>& request,
53 Aws::Utils::RateLimits::RateLimiterInterface* writeLimiter = nullptr) const = 0;
54
58 virtual bool SupportsChunkedTransferEncoding() const { return true; }
59
63 virtual bool IsDefaultAwsHttpClient() const { return false; }
64
80 void RetryRequestSleep(std::chrono::milliseconds sleepTime);
81
83
84 explicit operator bool() const
85 {
86 return !m_bad;
87 }
88
89 virtual Aws::Crt::Optional<Aws::Client::AWSError<Aws::Client::CoreErrors>> AcquireConnection(
90 const std::shared_ptr<HttpRequest>& request,
91 const std::function<void(std::shared_ptr<Aws::Http::Connection>, int)>& onClientConnectionAvailable) {
92 AWS_UNREFERENCED_PARAM(request);
93 AWS_UNREFERENCED_PARAM(onClientConnectionAvailable);
95 "NotImplemented",
96 "creating a connection is not supported on this http client",
97 false};
98 }
99
101 {
103 std::chrono::milliseconds backoff;
104 };
105
106 using PrepareAttempt = std::function<std::shared_ptr<HttpRequest>()>;
107 using EvaluateAttempt = std::function<AttemptOutcome(std::shared_ptr<HttpResponse>)>;
108 using OnRetryableRequestComplete = std::function<void()>;
109
110 virtual Aws::Crt::Optional<Aws::Client::AWSError<Aws::Client::CoreErrors>> MakeRequestAsync(
111 const PrepareAttempt& prepareAttempt,
112 const EvaluateAttempt& evaluateAttempt,
113 const OnRetryableRequestComplete& onComplete,
114 std::shared_ptr<Aws::Utils::Threading::Executor> executor) const {
115 AWS_UNREFERENCED_PARAM(prepareAttempt);
116 AWS_UNREFERENCED_PARAM(evaluateAttempt);
117 AWS_UNREFERENCED_PARAM(onComplete);
118 AWS_UNREFERENCED_PARAM(executor);
120 "NotImplemented",
121 "async requests are not supported on this http client",
122 false};
123 }
124
125 protected:
126 bool m_bad;
127
128 private:
129
130 std::atomic< bool > m_disableRequestProcessing;
131 std::mutex m_requestProcessingSignalLock;
132 std::condition_variable m_requestProcessingSignal;
133 };
134
135 } // namespace Http
136} // namespace Aws
137
138
void RetryRequestSleep(std::chrono::milliseconds sleepTime)
virtual bool SupportsChunkedTransferEncoding() const
Definition HttpClient.h:58
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:89
std::function< AttemptOutcome(std::shared_ptr< HttpResponse >)> EvaluateAttempt
Definition HttpClient.h:107
virtual Aws::Crt::Optional< Aws::Client::AWSError< Aws::Client::CoreErrors > > MakeRequestAsync(const PrepareAttempt &prepareAttempt, const EvaluateAttempt &evaluateAttempt, const OnRetryableRequestComplete &onComplete, std::shared_ptr< Aws::Utils::Threading::Executor > executor) const
Definition HttpClient.h:110
virtual bool IsDefaultAwsHttpClient() const
Definition HttpClient.h:63
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
std::function< std::shared_ptr< HttpRequest >()> PrepareAttempt
Definition HttpClient.h:106
std::function< void()> OnRetryableRequestComplete
Definition HttpClient.h:108
std::chrono::milliseconds backoff
Definition HttpClient.h:103