Emx::EuvDns类 参考

用于异步解析DNS

#include "EuvDns.hpp"

Public 类型

enum class  TypeE : uint8_t { Ipv4 , Ipv6 , UnSpec }
 DNS解析类型 更多...
 
using OnResolved = std::function< void(Emx::ErrCodeE e, addrinfo *addr, void *arg)>
 获取到解析结果后触发的回调函数 更多...
 

Public 成员函数

 EuvDns ()
 
ErrCodeE Create (EuvLoop *loop)
 创建DNS解析 更多...
 
void Destroy ()
 销毁DNS解析,如果任务未执行则立刻返回,如果任务在执行中则以阻塞方式等待任务执行完毕 更多...
 
ErrCodeE Run (const char *server, OnResolved cb, void *arg=nullptr, TypeE type=TypeE::UnSpec)
 开始运行地址解析 更多...
 

成员类型定义说明

◆ OnResolved

using Emx::EuvDns::OnResolved = std::function<void(Emx::ErrCodeE e, addrinfo *addr, void *arg)>
参数
e[in] 解析结果是否正确
addr[in] 解析到的地址
arg[in] 调用run函数的时候传入的用户自定义私有数据指针

成员枚举类型说明

◆ TypeE

enum Emx::EuvDns::TypeE : uint8_t
strong
枚举值
Ipv4 

只解析IPV4类型地址

Ipv6 

只解析IPV6类型地址

UnSpec 

IPV4与IPV6类型地址均可

构造及析构函数说明

◆ EuvDns()

Emx::EuvDns::EuvDns ( )
inline

成员函数说明

◆ Create()

ErrCodeE Emx::EuvDns::Create ( EuvLoop loop)
参数
loop[in] 需要绑定的loop
返回
ErrCodeE

◆ Destroy()

void Emx::EuvDns::Destroy ( )

!

注解
此操作可能会阻塞所在loop,不建议在调用频繁的场景中使用
此操作执行时,若Run还没有收到OnResolved回调(包括未执行和正在执行), 则此操作会取消任务或等待任务结束并主动调用OnResolved回调(参数ErrCodeE == DESTROYED)

◆ Run()

ErrCodeE Emx::EuvDns::Run ( const char *  server,
OnResolved  cb,
void *  arg = nullptr,
TypeE  type = TypeE::UnSpec 
)
参数
server[in] 需要解析的url
cb[in] 注册一个解析完成后的回调函数
arg[in] 用户自定义私有数据指针
type[in] 解析类型
返回
ErrCodeE