77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.\" $Id$
 | 
						|
.\"
 | 
						|
.\" Copyright 1998 by the Massachusetts Institute of Technology.
 | 
						|
.\"
 | 
						|
.\" Permission to use, copy, modify, and distribute this
 | 
						|
.\" software and its documentation for any purpose and without
 | 
						|
.\" fee is hereby granted, provided that the above copyright
 | 
						|
.\" notice appear in all copies and that both that copyright
 | 
						|
.\" notice and this permission notice appear in supporting
 | 
						|
.\" documentation, and that the name of M.I.T. not be used in
 | 
						|
.\" advertising or publicity pertaining to distribution of the
 | 
						|
.\" software without specific, written prior permission.
 | 
						|
.\" M.I.T. makes no representations about the suitability of
 | 
						|
.\" this software for any purpose.  It is provided "as is"
 | 
						|
.\" without express or implied warranty.
 | 
						|
.\"
 | 
						|
.TH ARES_PROCESS 3 "25 July 1998"
 | 
						|
.SH NAME
 | 
						|
ares_process \- Process events for name resolution
 | 
						|
.SH SYNOPSIS
 | 
						|
.nf
 | 
						|
.B #include <ares.h>
 | 
						|
.PP
 | 
						|
.B void ares_process(ares_channel \fIchannel\fP, fd_set *\fIread_fds\fP,
 | 
						|
.B	fd_set *\fIwrite_fds\fP)
 | 
						|
.fi
 | 
						|
.SH DESCRIPTION
 | 
						|
The
 | 
						|
.B ares_process
 | 
						|
function handles input/output events and timeouts associated with
 | 
						|
queries pending on the name service channel identified by
 | 
						|
.IR channel .
 | 
						|
The file descriptor sets pointed to by
 | 
						|
.I read_fds
 | 
						|
and
 | 
						|
.I write_fds
 | 
						|
should have file descriptors set in them according to whether the file
 | 
						|
descriptors specified by \fIares_fds(3)\fP are ready for reading and writing.
 | 
						|
(The easiest way to determine this information is to invoke
 | 
						|
.B select
 | 
						|
with a timeout no greater than the timeout given by \fIares_timeout(3)\fP ).
 | 
						|
.PP
 | 
						|
The
 | 
						|
.B ares_process
 | 
						|
function will invoke callbacks for pending queries if they complete
 | 
						|
successfully or fail.
 | 
						|
.SS EXAMPLE
 | 
						|
The following code fragment waits for all pending queries on a channel
 | 
						|
to complete:
 | 
						|
.PP
 | 
						|
.RS
 | 
						|
.nf
 | 
						|
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);
 | 
						|
  }
 | 
						|
.fi
 | 
						|
.RE
 | 
						|
.SH SEE ALSO
 | 
						|
.BR ares_fds (3),
 | 
						|
.BR ares_timeout (3)
 | 
						|
.SH AUTHOR
 | 
						|
Greg Hudson, MIT Information Systems
 | 
						|
.br
 | 
						|
Copyright 1998 by the Massachusetts Institute of Technology.
 |