Manpages - ares_process.3

Table of Contents

NAME

ares_process - Process events for name resolution

SYNOPSIS

  #include <ares.h>

  void ares_process(ares_channel channel,
                    fd_set *read_fds,
                    fd_set *write_fds)

  void ares_process_fd(ares_channel channel,
                       ares_socket_t read_fd,
                       ares_socket_t write_fd)

DESCRIPTION

The ares_process(3) function handles input/output events and timeouts associated with queries pending on the name service channel identified by channel. The file descriptor sets pointed to by read_fds and write_fds should have file descriptors set in them according to whether the file descriptors specified by ares_fds(3) are ready for reading and writing. (The easiest way to determine this information is to invoke select(3) with a timeout no greater than the timeout given by ares_timeout(3)).

The ares_process(3) function will invoke callbacks for pending queries if they complete successfully or fail.

ares_process_fd(3) works the same way but acts and operates only on the specific file descriptors (sockets) you pass in to the function. Use ARES_SOCKET_BAD for “no action”. This function is provided to allow users of c-ares to void select(3) in their applications and within c-ares.

To only process possible timeout conditions without a socket event occurring, one may pass NULL as the values for both read_fds and write_fds for ares_process(3), or ARES_SOCKET_BAD for both read_fd and write_fd for ares_process_fd(3).

EXAMPLE

The following code fragment waits for all pending queries on a channel to complete:

  int nfds, count;
  fd_set readers, writers;
  struct timeval tv, *tvp;

  while (1) {
    FD_ZERO(&readers);
    FD_ZERO(&writers);
    nfds = ares_fds(channel, &readers, &writers);
    if (nfds == 0)
      break;
    tvp = ares_timeout(channel, NULL, &tv);
    count = select(nfds, &readers, &writers, NULL, tvp);
    ares_process(channel, &readers, &writers);
  }

SEE ALSO

*ares_fds*(3), *ares_timeout*(3)

AUTHOR

Greg Hudson, MIT Information Systems
Copyright 1998 by the Massachusetts Institute of Technology.

Author: dt

Created: 2022-02-20 Sun 14:40