Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

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

ARES_PROCESS(3)            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 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);
       }


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+------------------+
       |ATTRIBUTE TYPE | ATTRIBUTE VALUE  |
       +---------------+------------------+
       |Availability   | library/libcares |
       +---------------+------------------+
       |Stability      | Volatile         |
       +---------------+------------------+

SEE ALSO
       ares_fds(3), ares_timeout(3)

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



NOTES
       Source  code  for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This     software     was    built    from    source    available    at
       https://github.com/oracle/solaris-userland.   The  original   community
       source    was   downloaded   from    https://c-ares.haxx.se/download/c-
       ares-1.17.2.tar.gz.

       Further information about this software can be found on the open source
       community website at https://c-ares.haxx.se/.



                                 25 July 1998                  ARES_PROCESS(3)