Poll Routines
[Apache Portability Runtime library]


Data Structures

union  apr_descriptor
struct  apr_pollfd_t

Defines

#define APR_POLLIN   0x001
#define APR_POLLPRI   0x002
#define APR_POLLOUT   0x004
#define APR_POLLERR   0x010
#define APR_POLLHUP   0x020
#define APR_POLLNVAL   0x040
#define APR_POLLSET_THREADSAFE   0x001

Typedefs

typedef apr_pollfd_t apr_pollfd_t
typedef apr_pollset_t apr_pollset_t

Enumerations

enum  apr_datatype_e { APR_NO_DESC, APR_POLL_SOCKET, APR_POLL_FILE, APR_POLL_LASTDESC }

Functions

apr_status_t apr_pollset_create (apr_pollset_t **pollset, apr_uint32_t size, apr_pool_t *p, apr_uint32_t flags)
apr_status_t apr_pollset_destroy (apr_pollset_t *pollset)
apr_status_t apr_pollset_add (apr_pollset_t *pollset, const apr_pollfd_t *descriptor)
apr_status_t apr_pollset_remove (apr_pollset_t *pollset, const apr_pollfd_t *descriptor)
apr_status_t apr_pollset_poll (apr_pollset_t *pollset, apr_interval_time_t timeout, apr_int32_t *num, const apr_pollfd_t **descriptors)
apr_status_t apr_poll (apr_pollfd_t *aprset, apr_int32_t numsock, apr_int32_t *nsds, apr_interval_time_t timeout)

Define Documentation

#define APR_POLLERR   0x010

Pending error

#define APR_POLLHUP   0x020

Hangup occurred

#define APR_POLLIN   0x001

Poll options Can read without blocking

#define APR_POLLNVAL   0x040

Descriptior invalid

#define APR_POLLOUT   0x004

Can write without blocking

#define APR_POLLPRI   0x002

Priority data available

#define APR_POLLSET_THREADSAFE   0x001

Pollset Flags Adding or Removing a Descriptor is thread safe


Typedef Documentation

typedef struct apr_pollfd_t apr_pollfd_t

See also:
apr_pollfd_t

typedef struct apr_pollset_t apr_pollset_t

Opaque structure used for pollset API


Enumeration Type Documentation

enum apr_datatype_e

Used in apr_pollfd_t to determine what the apr_descriptor is

Enumerator:
APR_NO_DESC  nothing here
APR_POLL_SOCKET  descriptor refers to a socket
APR_POLL_FILE  descriptor refers to a file
APR_POLL_LASTDESC  descriptor is the last one in the list


Function Documentation

apr_status_t apr_poll ( apr_pollfd_t aprset,
apr_int32_t  numsock,
apr_int32_t *  nsds,
apr_interval_time_t  timeout 
)

Poll the descriptors in the poll structure

Parameters:
aprset The poll structure we will be using.
numsock The number of descriptors we are polling
nsds The number of descriptors signalled.
timeout The amount of time in microseconds to wait. This is a maximum, not a minimum. If a descriptor is signalled, we will wake up before this time. A negative number means wait until a descriptor is signalled.
Remarks:
The number of descriptors signalled is returned in the third argument. This is a blocking call, and it will not return until either a descriptor has been signalled, or the timeout has expired.

The rtnevents field in the apr_pollfd_t array will only be filled- in if the return value is APR_SUCCESS.

apr_status_t apr_pollset_add ( apr_pollset_t pollset,
const apr_pollfd_t descriptor 
)

Add a socket or file descriptor to a pollset

Parameters:
pollset The pollset to which to add the descriptor
descriptor The descriptor to add
Remarks:
If you set client_data in the descriptor, that value will be returned in the client_data field whenever this descriptor is signalled in apr_pollset_poll().

If the pollset has been created with APR_POLLSET_THREADSAFE and thread T1 is blocked in a call to apr_pollset_poll() for this same pollset that is being modified via apr_pollset_add() in thread T2, the currently executing apr_pollset_poll() call in T1 will either: (1) automatically include the newly added descriptor in the set of descriptors it is watching or (2) return immediately with APR_EINTR. Option (1) is recommended, but option (2) is allowed for implementations where option (1) is impossible or impractical.

apr_status_t apr_pollset_create ( apr_pollset_t **  pollset,
apr_uint32_t  size,
apr_pool_t p,
apr_uint32_t  flags 
)

Setup a pollset object

Parameters:
pollset The pointer in which to return the newly created object
size The maximum number of descriptors that this pollset can hold
p The pool from which to allocate the pollset
flags Optional flags to modify the operation of the pollset.
Remarks:
If flags equals APR_POLLSET_THREADSAFE, then a pollset is created on which it is safe to make concurrent calls to apr_pollset_add(), apr_pollset_remove() and apr_pollset_poll() from separate threads. This feature is only supported on some platforms; the apr_pollset_create() call will fail with APR_ENOTIMPL on platforms where it is not supported.

apr_status_t apr_pollset_destroy ( apr_pollset_t pollset  ) 

Destroy a pollset object

Parameters:
pollset The pollset to destroy

apr_status_t apr_pollset_poll ( apr_pollset_t pollset,
apr_interval_time_t  timeout,
apr_int32_t *  num,
const apr_pollfd_t **  descriptors 
)

Block for activity on the descriptor(s) in a pollset

Parameters:
pollset The pollset to use
timeout Timeout in microseconds
num Number of signalled descriptors (output parameter)
descriptors Array of signalled descriptors (output parameter)

apr_status_t apr_pollset_remove ( apr_pollset_t pollset,
const apr_pollfd_t descriptor 
)

Remove a descriptor from a pollset

Parameters:
pollset The pollset from which to remove the descriptor
descriptor The descriptor to remove
Remarks:
If the pollset has been created with APR_POLLSET_THREADSAFE and thread T1 is blocked in a call to apr_pollset_poll() for this same pollset that is being modified via apr_pollset_remove() in thread T2, the currently executing apr_pollset_poll() call in T1 will either: (1) automatically exclude the newly added descriptor in the set of descriptors it is watching or (2) return immediately with APR_EINTR. Option (1) is recommended, but option (2) is allowed for implementations where option (1) is impossible or impractical.


Generated on Mon Nov 26 11:23:52 2007 for Apache Portable Runtime by  doxygen 1.5.2