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;
64
74 DefaultHostResolver(size_t maxHosts, size_t maxTTL, Allocator *allocator = g_allocator) noexcept;
75
81
85 operator bool() const noexcept { return m_initialized; }
86
90 int LastError() const noexcept { return aws_last_error(); }
91
98 bool ResolveHost(const String &host, const OnHostResolved &onResolved) noexcept override;
99
101 aws_host_resolver *GetUnderlyingHandle() noexcept override { return m_resolver; }
103 aws_host_resolution_config *GetConfig() noexcept override { return &m_config; }
104
105 private:
106 aws_host_resolver *m_resolver;
107 aws_host_resolution_config m_config;
108 Allocator *m_allocator;
109 bool m_initialized;
110
111 static void s_onHostResolved(
112 struct aws_host_resolver *resolver,
113 const struct aws_string *host_name,
114 int err_code,
115 const struct aws_array_list *host_addresses,
116 void *user_data);
117 };
118 } // namespace Io
119 } // namespace Crt
120} // 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:90
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:23
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:14