aws-crt-cpp
C++ wrapper around the aws-c-* libraries. Provides Cross-Platform Transport Protocols and SSL/TLS implementations for C++.
Api.h
Go to the documentation of this file.
1#pragma once
6#include <aws/crt/Types.h>
10
11#include <aws/common/logging.h>
12
13namespace Aws
14{
15 namespace Crt
16 {
20 enum class LogLevel
21 {
22 None = AWS_LL_NONE,
23 Fatal = AWS_LL_FATAL,
24 Error = AWS_LL_ERROR,
25 Warn = AWS_LL_WARN,
26 Info = AWS_LL_INFO,
27 Debug = AWS_LL_DEBUG,
28 Trace = AWS_LL_TRACE,
29
30 Count
31 };
32
37 {
40 };
41
47 {
48 public:
49 ApiHandle(Allocator *allocator) noexcept;
50 ApiHandle() noexcept;
51 ~ApiHandle();
52 ApiHandle(const ApiHandle &) = delete;
53 ApiHandle(ApiHandle &&) = delete;
54 ApiHandle &operator=(const ApiHandle &) = delete;
56
63 void InitializeLogging(LogLevel level, const char *filename);
64
71 void InitializeLogging(LogLevel level, FILE *fp);
72
77 void SetShutdownBehavior(ApiHandleShutdownBehavior behavior);
78
83 void SetBYOCryptoNewMD5Callback(Crypto::CreateHashCallback &&callback);
84
89 void SetBYOCryptoNewSHA256Callback(Crypto::CreateHashCallback &&callback);
90
95 void SetBYOCryptoNewSHA256HMACCallback(Crypto::CreateHMACCallback &&callback);
96
102 void SetBYOCryptoClientTlsCallback(Io::NewClientTlsHandlerCallback &&callback);
103
113 void SetBYOCryptoTlsContextCallbacks(
114 Io::NewTlsContextImplCallback &&newCallback,
115 Io::DeleteTlsContextImplCallback &&deleteCallback,
116 Io::IsTlsAlpnSupportedCallback &&alpnCallback);
117
119 static const Io::NewTlsContextImplCallback &GetBYOCryptoNewTlsContextImplCallback();
121 static const Io::DeleteTlsContextImplCallback &GetBYOCryptoDeleteTlsContextImplCallback();
123 static const Io::IsTlsAlpnSupportedCallback &GetBYOCryptoIsTlsAlpnSupportedCallback();
124
138 static Io::ClientBootstrap *GetOrCreateStaticDefaultClientBootstrap();
139
155 static Io::EventLoopGroup *GetOrCreateStaticDefaultEventLoopGroup();
156
172 static Io::HostResolver *GetOrCreateStaticDefaultHostResolver();
173
174 private:
175 void InitializeLoggingCommon(struct aws_logger_standard_options &options);
176
177 aws_logger m_logger;
178
179 ApiHandleShutdownBehavior m_shutdownBehavior;
180
181 static Io::ClientBootstrap *s_static_bootstrap;
182 static std::mutex s_lock_client_bootstrap;
183 static void ReleaseStaticDefaultClientBootstrap();
184
185 static Io::EventLoopGroup *s_static_event_loop_group;
186 static std::mutex s_lock_event_loop_group;
187 static void ReleaseStaticDefaultEventLoopGroup();
188
189 static int s_host_resolver_default_max_hosts;
190 static Io::HostResolver *s_static_default_host_resolver;
191 static std::mutex s_lock_default_host_resolver;
192 static void ReleaseStaticDefaultHostResolver();
193 };
194
200 AWS_CRT_CPP_API const char *ErrorDebugString(int error) noexcept;
201
205 AWS_CRT_CPP_API int LastError() noexcept;
206
211 AWS_CRT_CPP_API int LastErrorOrUnknown() noexcept;
212 } // namespace Crt
213} // namespace Aws
#define AWS_CRT_CPP_API
Definition: Exports.h:37
Definition: Api.h:47
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:146
std::function< std::shared_ptr< ByoHash >(size_t digestSize, Allocator *)> CreateHashCallback
Definition: Hash.h:164
std::function< void *(TlsContextOptions &, TlsMode, Allocator *)> NewTlsContextImplCallback
Definition: TlsOptions.h:379
std::function< bool()> IsTlsAlpnSupportedCallback
Definition: TlsOptions.h:381
std::function< std::shared_ptr< ClientTlsChannelHandler >(struct aws_channel_slot *slot, const struct aws_tls_connection_options &options, Allocator *allocator)> NewClientTlsHandlerCallback
Definition: TlsOptions.h:442
std::function< void(void *)> DeleteTlsContextImplCallback
Definition: TlsOptions.h:380
AWS_CRT_CPP_API int LastErrorOrUnknown() noexcept
Definition: Api.cpp:393
ApiHandleShutdownBehavior
Definition: Api.h:37
AWS_CRT_CPP_API const char * ErrorDebugString(int error) noexcept
Definition: Api.cpp:389
LogLevel
Definition: Api.h:21
aws_allocator Allocator
Definition: StlAllocator.h:17
AWS_CRT_CPP_API int LastError() noexcept
Definition: Api.cpp:391
Definition: Api.h:14
Definition: cJSON.cpp:105