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
32 {
33 public:
34 virtual ~HostResolver();
35 virtual bool ResolveHost(const String &host, const OnHostResolved &onResolved) noexcept = 0;
36
38 virtual aws_host_resolver *GetUnderlyingHandle() noexcept = 0;
40 virtual aws_host_resolution_config *GetConfig() noexcept = 0;
41 };
42
44 {
45 public:
53 EventLoopGroup &elGroup,
54 size_t maxHosts,
55 size_t maxTTL,
56 Allocator *allocator = g_allocator) noexcept;
62
66 operator bool() const noexcept { return m_initialized; }
70 int LastError() const noexcept { return aws_last_error(); }
71
78 bool ResolveHost(const String &host, const OnHostResolved &onResolved) noexcept override;
79
81 aws_host_resolver *GetUnderlyingHandle() noexcept override { return m_resolver; }
83 aws_host_resolution_config *GetConfig() noexcept override { return &m_config; }
84
85 private:
86 aws_host_resolver *m_resolver;
87 aws_host_resolution_config m_config;
88 Allocator *m_allocator;
89 bool m_initialized;
90
91 static void s_onHostResolved(
92 struct aws_host_resolver *resolver,
93 const struct aws_string *host_name,
94 int err_code,
95 const struct aws_array_list *host_addresses,
96 void *user_data);
97 };
98 } // namespace Io
99 } // namespace Crt
100} // namespace Aws
#define AWS_CRT_CPP_API
Definition: Exports.h:37
Definition: HostResolver.h:44
DefaultHostResolver & operator=(DefaultHostResolver &&)=delete
DefaultHostResolver & operator=(const DefaultHostResolver &)=delete
DefaultHostResolver(DefaultHostResolver &&)=delete
DefaultHostResolver(const DefaultHostResolver &)=delete
int LastError() const noexcept
Definition: HostResolver.h:70
Definition: EventLoopGroup.h:33
Definition: HostResolver.h:32
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