org.apache.tomcat.jni

## Class Poll

- java.lang.Object
- - org.apache.tomcat.jni.Poll

    public class Poll
    extends Object

Poll

Author:
  Mladen Turk

### Field Summary

Fields
`static int` `APR_NO_DESC` Used in apr_pollfd_t to determine what the apr_descriptor is apr_datatype_e enum
`static int` `APR_POLL_FILE` descriptor refers to a socket
`static int` `APR_POLL_LASTDESC` descriptor refers to a file
`static int` `APR_POLL_SOCKET` nothing here
`static int` `APR_POLLERR` Pending error
`static int` `APR_POLLHUP` Hangup occurred
`static int` `APR_POLLIN` Can read without blocking
`static int` `APR_POLLNVAL` Descriptor invalid
`static int` `APR_POLLOUT` Can write without blocking
`static int` `APR_POLLPRI` Priority data available
`static int` `APR_POLLSET_THREADSAFE` Adding or Removing a Descriptor is thread safe

### Constructor Summary

Constructors
Constructor and Description
`Poll()`

### Method Summary

Methods
`static int` `add(long pollset, long sock, int reqevents)` Add a socket to a pollset with the default timeout.
`static int` `addWithTimeout(long pollset, long sock, int reqevents, long timeout)` Add a socket to a pollset with a specific timeout.
`static long` `create(int size, long p, int flags, long ttl)` Setup a pollset object.
`static int` `destroy(long pollset)` Destroy a pollset object
`static long` `getTtl(long pollset)` Get the socket time to live.
`static int` `maintain(long pollset, long[] descriptors, boolean remove)` Maintain on the descriptor(s) in a pollset
`static int` `poll(long pollset, long timeout, long[] descriptors, boolean remove)` Block for activity on the descriptor(s) in a pollset
`static int` `pollset(long pollset, long[] descriptors)` Return all descriptor(s) in a pollset
`static int` `remove(long pollset, long sock)` Remove a descriptor from a pollset
`static void` `setTtl(long pollset, long ttl)` Set the socket time to live.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### APR_POLLIN

    public static final int APR_POLLIN

Can read without blocking

See Also:
  Constant Field Values

#### APR_POLLPRI

    public static final int APR_POLLPRI

Priority data available

See Also:
  Constant Field Values

#### APR_POLLOUT

    public static final int APR_POLLOUT

Can write without blocking

See Also:
  Constant Field Values

#### APR_POLLERR

    public static final int APR_POLLERR

Pending error

See Also:
  Constant Field Values

#### APR_POLLHUP

    public static final int APR_POLLHUP

Hangup occurred

See Also:
  Constant Field Values

#### APR_POLLNVAL

    public static final int APR_POLLNVAL

Descriptor invalid

See Also:
  Constant Field Values

#### APR_POLLSET_THREADSAFE

    public static final int APR_POLLSET_THREADSAFE

Adding or Removing a Descriptor is thread safe

See Also:
  Constant Field Values

#### APR_NO_DESC

    public static final int APR_NO_DESC

Used in apr_pollfd_t to determine what the apr_descriptor is apr_datatype_e enum

See Also:
  Constant Field Values

#### APR_POLL_SOCKET

    public static final int APR_POLL_SOCKET

nothing here

See Also:
  Constant Field Values

#### APR_POLL_FILE

    public static final int APR_POLL_FILE

descriptor refers to a socket

See Also:
  Constant Field Values

#### APR_POLL_LASTDESC

    public static final int APR_POLL_LASTDESC

descriptor refers to a file

See Also:
  Constant Field Values

### Constructor Detail

#### Poll

    public Poll()

### Method Detail

#### create

    public static long create(int size,
              long p,
              int flags,
              long ttl)
                       throws Error

Setup a pollset object. 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.

Parameters:
  `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.
  `ttl` - Maximum time to live for a particular socket.
Returns:
  The pointer in which to return the newly created object
Throws:
  `Error`

#### destroy

    public static int destroy(long pollset)

Destroy a pollset object

Parameters:
  `pollset` - The pollset to destroy

#### add

    public static int add(long pollset,
          long sock,
          int reqevents)

Add a socket to a pollset with the default timeout.

Parameters:
  `pollset` - The pollset to which to add the socket
  `sock` - The sockets to add
  `reqevents` - requested events

#### addWithTimeout

    public static int addWithTimeout(long pollset,
                     long sock,
                     int reqevents,
                     long timeout)

Add a socket to a pollset with a specific timeout.

Parameters:
  `pollset` - The pollset to which to add the socket
  `sock` - The sockets to add
  `reqevents` - requested events
  `timeout` - requested timeout in microseconds (-1 for infinite)

#### remove

    public static int remove(long pollset,
             long sock)

Remove a descriptor from a pollset

Parameters:
  `pollset` - The pollset from which to remove the descriptor
  `sock` - The socket to remove

#### poll

    public static int poll(long pollset,
           long timeout,
           long[] descriptors,
           boolean remove)

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

Parameters:
  `pollset` - The pollset to use
  `timeout` - Timeout in microseconds
  `descriptors` - Array of signaled descriptors (output parameter) The descriptor array must be two times the size of pollset. and are populated as follows:

       descriptors[2n + 0] -> returned events
       descriptors[2n + 1] -> socket

  `remove` - Remove signaled descriptors from pollset
Returns:
  Number of signaled descriptors (output parameter) or negative APR error code.

#### maintain

    public static int maintain(long pollset,
               long[] descriptors,
               boolean remove)

Maintain on the descriptor(s) in a pollset

Parameters:
  `pollset` - The pollset to use
  `descriptors` - Array of signaled descriptors (output parameter) The descriptor array must be the size of pollset. and are populated as follows:

       descriptors[n] -> socket

  `remove` - Remove signaled descriptors from pollset
Returns:
  Number of signaled descriptors (output parameter) or negative APR error code.

#### setTtl

    public static void setTtl(long pollset,
              long ttl)

Set the socket time to live.

Parameters:
  `pollset` - The pollset to use
  `ttl` - Timeout in microseconds

#### getTtl

    public static long getTtl(long pollset)

Get the socket time to live.

Parameters:
  `pollset` - The pollset to use
Returns:
  Timeout in microseconds

#### pollset

    public static int pollset(long pollset,
              long[] descriptors)

Return all descriptor(s) in a pollset

Parameters:
  `pollset` - The pollset to use
  `descriptors` - Array of descriptors (output parameter) The descriptor array must be two times the size of pollset. and are populated as follows:

       descriptors[2n + 0] -> returned events
       descriptors[2n + 1] -> socket

Returns:
  Number of descriptors (output parameter) in the Poll or negative APR error code.