AWS IoT Device SDK C++ v2  1.42.1
AWS IoT Device SDK C++ v2
Api.h
Go to the documentation of this file.
1 #pragma once
2 
6 #include <aws/crt/Types.h>
7 #include <aws/crt/crypto/HMAC.h>
8 #include <aws/crt/crypto/Hash.h>
11 
12 #include <aws/common/logging.h>
13 
14 namespace 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  {
39  Blocking,
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;
60  ApiHandle &operator=(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)
205 
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
Aws::Crt::ApiHandle::ApiHandle
ApiHandle(const ApiHandle &)=delete
Aws::Crt::ApiHandle
Definition: Api.h:48
HMAC.h
Aws::Crt::Crypto::CreateHMACCallback
std::function< std::shared_ptr< ByoHMAC >(size_t digestSize, const ByteCursor &secret, Allocator *)> CreateHMACCallback
Definition: HMAC.h:164
Aws::Crt::LastError
AWS_CRT_CPP_API int LastError() noexcept
Definition: Api.cpp:464
Aws::Crt::ApiHandle::Version::patch
uint16_t patch
Definition: Api.h:202
Aws::Crt::ApiHandle::operator=
ApiHandle & operator=(ApiHandle &&)=delete
Aws::Crt::ApiHandleShutdownBehavior
ApiHandleShutdownBehavior
Definition: Api.h:38
Mqtt5Client.h
Aws::Crt::Io::IsTlsAlpnSupportedCallback
std::function< bool()> IsTlsAlpnSupportedCallback
Definition: TlsOptions.h:388
Aws::Crt::Io::DeleteTlsContextImplCallback
std::function< void(void *)> DeleteTlsContextImplCallback
Definition: TlsOptions.h:387
Aws::Crt::LogLevel
LogLevel
Definition: Api.h:22
Aws::Crt::ApiHandle::Version::major
uint16_t major
Definition: Api.h:200
Aws::Crt::Crypto::CreateHashCallback
std::function< std::shared_ptr< ByoHash >(size_t digestSize, Allocator *)> CreateHashCallback
Definition: Hash.h:235
Aws::Crt::ApiHandle::Version
Definition: Api.h:199
Aws::Crt::Io::NewClientTlsHandlerCallback
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
Types.h
Aws::Crt::LastErrorOrUnknown
AWS_CRT_CPP_API int LastErrorOrUnknown() noexcept
Definition: Api.cpp:469
Aws::Crt::Io::HostResolver
Definition: HostResolver.h:35
Aws::Crt::LogLevel::None
@ None
Aws::Crt::ApiHandle::operator=
ApiHandle & operator=(const ApiHandle &)=delete
Aws::Crt::ApiHandle::ApiHandle
ApiHandle(ApiHandle &&)=delete
AWS_CRT_CPP_API
#define AWS_CRT_CPP_API
Definition: Exports.h:36
Aws
Definition: Allocator.h:11
Aws::Crt::ApiHandle::Version::minor
uint16_t minor
Definition: Api.h:201
Aws::Crt::Allocator
aws_allocator Allocator
Definition: Allocator.h:14
Aws::Crt::Io::NewTlsContextImplCallback
std::function< void *(TlsContextOptions &, TlsMode, Allocator *)> NewTlsContextImplCallback
Definition: TlsOptions.h:386
Aws::Crt::ErrorDebugString
AWS_CRT_CPP_API const char * ErrorDebugString(int error) noexcept
Definition: Api.cpp:459
Aws::Crt::Io::ClientBootstrap
Definition: Bootstrap.h:35
MqttClient.h
Hash.h
Aws::Crt::ApiHandleShutdownBehavior::Blocking
@ Blocking
Aws::Crt::Io::EventLoopGroup
Definition: EventLoopGroup.h:33