ares_process_fd
ares_cancel()
ares_destroy()
ares_destroy_options()
ares_expand_name()
ares_expand_string()
ares_fds()
ares_free_hostent()
ares_free_string()
ares_gethostbyaddr()
ares_gethostbyname()
ares_getnameinfo()
ares_getsock()
ares_inet_ntop()
ares_inet_pton()
ares_init()
ares_init_options()
ares_library_cleanup()
ares_library_init()
ares_mkquery()
ares_parse_a_reply()
ares_parse_aaaa_reply()
ares_parse_ns_reply()
ares_parse_ptr_reply()
ares_parse_soa_reply()
ares_parse_srv_reply()
ares_parse_txt_reply()
ares_process()
ares_query()
ares_save_options()
ares_search()
ares_send()
ares_strerror()
ares_timeout()
ares_version()

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 with a timeout no greater than the timeout given by ares_timeout(3) ).

The ares_process 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 of course provided to allow users of c-ares to void select() in their applications and within c-ares.

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.

This HTML page was made with roffit.