Crate c_ares

source ·
Expand description

A safe wrapper for the c-ares library.

This crate is a fairly faithful wrapper of c-ares; which is to say that it preserves some of the complication of using the underlying library:

  • Direct usage of this crate requires you to pay attention to c-ares as it tells you which file descriptors it cares about, and to poll for activity on those file descriptors.

  • This likely requires you to have an event loop or similar with which to integrate.

If that sounds a bit too much like hard work, you should probably prefer the c-ares-resolver crate, which takes care of all that stuff for you and presents a much simpler API.

Still here? Usage of this crate is as follows:

  • Create a Channel.

  • Make queries on the Channel. Queries all take callbacks, which will be called when the query completes.

  • Have c-ares tell you what file descriptors to listen on for read and / or write events. You can do this either by providing a callback, which is called whenever the set of interesting file descriptors changes, or by querying the Channel directly either with get_sock() or with fds().

  • Do as c-ares asks. That is, listen for the events that it requests, on the file descriptors that it cares about.

  • When a file descriptor becomes readable or writable, call either process_fd() or process() on the Channel to tell c-ares what has happened.

  • If you have queries pending and don’t see events happening, you still need to call either process_fd() or process() at some point anyway - to give c-ares an opportunity to process any requests that have timed out.

Complete examples showing how to use the library can be found here.

Structs

The contents of a single AAAA record.
The result of a successful AAAA lookup.
Iterator of AAAAResults.
The contents of a single A record.
The result of a successful A lookup.
Iterator of AResults.
The result of a successful CNAME lookup.
A channel for name service lookups.
Flags that may be passed when initializing a Channel.
Information about the set of sockets that c-ares is interested in, as returned by get_sock().
Iterator for sockets of interest to c-ares.
Iterator of IpAddrs.
Iterator of &'a CStrs.
The result of a successful host lookup.
The contents of a single MX record.
The result of a successful MX lookup.
Iterator of MXResults.
The contents of a single NAPTR record.
The result of a successful NAPTR lookup.
Iterator of NAPTRResults.
Flags that may be provided on a call to get_name_info().
The result of a successful NS lookup.
The result of a successful name-info lookup.
Used to configure the behaviour of the name resolver.
The result of a successful PTR lookup.
The result of a successful SOA lookup.
The contents of a single SRV record.
The result of a successful SRV lookup.
Iterator of SRVResults.
The contents of a single TXT record.
The result of a successful TXT lookup.
Iterator of TXTResults.

Enums

Address families.
Error codes that the library might return.

Constants

An invalid socket / file descriptor. Use this to represent ‘no action’ when calling process_fd() on a channel.

Functions

Get the version number of the underlying c-ares library.

Type Definitions

The type used by this library for methods that might fail.
The platform-specific file descriptor / socket type. That is, either a RawFd or a RawSocket.