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)>;
136 virtual
int GetResponseStatusCode() const noexcept = 0;
147 void UpdateWindow(
std::
size_t incrementSize) noexcept;
150 aws_http_stream *m_stream;
160 static
int s_onIncomingHeaders(
161 struct aws_http_stream *stream,
162 enum aws_http_header_block headerBlock,
163 const struct aws_http_header *headerArray,
165 void *userData) noexcept;
166 static
int s_onIncomingHeaderBlockDone(
167 struct aws_http_stream *stream,
168 enum aws_http_header_block headerBlock,
169 void *userData) noexcept;
170 static
int s_onIncomingBody(
171 struct aws_http_stream *stream,
172 const struct aws_byte_cursor *data,
173 void *userData) noexcept;
174 static
void s_onStreamComplete(struct aws_http_stream *stream,
int errorCode,
void *userData) noexcept;
199 virtual int GetResponseStatusCode() const noexcept override;
206 bool Activate() noexcept;
239 Legacy = AWS_HPCT_HTTP_LEGACY,
279 void InitializeRawProxyOptions(
struct aws_http_proxy_options &raw_options)
const;
414 Unknown = AWS_HTTP_VERSION_UNKNOWN,
415 Http1_0 = AWS_HTTP_VERSION_1_0,
416 Http1_1 = AWS_HTTP_VERSION_1_1,
417 Http2 = AWS_HTTP_VERSION_2,
443 std::shared_ptr<HttpClientStream> NewClientStream(
const HttpRequestOptions &requestOptions)
noexcept;
448 bool IsOpen() const noexcept;
457 void Close() noexcept;
476 static bool CreateConnection(
488 static void s_onClientConnectionSetup(
489 struct aws_http_connection *connection,
491 void *user_data)
noexcept;
492 static void s_onClientConnectionShutdown(
493 struct aws_http_connection *connection,
495 void *user_data)
noexcept;
#define AWS_CRT_CPP_API
Definition: Exports.h:37
Definition: HttpConnection.h:423
virtual ~HttpClientConnection()=default
HttpClientConnection & operator=(HttpClientConnection &&)=delete
aws_http_connection * m_connection
Definition: HttpConnection.h:482
HttpClientConnection & operator=(const HttpClientConnection &)=delete
HttpClientConnection(const HttpClientConnection &)=delete
HttpClientConnection(HttpClientConnection &&)=delete
Definition: HttpConnection.h:337
Optional< HttpClientConnectionProxyOptions > ProxyOptions
Definition: HttpConnection.h:401
HttpClientConnectionOptions(HttpClientConnectionOptions &&rhs)=default
HttpClientConnectionOptions & operator=(const HttpClientConnectionOptions &rhs)=default
uint16_t Port
Definition: HttpConnection.h:383
Optional< Io::TlsConnectionOptions > TlsOptions
Definition: HttpConnection.h:395
size_t InitialWindowSize
Definition: HttpConnection.h:357
HttpClientConnectionOptions(const HttpClientConnectionOptions &rhs)=default
OnConnectionSetup OnConnectionSetupCallback
Definition: HttpConnection.h:364
Io::SocketOptions SocketOptions
Definition: HttpConnection.h:389
String HostName
Definition: HttpConnection.h:377
OnConnectionShutdown OnConnectionShutdownCallback
Definition: HttpConnection.h:371
Io::ClientBootstrap * Bootstrap
Definition: HttpConnection.h:352
~HttpClientConnectionOptions()=default
HttpClientConnectionOptions & operator=(HttpClientConnectionOptions &&rhs)=default
bool ManualWindowManagement
Definition: HttpConnection.h:410
Definition: HttpConnection.h:258
HttpClientConnectionProxyOptions & operator=(const HttpClientConnectionProxyOptions &rhs)=default
AwsHttpProxyConnectionType ProxyConnectionType
Definition: HttpConnection.h:302
~HttpClientConnectionProxyOptions()=default
HttpClientConnectionProxyOptions(const HttpClientConnectionProxyOptions &rhs)=default
HttpClientConnectionProxyOptions(HttpClientConnectionProxyOptions &&rhs)=default
Optional< Io::TlsConnectionOptions > TlsOptions
Definition: HttpConnection.h:297
String BasicAuthPassword
Definition: HttpConnection.h:330
std::shared_ptr< HttpProxyStrategy > ProxyStrategy
Definition: HttpConnection.h:308
AwsHttpProxyAuthenticationType AuthType
Definition: HttpConnection.h:318
String BasicAuthUsername
Definition: HttpConnection.h:324
HttpClientConnectionProxyOptions & operator=(HttpClientConnectionProxyOptions &&rhs)=default
uint16_t Port
Definition: HttpConnection.h:291
String HostName
Definition: HttpConnection.h:285
Definition: HttpConnection.h:187
HttpClientStream & operator=(const HttpClientStream &)=delete
HttpClientStream & operator=(HttpClientStream &&)=delete
HttpClientStream(const HttpClientStream &)=delete
HttpClientStream(HttpClientStream &&)=delete
Definition: HttpRequestResponse.h:73
Definition: HttpConnection.h:123
HttpStream(const HttpStream &)=delete
HttpStream & operator=(const HttpStream &)=delete
HttpStream(HttpStream &&)=delete
HttpStream & operator=(HttpStream &&)=delete
Definition: Bootstrap.h:35
Definition: SocketOptions.h:45
Definition: Optional.h:13
aws_http_header HttpHeader
Definition: HttpConnection.h:34
std::function< void(HttpClientConnection &connection, int errorCode)> OnConnectionShutdown
Definition: HttpConnection.h:53
AwsHttpProxyConnectionType
Definition: HttpConnection.h:231
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:222
HttpVersion
Definition: HttpConnection.h:413
aws_byte_cursor ByteCursor
Definition: Types.h:33
aws_allocator Allocator
Definition: StlAllocator.h:17
std::basic_string< char, std::char_traits< char >, StlAllocator< char > > String
Definition: Types.h:47
AWS_CRT_CPP_API int LastError() noexcept
Definition: Api.cpp:315
Definition: StringView.h:846
Definition: HttpConnection.h:180
ClientStreamCallbackData()
Definition: HttpConnection.h:181
Allocator * allocator
Definition: HttpConnection.h:182
std::shared_ptr< HttpStream > stream
Definition: HttpConnection.h:183
Definition: HttpConnection.h:100
OnStreamComplete onStreamComplete
Definition: HttpConnection.h:115
OnIncomingHeaders onIncomingHeaders
Definition: HttpConnection.h:106
OnIncomingHeadersBlockDone onIncomingHeadersBlockDone
Definition: HttpConnection.h:107
HttpRequest * request
Definition: HttpConnection.h:102
OnIncomingBody onIncomingBody
Definition: HttpConnection.h:111