6#include <aws/http/connection.h>
7#include <aws/http/proxy.h>
8#include <aws/http/request_response.h>
24 class ClientBootstrap;
29 class HttpClientConnection;
31 class HttpClientStream;
33 class HttpProxyStrategy;
43 std::function<void(
const std::shared_ptr<HttpClientConnection> &connection,
int errorCode)>;
65 enum aws_http_header_block headerBlock,
67 std::size_t headersCount)>;
76 std::function<void(
HttpStream &stream,
enum aws_http_header_block block)>;
144 virtual
int GetResponseStatusCode() const noexcept = 0;
155 void UpdateWindow(
std::
size_t incrementSize) noexcept;
158 aws_http_stream *m_stream;
168 static
int s_onIncomingHeaders(
169 struct aws_http_stream *stream,
170 enum aws_http_header_block headerBlock,
171 const struct aws_http_header *headerArray,
173 void *userData) noexcept;
174 static
int s_onIncomingHeaderBlockDone(
175 struct aws_http_stream *stream,
176 enum aws_http_header_block headerBlock,
177 void *userData) noexcept;
178 static
int s_onIncomingBody(
179 struct aws_http_stream *stream,
180 const struct aws_byte_cursor *data,
181 void *userData) noexcept;
182 static
void s_onStreamComplete(struct aws_http_stream *stream,
int errorCode,
void *userData) noexcept;
210 virtual int GetResponseStatusCode() const noexcept override;
217 bool Activate() noexcept;
251 Legacy = AWS_HPCT_HTTP_LEGACY,
289 void InitializeRawProxyOptions(
struct aws_http_proxy_options &raw_options)
const;
426 Unknown = AWS_HTTP_VERSION_UNKNOWN,
427 Http1_0 = AWS_HTTP_VERSION_1_0,
428 Http1_1 = AWS_HTTP_VERSION_1_1,
429 Http2 = AWS_HTTP_VERSION_2,
456 std::shared_ptr<HttpClientStream> NewClientStream(
const HttpRequestOptions &requestOptions)
noexcept;
461 bool IsOpen() const noexcept;
470 void Close() noexcept;
480 int LastError() const noexcept {
return m_lastError; }
490 static bool CreateConnection(
502 static void s_onClientConnectionSetup(
503 struct aws_http_connection *connection,
505 void *user_data)
noexcept;
506 static void s_onClientConnectionShutdown(
507 struct aws_http_connection *connection,
509 void *user_data)
noexcept;
#define AWS_CRT_CPP_API
Definition Exports.h:36
Definition HttpConnection.h:436
virtual ~HttpClientConnection()=default
HttpClientConnection & operator=(HttpClientConnection &&)=delete
aws_http_connection * m_connection
Definition HttpConnection.h:496
HttpClientConnection & operator=(const HttpClientConnection &)=delete
HttpClientConnection(const HttpClientConnection &)=delete
HttpClientConnection(HttpClientConnection &&)=delete
Definition HttpConnection.h:347
Optional< HttpClientConnectionProxyOptions > ProxyOptions
Definition HttpConnection.h:412
HttpClientConnectionOptions(HttpClientConnectionOptions &&rhs)=default
HttpClientConnectionOptions & operator=(const HttpClientConnectionOptions &rhs)=default
Optional< Io::TlsConnectionOptions > TlsOptions
Definition HttpConnection.h:406
size_t InitialWindowSize
Definition HttpConnection.h:368
HttpClientConnectionOptions(const HttpClientConnectionOptions &rhs)=default
OnConnectionSetup OnConnectionSetupCallback
Definition HttpConnection.h:375
Io::SocketOptions SocketOptions
Definition HttpConnection.h:400
String HostName
Definition HttpConnection.h:388
OnConnectionShutdown OnConnectionShutdownCallback
Definition HttpConnection.h:382
Io::ClientBootstrap * Bootstrap
Definition HttpConnection.h:363
~HttpClientConnectionOptions()=default
HttpClientConnectionOptions & operator=(HttpClientConnectionOptions &&rhs)=default
bool ManualWindowManagement
Definition HttpConnection.h:421
uint32_t Port
Definition HttpConnection.h:394
Definition HttpConnection.h:270
HttpClientConnectionProxyOptions & operator=(const HttpClientConnectionProxyOptions &rhs)=default
AwsHttpProxyConnectionType ProxyConnectionType
Definition HttpConnection.h:312
~HttpClientConnectionProxyOptions()=default
HttpClientConnectionProxyOptions(const HttpClientConnectionProxyOptions &rhs)=default
HttpClientConnectionProxyOptions(HttpClientConnectionProxyOptions &&rhs)=default
Optional< Io::TlsConnectionOptions > TlsOptions
Definition HttpConnection.h:307
String BasicAuthPassword
Definition HttpConnection.h:340
uint32_t Port
Definition HttpConnection.h:301
std::shared_ptr< HttpProxyStrategy > ProxyStrategy
Definition HttpConnection.h:318
AwsHttpProxyAuthenticationType AuthType
Definition HttpConnection.h:328
String BasicAuthUsername
Definition HttpConnection.h:334
HttpClientConnectionProxyOptions & operator=(HttpClientConnectionProxyOptions &&rhs)=default
String HostName
Definition HttpConnection.h:295
Definition HttpConnection.h:198
HttpClientStream & operator=(const HttpClientStream &)=delete
HttpClientStream & operator=(HttpClientStream &&)=delete
HttpClientStream(const HttpClientStream &)=delete
HttpClientStream(HttpClientStream &&)=delete
Definition HttpRequestResponse.h:110
Definition HttpConnection.h:128
HttpStream(const HttpStream &)=delete
HttpStream & operator=(const HttpStream &)=delete
HttpStream(HttpStream &&)=delete
HttpStream & operator=(HttpStream &&)=delete
Definition Bootstrap.h:35
Definition SocketOptions.h:48
aws_http_header HttpHeader
Definition HttpConnection.h:34
std::function< void(HttpClientConnection &connection, int errorCode)> OnConnectionShutdown
Definition HttpConnection.h:53
AwsHttpProxyConnectionType
Definition HttpConnection.h:243
std::function< void(HttpStream &stream, int errorCode)> OnStreamComplete
Definition HttpConnection.h:94
std::function< void(HttpStream &stream, enum aws_http_header_block block)> OnIncomingHeadersBlockDone
Definition HttpConnection.h:76
std::function< void(HttpStream &stream, enum aws_http_header_block headerBlock, const HttpHeader *headersArray, std::size_t headersCount)> OnIncomingHeaders
Definition HttpConnection.h:67
std::function< void(HttpStream &stream, const ByteCursor &data)> OnIncomingBody
Definition HttpConnection.h:84
std::function< void(const std::shared_ptr< HttpClientConnection > &connection, int errorCode)> OnConnectionSetup
Definition HttpConnection.h:43
AwsHttpProxyAuthenticationType
Definition HttpConnection.h:233
HttpVersion
Definition HttpConnection.h:425
aws_byte_cursor ByteCursor
Definition Types.h:31
aws_allocator Allocator
Definition Allocator.h:14
std::basic_string< char, std::char_traits< char >, StlAllocator< char > > String
Definition Types.h:45
Definition Allocator.h:11
Definition StringView.h:862
Definition HttpConnection.h:188
ClientStreamCallbackData()
Definition HttpConnection.h:189
Allocator * allocator
Definition HttpConnection.h:190
std::shared_ptr< HttpStream > stream
Definition HttpConnection.h:191
Definition HttpConnection.h:100
OnStreamComplete onStreamComplete
Definition HttpConnection.h:120
OnIncomingHeaders onIncomingHeaders
Definition HttpConnection.h:109
OnIncomingHeadersBlockDone onIncomingHeadersBlockDone
Definition HttpConnection.h:110
HttpRequest * request
Definition HttpConnection.h:104
OnIncomingBody onIncomingBody
Definition HttpConnection.h:115