Command Section

ARES_PROCESS(3)        FreeBSD Library Functions Manual        ARES_PROCESS(3)

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 _fds&section=3">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
       _timeout&section=3">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.

                                 25 July 1998                  ARES_PROCESS(3)

Command Section

man2web Home...