AWS SDK for C++
AWS SDK for C++
Loading...
Searching...
No Matches
HttpClient.h
Go to the documentation of this file.
1
6#pragma once
7
9
10#include <memory>
11#include <atomic>
12#include <mutex>
13#include <condition_variable>
14
15namespace Aws
16{
17 namespace Utils
18 {
19 namespace RateLimits
20 {
21 class RateLimiterInterface;
22 } // namespace RateLimits
23 } // namespace Utils
24
25 namespace Http
26 {
27 class HttpRequest;
28 class HttpResponse;
29
34 {
35 public:
37 virtual ~HttpClient() {}
38
42 virtual std::shared_ptr<HttpResponse> MakeRequest(const std::shared_ptr<HttpRequest>& request,
44 Aws::Utils::RateLimits::RateLimiterInterface* writeLimiter = nullptr) const = 0;
45
49 virtual bool SupportsChunkedTransferEncoding() const { return true; }
50
66 void RetryRequestSleep(std::chrono::milliseconds sleepTime);
67
69
70 private:
71
72 std::atomic< bool > m_disableRequestProcessing;
73
74 std::mutex m_requestProcessingSignalLock;
75 std::condition_variable m_requestProcessingSignal;
76 };
77
78 } // namespace Http
79} // namespace Aws
80
81
#define AWS_CORE_API
Definition: Core_EXPORTS.h:26
void RetryRequestSleep(std::chrono::milliseconds sleepTime)
virtual bool SupportsChunkedTransferEncoding() const
Definition: HttpClient.h:49
bool ContinueRequest(const Aws::Http::HttpRequest &) const
bool IsRequestProcessingEnabled() 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
virtual ~HttpClient()
Definition: HttpClient.h:37