AWS SDK for C++

AWS SDK for C++ Version 1.11.797

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
94 protected:
95 bool m_bad;
96
97 private:
98
99 std::atomic< bool > m_disableRequestProcessing;
100 std::mutex m_requestProcessingSignalLock;
101 std::condition_variable m_requestProcessingSignal;
102 };
103
104 } // namespace Http
105} // namespace Aws
106
107
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 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