aws-crt-cpp
C++ wrapper around the aws-c-* libraries. Provides Cross-Platform Transport Protocols and SSL/TLS implementations for C++.
Bootstrap.h
Go to the documentation of this file.
1 #pragma once
2 
7 #include <aws/crt/Exports.h>
8 #include <aws/crt/Types.h>
11 
12 #include <aws/io/channel_bootstrap.h>
13 #include <aws/io/host_resolver.h>
14 
15 #include <future>
16 
17 namespace Aws
18 {
19  namespace Crt
20  {
21  namespace Io
22  {
23  using OnClientBootstrapShutdownComplete = std::function<void()>;
24 
35  {
36  public:
43  EventLoopGroup &elGroup,
44  HostResolver &resolver,
45  Allocator *allocator = ApiAllocator()) noexcept;
46 
52  ClientBootstrap(Allocator *allocator = ApiAllocator()) noexcept;
53 
54  ~ClientBootstrap();
55  ClientBootstrap(const ClientBootstrap &) = delete;
56  ClientBootstrap &operator=(const ClientBootstrap &) = delete;
57  ClientBootstrap(ClientBootstrap &&) = delete;
58  ClientBootstrap &operator=(ClientBootstrap &&) = delete;
59 
63  operator bool() const noexcept;
64 
68  int LastError() const noexcept;
69 
76  void SetShutdownCompleteCallback(OnClientBootstrapShutdownComplete callback);
77 
90  void EnableBlockingShutdown() noexcept;
91 
93  aws_client_bootstrap *GetUnderlyingHandle() const noexcept;
94 
95  private:
96  aws_client_bootstrap *m_bootstrap;
97  int m_lastError;
98  std::unique_ptr<class ClientBootstrapCallbackData> m_callbackData;
99  std::future<void> m_shutdownFuture;
100  bool m_enableBlockingShutdown;
101  };
102  } // namespace Io
103  } // namespace Crt
104 } // namespace Aws
Definition: HostResolver.h:34
Definition: EventLoopGroup.h:32
#define AWS_CRT_CPP_API
Definition: Exports.h:36
aws_allocator Allocator
Definition: Allocator.h:14
std::function< void()> OnClientBootstrapShutdownComplete
Definition: Bootstrap.h:23
AWS_CRT_CPP_API Allocator * ApiAllocator() noexcept
Definition: Allocator.cpp:24
Definition: Bootstrap.h:34
AWS_CRT_CPP_API int LastError() noexcept
Definition: Api.cpp:425
Definition: Allocator.h:10