6#include <aws/http/connection.h>
7#include <aws/http/proxy.h>
8#include <aws/http/request_response.h>
25 class ClientBootstrap;
31 class HttpClientConnection;
33 class HttpClientStream;
35 class HttpProxyStrategy;
45 std::function<void(
const std::shared_ptr<HttpClientConnection> &connection,
int errorCode)>;
67 enum aws_http_header_block headerBlock,
69 std::size_t headersCount)>;
78 std::function<void(
HttpStream &stream,
enum aws_http_header_block block)>;
143 bool UseManualDataWrites =
false;
167 virtual
int GetResponseStatusCode() const noexcept = 0;
178 void UpdateWindow(
std::
size_t incrementSize) noexcept;
181 aws_http_stream *m_stream;
191 static
int s_onIncomingHeaders(
192 struct aws_http_stream *stream,
193 enum aws_http_header_block headerBlock,
194 const struct aws_http_header *headerArray,
196 void *userData) noexcept;
197 static
int s_onIncomingHeaderBlockDone(
198 struct aws_http_stream *stream,
199 enum aws_http_header_block headerBlock,
200 void *userData) noexcept;
201 static
int s_onIncomingBody(
202 struct aws_http_stream *stream,
203 const struct aws_byte_cursor *data,
204 void *userData) noexcept;
205 static
void s_onStreamComplete(struct aws_http_stream *stream,
int errorCode,
void *userData) noexcept;
235 virtual int GetResponseStatusCode() const noexcept override;
242 bool Activate() noexcept;
245 std::shared_ptr<
Aws::Crt::Io::InputStream> stream,
247 bool endStream = false) noexcept;
281 Legacy = AWS_HPCT_HTTP_LEGACY,
319 void InitializeRawProxyOptions(
struct aws_http_proxy_options &raw_options)
const;
417 void InitializeRawProxyOptions(
struct proxy_env_var_settings &raw_options)
const;
528 Unknown = AWS_HTTP_VERSION_UNKNOWN,
529 Http1_0 = AWS_HTTP_VERSION_1_0,
530 Http1_1 = AWS_HTTP_VERSION_1_1,
531 Http2 = AWS_HTTP_VERSION_2,
558 std::shared_ptr<HttpClientStream> NewClientStream(
const HttpRequestOptions &requestOptions)
noexcept;
563 bool IsOpen() const noexcept;
572 void Close() noexcept;
582 int LastError() const noexcept {
return m_lastError; }
592 static bool CreateConnection(
604 static void s_onClientConnectionSetup(
605 struct aws_http_connection *connection,
607 void *user_data)
noexcept;
608 static void s_onClientConnectionShutdown(
609 struct aws_http_connection *connection,
611 void *user_data)
noexcept;
#define AWS_CRT_CPP_API
Definition Exports.h:36
Definition HttpConnection.h:538
virtual ~HttpClientConnection()=default
HttpClientConnection & operator=(HttpClientConnection &&)=delete
aws_http_connection * m_connection
Definition HttpConnection.h:598
HttpClientConnection & operator=(const HttpClientConnection &)=delete
HttpClientConnection(const HttpClientConnection &)=delete
HttpClientConnection(HttpClientConnection &&)=delete
Definition HttpConnection.h:443
Optional< HttpClientConnectionProxyOptions > ProxyOptions
Definition HttpConnection.h:508
HttpClientConnectionOptions(HttpClientConnectionOptions &&rhs)=default
HttpClientConnectionOptions & operator=(const HttpClientConnectionOptions &rhs)=default
Optional< Io::TlsConnectionOptions > TlsOptions
Definition HttpConnection.h:502
std::shared_ptr< Aws::Crt::Io::L4ProxyConfig > L4ProxyOptions
Definition HttpConnection.h:514
size_t InitialWindowSize
Definition HttpConnection.h:464
HttpClientConnectionOptions(const HttpClientConnectionOptions &rhs)=default
OnConnectionSetup OnConnectionSetupCallback
Definition HttpConnection.h:471
Io::SocketOptions SocketOptions
Definition HttpConnection.h:496
String HostName
Definition HttpConnection.h:484
OnConnectionShutdown OnConnectionShutdownCallback
Definition HttpConnection.h:478
Io::ClientBootstrap * Bootstrap
Definition HttpConnection.h:459
~HttpClientConnectionOptions()=default
HttpClientConnectionOptions & operator=(HttpClientConnectionOptions &&rhs)=default
bool ManualWindowManagement
Definition HttpConnection.h:523
uint32_t Port
Definition HttpConnection.h:490
Definition HttpConnection.h:300
HttpClientConnectionProxyOptions & operator=(const HttpClientConnectionProxyOptions &rhs)=default
AwsHttpProxyConnectionType ProxyConnectionType
Definition HttpConnection.h:342
~HttpClientConnectionProxyOptions()=default
HttpClientConnectionProxyOptions(const HttpClientConnectionProxyOptions &rhs)=default
HttpClientConnectionProxyOptions(HttpClientConnectionProxyOptions &&rhs)=default
Optional< Io::TlsConnectionOptions > TlsOptions
Definition HttpConnection.h:337
String BasicAuthPassword
Definition HttpConnection.h:370
uint32_t Port
Definition HttpConnection.h:331
std::shared_ptr< HttpProxyStrategy > ProxyStrategy
Definition HttpConnection.h:348
AwsHttpProxyAuthenticationType AuthType
Definition HttpConnection.h:358
String BasicAuthUsername
Definition HttpConnection.h:364
HttpClientConnectionProxyOptions & operator=(HttpClientConnectionProxyOptions &&rhs)=default
String HostName
Definition HttpConnection.h:325
Definition HttpConnection.h:223
HttpClientStream & operator=(const HttpClientStream &)=delete
HttpClientStream & operator=(HttpClientStream &&)=delete
HttpClientStream(const HttpClientStream &)=delete
HttpClientStream(HttpClientStream &&)=delete
Definition HttpRequestResponse.h:110
Definition HttpConnection.h:151
HttpStream(const HttpStream &)=delete
HttpStream & operator=(const HttpStream &)=delete
HttpStream(HttpStream &&)=delete
HttpStream & operator=(HttpStream &&)=delete
Definition HttpConnection.h:398
~ProxyEnvVarOptions()=default
ProxyEnvVarOptions & operator=(const ProxyEnvVarOptions &rhs)=default
Optional< Io::TlsConnectionOptions > TlsOptions
Definition HttpConnection.h:436
ProxyEnvVarOptions & operator=(ProxyEnvVarOptions &&rhs)=default
ProxyEnvVarOptions(const ProxyEnvVarOptions &rhs)=default
ProxyEnvVarType proxyEnvVarType
Definition HttpConnection.h:422
ProxyEnvVarOptions(ProxyEnvVarOptions &&rhs)=default
AwsHttpProxyConnectionType connectionType
Definition HttpConnection.h:430
Definition Bootstrap.h:35
Definition SocketOptions.h:70
aws_http_header HttpHeader
Definition HttpConnection.h:36
std::function< void(HttpClientConnection &connection, int errorCode)> OnConnectionShutdown
Definition HttpConnection.h:55
AwsHttpProxyConnectionType
Definition HttpConnection.h:273
std::function< void(HttpStream &stream, int errorCode)> OnStreamComplete
Definition HttpConnection.h:96
ProxyEnvVarType
Definition HttpConnection.h:377
std::function< void(HttpStream &stream, enum aws_http_header_block block)> OnIncomingHeadersBlockDone
Definition HttpConnection.h:78
std::function< void(std::shared_ptr< HttpStream > &stream, int errorCode)> OnWriteDataComplete
Definition HttpConnection.h:217
std::function< void(HttpStream &stream, enum aws_http_header_block headerBlock, const HttpHeader *headersArray, std::size_t headersCount)> OnIncomingHeaders
Definition HttpConnection.h:69
std::function< void(HttpStream &stream, const ByteCursor &data)> OnIncomingBody
Definition HttpConnection.h:86
std::function< void(const std::shared_ptr< HttpClientConnection > &connection, int errorCode)> OnConnectionSetup
Definition HttpConnection.h:45
AwsHttpProxyAuthenticationType
Definition HttpConnection.h:263
HttpVersion
Definition HttpConnection.h:527
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:211
ClientStreamCallbackData()
Definition HttpConnection.h:212
Allocator * allocator
Definition HttpConnection.h:213
std::shared_ptr< HttpStream > stream
Definition HttpConnection.h:214
Definition HttpConnection.h:102
OnStreamComplete onStreamComplete
Definition HttpConnection.h:122
OnIncomingHeaders onIncomingHeaders
Definition HttpConnection.h:111
OnIncomingHeadersBlockDone onIncomingHeadersBlockDone
Definition HttpConnection.h:112
HttpRequest * request
Definition HttpConnection.h:106
OnIncomingBody onIncomingBody
Definition HttpConnection.h:117