aws-crt-cpp
C++ wrapper around the aws-c-* libraries. Provides Cross-Platform Transport Protocols and SSL/TLS implementations for C++.
Loading...
Searching...
No Matches
Api.h
Go to the documentation of this file.
1#pragma once
6#include <aws/crt/Types.h>
11
12#include <aws/common/logging.h>
13
14namespace Aws
15{
16 namespace Crt
17 {
21 enum class LogLevel
22 {
23 None = AWS_LL_NONE,
24 Fatal = AWS_LL_FATAL,
25 Error = AWS_LL_ERROR,
26 Warn = AWS_LL_WARN,
27 Info = AWS_LL_INFO,
28 Debug = AWS_LL_DEBUG,
29 Trace = AWS_LL_TRACE,
30
31 Count
32 };
33
38 {
41 };
42
48 {
49 public:
54 ApiHandle(Allocator *allocator) noexcept;
55 ApiHandle() noexcept;
56 ~ApiHandle();
57 ApiHandle(const ApiHandle &) = delete;
58 ApiHandle(ApiHandle &&) = delete;
59 ApiHandle &operator=(const ApiHandle &) = delete;
61
68 void InitializeLogging(LogLevel level, const char *filename);
69
76 void InitializeLogging(LogLevel level, FILE *fp);
77
82 void SetShutdownBehavior(ApiHandleShutdownBehavior behavior);
83
88 void SetBYOCryptoNewMD5Callback(Crypto::CreateHashCallback &&callback);
89
94 void SetBYOCryptoNewSHA256Callback(Crypto::CreateHashCallback &&callback);
95
100 void SetBYOCryptoNewSHA1Callback(Crypto::CreateHashCallback &&callback);
101
106 void SetBYOCryptoNewSHA256HMACCallback(Crypto::CreateHMACCallback &&callback);
107
113 void SetBYOCryptoClientTlsCallback(Io::NewClientTlsHandlerCallback &&callback);
114
124 void SetBYOCryptoTlsContextCallbacks(
125 Io::NewTlsContextImplCallback &&newCallback,
126 Io::DeleteTlsContextImplCallback &&deleteCallback,
127 Io::IsTlsAlpnSupportedCallback &&alpnCallback);
128
130 static const Io::NewTlsContextImplCallback &GetBYOCryptoNewTlsContextImplCallback();
132 static const Io::DeleteTlsContextImplCallback &GetBYOCryptoDeleteTlsContextImplCallback();
134 static const Io::IsTlsAlpnSupportedCallback &GetBYOCryptoIsTlsAlpnSupportedCallback();
135
149 static Io::ClientBootstrap *GetOrCreateStaticDefaultClientBootstrap();
150
166 static Io::EventLoopGroup *GetOrCreateStaticDefaultEventLoopGroup();
167
183 static Io::HostResolver *GetOrCreateStaticDefaultHostResolver();
184
185#pragma pack(push, 1)
186 struct Version
187 {
188 uint16_t major;
189 uint16_t minor;
190 uint16_t patch;
191 };
192#pragma pack(pop)
197 Version GetCrtVersion() const;
198
199 private:
200 void InitializeLoggingCommon(struct aws_logger_standard_options &options);
201
202 aws_logger m_logger;
203
204 ApiHandleShutdownBehavior m_shutdownBehavior;
205
206 static Io::ClientBootstrap *s_static_bootstrap;
207 static std::mutex s_lock_client_bootstrap;
208 static void ReleaseStaticDefaultClientBootstrap();
209
210 static Io::EventLoopGroup *s_static_event_loop_group;
211 static std::mutex s_lock_event_loop_group;
212 static void ReleaseStaticDefaultEventLoopGroup();
213
214 static int s_host_resolver_default_max_hosts;
215 static Io::HostResolver *s_static_default_host_resolver;
216 static std::mutex s_lock_default_host_resolver;
217 static void ReleaseStaticDefaultHostResolver();
218
219 Version m_version = {0, 0, 0};
220 };
221
227 AWS_CRT_CPP_API const char *ErrorDebugString(int error) noexcept;
228
232 AWS_CRT_CPP_API int LastError() noexcept;
233
238 AWS_CRT_CPP_API int LastErrorOrUnknown() noexcept;
239 } // namespace Crt
240} // namespace Aws
#define AWS_CRT_CPP_API
Definition Exports.h:36
Definition Api.h:48
ApiHandle(ApiHandle &&)=delete
ApiHandle & operator=(ApiHandle &&)=delete
ApiHandle & operator=(const ApiHandle &)=delete
ApiHandle(const ApiHandle &)=delete
Definition Bootstrap.h:35
Definition EventLoopGroup.h:33
Definition HostResolver.h:35
std::function< std::shared_ptr< ByoHMAC >(size_t digestSize, const ByteCursor &secret, Allocator *)> CreateHMACCallback
Definition HMAC.h:164
std::function< std::shared_ptr< ByoHash >(size_t digestSize, Allocator *)> CreateHashCallback
Definition Hash.h:208
std::function< void *(TlsContextOptions &, TlsMode, Allocator *)> NewTlsContextImplCallback
Definition TlsOptions.h:386
std::function< bool()> IsTlsAlpnSupportedCallback
Definition TlsOptions.h:388
std::function< std::shared_ptr< ClientTlsChannelHandler >(struct aws_channel_slot *slot, const struct aws_tls_connection_options &options, Allocator *allocator)> NewClientTlsHandlerCallback
Definition TlsOptions.h:449
std::function< void(void *)> DeleteTlsContextImplCallback
Definition TlsOptions.h:387
AWS_CRT_CPP_API int LastErrorOrUnknown() noexcept
Definition Api.cpp:430
ApiHandleShutdownBehavior
Definition Api.h:38
AWS_CRT_CPP_API const char * ErrorDebugString(int error) noexcept
Definition Api.cpp:420
LogLevel
Definition Api.h:22
aws_allocator Allocator
Definition Allocator.h:14
AWS_CRT_CPP_API int LastError() noexcept
Definition Api.cpp:425
Definition Allocator.h:11
Definition Api.h:187
uint16_t major
Definition Api.h:188
uint16_t minor
Definition Api.h:189
uint16_t patch
Definition Api.h:190