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>
14#include <condition_variable>
25 class RateLimiterInterface;
51 virtual std::shared_ptr<HttpResponse>
MakeRequest(
const std::shared_ptr<HttpRequest>& request,
84 explicit operator bool()
const
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);
96 "creating a connection is not supported on this http client",
110 virtual Aws::Crt::Optional<Aws::Client::AWSError<Aws::Client::CoreErrors>>
MakeRequestAsync(
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);
121 "async requests are not supported on this http client",
130 std::atomic< bool > m_disableRequestProcessing;
131 std::mutex m_requestProcessingSignalLock;
132 std::condition_variable m_requestProcessingSignal;
void RetryRequestSleep(std::chrono::milliseconds sleepTime)
virtual bool SupportsChunkedTransferEncoding() const
bool ContinueRequest(const Aws::Http::HttpRequest &) const
void EnableRequestProcessing()
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)
std::function< AttemptOutcome(std::shared_ptr< HttpResponse >)> EvaluateAttempt
void DisableRequestProcessing()
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
virtual bool IsDefaultAwsHttpClient() const
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
std::function< void()> OnRetryableRequestComplete
std::chrono::milliseconds backoff