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 SetBYOCryptoNewSHA512Callback(Crypto::CreateHashCallback &&callback);
101
106 void SetBYOCryptoNewSHA1Callback(Crypto::CreateHashCallback &&callback);
107
112 void SetBYOCryptoNewSHA256HMACCallback(Crypto::CreateHMACCallback &&callback);
113
118 void SetBYOCryptoNewSHA512HMACCallback(Crypto::CreateHMACCallback &&callback);
119
125 void SetBYOCryptoClientTlsCallback(Io::NewClientTlsHandlerCallback &&callback);
126
136 void SetBYOCryptoTlsContextCallbacks(
137 Io::NewTlsContextImplCallback &&newCallback,
138 Io::DeleteTlsContextImplCallback &&deleteCallback,
139 Io::IsTlsAlpnSupportedCallback &&alpnCallback);
140
142 static const Io::NewTlsContextImplCallback &GetBYOCryptoNewTlsContextImplCallback();
144 static const Io::DeleteTlsContextImplCallback &GetBYOCryptoDeleteTlsContextImplCallback();
146 static const Io::IsTlsAlpnSupportedCallback &GetBYOCryptoIsTlsAlpnSupportedCallback();
147
161 static Io::ClientBootstrap *GetOrCreateStaticDefaultClientBootstrap();
162
178 static Io::EventLoopGroup *GetOrCreateStaticDefaultEventLoopGroup();
179
195 static Io::HostResolver *GetOrCreateStaticDefaultHostResolver();
196
197#pragma pack(push, 1)
198 struct Version
199 {
200 uint16_t major;
201 uint16_t minor;
202 uint16_t patch;
203 };
204#pragma pack(pop)
209 Version GetCrtVersion() const;
210
211 private:
212 void InitializeLoggingCommon(struct aws_logger_standard_options &options);
213
214 aws_logger m_logger;
215
216 ApiHandleShutdownBehavior m_shutdownBehavior;
217
218 static Io::ClientBootstrap *s_static_bootstrap;
219 static std::mutex s_lock_client_bootstrap;
220 static void ReleaseStaticDefaultClientBootstrap();
221
222 static Io::EventLoopGroup *s_static_event_loop_group;
223 static std::mutex s_lock_event_loop_group;
224 static void ReleaseStaticDefaultEventLoopGroup();
225
226 static int s_host_resolver_default_max_hosts;
227 static Io::HostResolver *s_static_default_host_resolver;
228 static std::mutex s_lock_default_host_resolver;
229 static void ReleaseStaticDefaultHostResolver();
230
231 Version m_version = {0, 0, 0};
232 };
233
239 AWS_CRT_CPP_API const char *ErrorDebugString(int error) noexcept;
240
244 AWS_CRT_CPP_API int LastError() noexcept;
245
250 AWS_CRT_CPP_API int LastErrorOrUnknown() noexcept;
251 } // namespace Crt
252} // 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:235
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:469
ApiHandleShutdownBehavior
Definition Api.h:38
AWS_CRT_CPP_API const char * ErrorDebugString(int error) noexcept
Definition Api.cpp:459
LogLevel
Definition Api.h:22
aws_allocator Allocator
Definition Allocator.h:14
AWS_CRT_CPP_API int LastError() noexcept
Definition Api.cpp:464
Definition Allocator.h:11
Definition Api.h:199
uint16_t major
Definition Api.h:200
uint16_t minor
Definition Api.h:201
uint16_t patch
Definition Api.h:202