Struct c_ares_resolver::FutureResolver
source · pub struct FutureResolver { /* private fields */ }
Expand description
An asynchronous DNS resolver, which returns results as futures::Future
s.
Note that dropping the FutureResolver
does not cause outstanding queries to fail - contrast
the Resolver
- because the returned futures hold a reference to the underlying resolver.
Implementations§
source§impl FutureResolver
impl FutureResolver
sourcepub fn with_options(options: Options) -> Result<Self, Error>
pub fn with_options(options: Options) -> Result<Self, Error>
Create a new FutureResolver
, with the given Options
.
sourcepub fn set_servers(&self, servers: &[&str]) -> Result<&Self>
pub fn set_servers(&self, servers: &[&str]) -> Result<&Self>
Set the list of servers to contact, instead of the servers specified in resolv.conf or the local named.
String format is host[:port]
. IPv6 addresses with ports require square brackets eg
[2001:4860:4860::8888]:53
.
sourcepub fn set_local_ipv4(&self, ipv4: Ipv4Addr) -> &Self
pub fn set_local_ipv4(&self, ipv4: Ipv4Addr) -> &Self
Set the local IPv4 address from which to make queries.
sourcepub fn set_local_ipv6(&self, ipv6: &Ipv6Addr) -> &Self
pub fn set_local_ipv6(&self, ipv6: &Ipv6Addr) -> &Self
Set the local IPv6 address from which to make queries.
sourcepub fn set_local_device(&self, device: &str) -> &Self
pub fn set_local_device(&self, device: &str) -> &Self
Set the local device from which to make queries.
sourcepub fn set_sortlist(&self, sortlist: &[&str]) -> Result<&Self>
pub fn set_sortlist(&self, sortlist: &[&str]) -> Result<&Self>
Initializes an address sortlist configuration, so that addresses returned by
get_host_by_name()
are sorted according to the sortlist.
Each element of the sortlist holds an IP-address/netmask pair. The netmask is optional but follows the address after a slash if present. For example: “130.155.160.0/255.255.240.0”, or “130.155.0.0”.
sourcepub fn query_a(&self, name: &str) -> CAresFuture<AResults> ⓘ
pub fn query_a(&self, name: &str) -> CAresFuture<AResults> ⓘ
Look up the A records associated with name
.
sourcepub fn search_a(&self, name: &str) -> CAresFuture<AResults> ⓘ
pub fn search_a(&self, name: &str) -> CAresFuture<AResults> ⓘ
Search for the A records associated with name
.
sourcepub fn query_aaaa(&self, name: &str) -> CAresFuture<AAAAResults> ⓘ
pub fn query_aaaa(&self, name: &str) -> CAresFuture<AAAAResults> ⓘ
Look up the AAAA records associated with name
.
sourcepub fn search_aaaa(&self, name: &str) -> CAresFuture<AAAAResults> ⓘ
pub fn search_aaaa(&self, name: &str) -> CAresFuture<AAAAResults> ⓘ
Search for the AAAA records associated with name
.
sourcepub fn query_caa(&self, name: &str) -> CAresFuture<CAAResults> ⓘ
pub fn query_caa(&self, name: &str) -> CAresFuture<CAAResults> ⓘ
Look up the CAA records associated with name
.
sourcepub fn search_caa(&self, name: &str) -> CAresFuture<CAAResults> ⓘ
pub fn search_caa(&self, name: &str) -> CAresFuture<CAAResults> ⓘ
Search for the CAA records associated with name
.
sourcepub fn query_cname(&self, name: &str) -> CAresFuture<CNameResults> ⓘ
pub fn query_cname(&self, name: &str) -> CAresFuture<CNameResults> ⓘ
Look up the CNAME records associated with name
.
sourcepub fn search_cname(&self, name: &str) -> CAresFuture<CNameResults> ⓘ
pub fn search_cname(&self, name: &str) -> CAresFuture<CNameResults> ⓘ
Search for the CNAME records associated with name
.
sourcepub fn query_mx(&self, name: &str) -> CAresFuture<MXResults> ⓘ
pub fn query_mx(&self, name: &str) -> CAresFuture<MXResults> ⓘ
Look up the MX records associated with name
.
sourcepub fn search_mx(&self, name: &str) -> CAresFuture<MXResults> ⓘ
pub fn search_mx(&self, name: &str) -> CAresFuture<MXResults> ⓘ
Search for the MX records associated with name
.
sourcepub fn query_naptr(&self, name: &str) -> CAresFuture<NAPTRResults> ⓘ
pub fn query_naptr(&self, name: &str) -> CAresFuture<NAPTRResults> ⓘ
Look up the NAPTR records associated with name
.
sourcepub fn search_naptr(&self, name: &str) -> CAresFuture<NAPTRResults> ⓘ
pub fn search_naptr(&self, name: &str) -> CAresFuture<NAPTRResults> ⓘ
Search for the NAPTR records associated with name
.
sourcepub fn query_ns(&self, name: &str) -> CAresFuture<NSResults> ⓘ
pub fn query_ns(&self, name: &str) -> CAresFuture<NSResults> ⓘ
Look up the NS records associated with name
.
sourcepub fn search_ns(&self, name: &str) -> CAresFuture<NSResults> ⓘ
pub fn search_ns(&self, name: &str) -> CAresFuture<NSResults> ⓘ
Search for the NS records associated with name
.
sourcepub fn query_ptr(&self, name: &str) -> CAresFuture<PTRResults> ⓘ
pub fn query_ptr(&self, name: &str) -> CAresFuture<PTRResults> ⓘ
Look up the PTR records associated with name
.
sourcepub fn search_ptr(&self, name: &str) -> CAresFuture<PTRResults> ⓘ
pub fn search_ptr(&self, name: &str) -> CAresFuture<PTRResults> ⓘ
Search for the PTR records associated with name
.
sourcepub fn query_soa(&self, name: &str) -> CAresFuture<SOAResult> ⓘ
pub fn query_soa(&self, name: &str) -> CAresFuture<SOAResult> ⓘ
Look up the SOA records associated with name
.
sourcepub fn search_soa(&self, name: &str) -> CAresFuture<SOAResult> ⓘ
pub fn search_soa(&self, name: &str) -> CAresFuture<SOAResult> ⓘ
Search for the SOA records associated with name
.
sourcepub fn query_srv(&self, name: &str) -> CAresFuture<SRVResults> ⓘ
pub fn query_srv(&self, name: &str) -> CAresFuture<SRVResults> ⓘ
Look up the SRV records associated with name
.
sourcepub fn search_srv(&self, name: &str) -> CAresFuture<SRVResults> ⓘ
pub fn search_srv(&self, name: &str) -> CAresFuture<SRVResults> ⓘ
Search for the SRV records associated with name
.
sourcepub fn query_txt(&self, name: &str) -> CAresFuture<TXTResults> ⓘ
pub fn query_txt(&self, name: &str) -> CAresFuture<TXTResults> ⓘ
Look up the TXT records associated with name
.
sourcepub fn search_txt(&self, name: &str) -> CAresFuture<TXTResults> ⓘ
pub fn search_txt(&self, name: &str) -> CAresFuture<TXTResults> ⓘ
Search for the TXT records associated with name
.
sourcepub fn query_uri(&self, name: &str) -> CAresFuture<URIResults> ⓘ
pub fn query_uri(&self, name: &str) -> CAresFuture<URIResults> ⓘ
Look up the URI records associated with name
.
sourcepub fn search_uri(&self, name: &str) -> CAresFuture<URIResults> ⓘ
pub fn search_uri(&self, name: &str) -> CAresFuture<URIResults> ⓘ
Search for the URI records associated with name
.
sourcepub fn get_host_by_address(&self, address: &IpAddr) -> CAresFuture<HostResults> ⓘ
pub fn get_host_by_address(&self, address: &IpAddr) -> CAresFuture<HostResults> ⓘ
Perform a host query by address.
This method is one of the very few places where this library performs strictly more
allocation than the underlying c-ares
code. If this is a problem for you, you should
prefer to use the analogous method on the Resolver
.
sourcepub fn get_host_by_name(
&self,
name: &str,
family: AddressFamily
) -> CAresFuture<HostResults> ⓘ
pub fn get_host_by_name( &self, name: &str, family: AddressFamily ) -> CAresFuture<HostResults> ⓘ
Perform a host query by name.
This method is one of the very few places where this library performs strictly more
allocation than the underlying c-ares
code. If this is a problem for you, you should
prefer to use the analogous method on the Resolver
.
sourcepub fn get_name_info<F>(
&self,
address: &SocketAddr,
flags: NIFlags
) -> CAresFuture<NameInfoResult> ⓘ
pub fn get_name_info<F>( &self, address: &SocketAddr, flags: NIFlags ) -> CAresFuture<NameInfoResult> ⓘ
Address-to-nodename translation in protocol-independent manner.
This method is one of the very few places where this library performs strictly more
allocation than the underlying c-ares
code. If this is a problem for you, you should
prefer to use the analogous method on the Resolver
.
sourcepub fn query(
&self,
name: &str,
dns_class: u16,
query_type: u16
) -> CAresFuture<Vec<u8>> ⓘ
pub fn query( &self, name: &str, dns_class: u16, query_type: u16 ) -> CAresFuture<Vec<u8>> ⓘ
Initiate a single-question DNS query for name
. The class and type of the query are per
the provided parameters, taking values as defined in arpa/nameser.h
.
This method is one of the very few places where this library performs strictly more
allocation than the underlying c-ares
code. If this is a problem for you, you should
prefer to use the analogous method on the Resolver
.
This method is provided so that users can query DNS types for which c-ares
does not
provide a parser; or in case a third-party parser is preferred. Usually, if a suitable
query_xxx()
is available, that should be used.
sourcepub fn search(
&self,
name: &str,
dns_class: u16,
query_type: u16
) -> CAresFuture<Vec<u8>> ⓘ
pub fn search( &self, name: &str, dns_class: u16, query_type: u16 ) -> CAresFuture<Vec<u8>> ⓘ
Initiate a series of single-question DNS queries for name
. The class and type of the
query are per the provided parameters, taking values as defined in arpa/nameser.h
.
This method is one of the very few places where this library performs strictly more
allocation than the underlying c-ares
code. If this is a problem for you, you should
prefer to use the analogous method on the Resolver
.
This method is provided so that users can search DNS types for which c-ares
does not
provide a parser; or in case a third-party parser is preferred. Usually, if a suitable
search_xxx()
is available, that should be used.