github.com/sandwich-go/boost@v1.3.29/httputil/dns/dns.go (about) 1 package dns 2 3 import ( 4 "context" 5 "errors" 6 "net" 7 "time" 8 ) 9 10 var ErrNotFound = errors.New("not found ip address list") 11 12 // Dialer 拨号器 13 type Dialer interface { 14 // DialContext 连接 15 DialContext(ctx context.Context, network, address string) (net.Conn, error) 16 } 17 18 // Resolver 解析器 19 type Resolver interface { 20 // LookupIPAddr 通过主机搜索 ip 地址列表 21 LookupIPAddr(ctx context.Context, host string) ([]net.IPAddr, error) 22 } 23 24 // DNS 域名解析器 25 type DNS interface { 26 Resolver 27 28 // GetDialContext 获取 Dial 函数 29 GetDialContext() func(ctx context.Context, network, address string) (net.Conn, error) 30 } 31 32 // EmptyIpCache 空的 ip 缓存信息 33 var EmptyIpCache = IpCache{} 34 35 // IpCache ip 缓存信息 36 type IpCache struct { 37 IPAddrs []net.IPAddr // ip 列表 38 CreatedAt time.Time // 创建时间,如果不设置,则表示永久有效 39 } 40 41 // CacheDNS 带缓存的域名解析器 42 type CacheDNS interface { 43 DNS 44 45 // Set 设置 host 对应的 ip 缓存信息 46 Set(host string, cache IpCache) 47 // Remove 删除 host 对应的 ip 缓存信息 48 Remove(host string) 49 // Get 获取 host 对应的 ip 缓存信息 50 Get(host string) (IpCache, bool) 51 }