aws-crt-cpp
C++ wrapper around the aws-c-* libraries. Provides Cross-Platform Transport Protocols and SSL/TLS implementations for C++.
HostResolver.h
Go to the documentation of this file.
1#pragma once
6#include <aws/crt/Types.h>
7
8#include <aws/io/host_resolver.h>
9
10#include <functional>
11
12namespace Aws
13{
14 namespace Crt
15 {
16 namespace Io
17 {
18 class EventLoopGroup;
19 class HostResolver;
20
21 using HostAddress = aws_host_address;
22
29 std::function<void(HostResolver &resolver, const Vector<HostAddress> &addresses, int errorCode)>;
30
35 {
36 public:
37 virtual ~HostResolver();
38 virtual bool ResolveHost(const String &host, const OnHostResolved &onResolved) noexcept = 0;
39
41 virtual aws_host_resolver *GetUnderlyingHandle() noexcept = 0;
43 virtual aws_host_resolution_config *GetConfig() noexcept = 0;
44 };
45
51 {
52 public:
60 EventLoopGroup &elGroup,
61 size_t maxHosts,
62 size_t maxTTL,
63 Allocator *allocator = g_allocator) noexcept;
69
73 operator bool() const noexcept { return m_initialized; }
74
78 int LastError() const noexcept { return aws_last_error(); }
79
86 bool ResolveHost(const String &host, const OnHostResolved &onResolved) noexcept override;
87
89 aws_host_resolver *GetUnderlyingHandle() noexcept override { return m_resolver; }
91 aws_host_resolution_config *GetConfig() noexcept override { return &m_config; }
92
93 private:
94 aws_host_resolver *m_resolver;
95 aws_host_resolution_config m_config;
96 Allocator *m_allocator;
97 bool m_initialized;
98
99 static void s_onHostResolved(
100 struct aws_host_resolver *resolver,
101 const struct aws_string *host_name,
102 int err_code,
103 const struct aws_array_list *host_addresses,
104 void *user_data);
105 };
106 } // namespace Io
107 } // namespace Crt
108} // namespace Aws
#define AWS_CRT_CPP_API
Definition: Exports.h:37
Definition: HostResolver.h:51
DefaultHostResolver & operator=(DefaultHostResolver &&)=delete
DefaultHostResolver & operator=(const DefaultHostResolver &)=delete
DefaultHostResolver(DefaultHostResolver &&)=delete
DefaultHostResolver(const DefaultHostResolver &)=delete
int LastError() const noexcept
Definition: HostResolver.h:78
Definition: EventLoopGroup.h:33
Definition: HostResolver.h:35
virtual bool ResolveHost(const String &host, const OnHostResolved &onResolved) noexcept=0
aws_host_address HostAddress
Definition: HostResolver.h:21
std::function< void(HostResolver &resolver, const Vector< HostAddress > &addresses, int errorCode)> OnHostResolved
Definition: HostResolver.h:29
aws_allocator Allocator
Definition: StlAllocator.h:17
AWS_CRT_CPP_API Allocator * g_allocator
Definition: Api.cpp:21
std::basic_string< char, std::char_traits< char >, StlAllocator< char > > String
Definition: Types.h:47
std::vector< T, StlAllocator< T > > Vector
Definition: Types.h:55
Definition: Api.h:17