noble (3) ares_process.3.gz

Provided by: libc-ares-dev_1.27.0-1.0ubuntu1_amd64 bug

NAME

       ares_process - Process events for name resolution

SYNOPSIS

       #include <ares.h>

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

       void ares_process_fd(ares_channel_t *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 avoid 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)