# Class NioEndpoint.Poller

java.lang.Object
org.apache.tomcat.util.net.NioEndpoint.Poller

All Implemented Interfaces:
  `Runnable`

Enclosing class:
  `NioEndpoint`

public class NioEndpoint.Poller extends Object implements Runnable
Poller class.

## Constructor Summary

Constructors
Constructor
Description
`Poller()`
Creates a new poller.

## Method Summary

Modifier and Type
Method
Description
`void`
`add(NioEndpoint.NioSocketWrapper socketWrapper, int interestOps)`
Add specified socket and associated pool to the poller.
`protected void`
`destroy()`
Destroy the poller.
`boolean`
`events()`
Processes events in the event queue of the Poller.
`int`
`getKeyCount()`
Returns the number of registered keys.
`Selector`
`getSelector()`
Returns the selector.
`protected void`
`processKey(SelectionKey sk, NioEndpoint.NioSocketWrapper socketWrapper)`
Processes a selection key event.
`SendfileState`
`processSendfile(SelectionKey sk, NioEndpoint.NioSocketWrapper socketWrapper, boolean calledByProcessor)`
Processes a sendfile operation.
`protected void`
`reg(SelectionKey sk, NioEndpoint.NioSocketWrapper socketWrapper, int intops)`
Registers interest operations for a socket.
`void`
`register(NioEndpoint.NioSocketWrapper socketWrapper)`
Registers a newly created socket with the poller.
`void`
`run()`
The background thread that adds sockets to the Poller, checks the poller for triggered events and hands the associated socket off to an appropriate processor as events occur.
`protected void`
`timeout(int keyCount, boolean hasEvents)`
Checks for socket timeouts.
`protected void`
`unreg(SelectionKey sk, NioEndpoint.NioSocketWrapper socketWrapper, int readyOps)`
Unregisters interest operations for a socket.

### Methods inherited from class Object

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

## Constructor Details

### Poller

public Poller() throws IOException
Creates a new poller.

Throws:
  `IOException` - If the selector cannot be opened

## Method Details

### getKeyCount

public int getKeyCount()
Returns the number of registered keys.

Returns:
  the key count

### getSelector

public Selector getSelector()
Returns the selector.

Returns:
  the selector

### destroy

protected void destroy()
Destroy the poller.

### add

public void add(NioEndpoint.NioSocketWrapper socketWrapper, int interestOps)
Add specified socket and associated pool to the poller. The socket will be added to a temporary array, and polled first after a maximum amount of time equal to pollTime (in most cases, latency will be much lower, however).

Parameters:
  `socketWrapper` - to add to the poller
  `interestOps` - Operations for which to register this socket with the Poller

### events

public boolean events()
Processes events in the event queue of the Poller.

Returns:
  `true` if some events were processed, `false` if queue was empty

### register

public void register(NioEndpoint.NioSocketWrapper socketWrapper)
Registers a newly created socket with the poller.

Parameters:
  `socketWrapper` - The socket wrapper

### run

public void run()
The background thread that adds sockets to the Poller, checks the poller for triggered events and hands the associated socket off to an appropriate processor as events occur.

Specified by:
  `run` in interface `Runnable`

### processKey

protected void processKey(SelectionKey sk, NioEndpoint.NioSocketWrapper socketWrapper)
Processes a selection key event.

Parameters:
  `sk` - The selection key
  `socketWrapper` - The socket wrapper

### processSendfile

public SendfileState processSendfile(SelectionKey sk, NioEndpoint.NioSocketWrapper socketWrapper, boolean calledByProcessor)
Processes a sendfile operation.

Parameters:
  `sk` - The selection key
  `socketWrapper` - The socket wrapper
  `calledByProcessor` - Whether called from a processor thread
Returns:
  the sendfile state

### unreg

protected void unreg(SelectionKey sk, NioEndpoint.NioSocketWrapper socketWrapper, int readyOps)
Unregisters interest operations for a socket.

Parameters:
  `sk` - The selection key
  `socketWrapper` - The socket wrapper
  `readyOps` - The ready operations to remove

### reg

protected void reg(SelectionKey sk, NioEndpoint.NioSocketWrapper socketWrapper, int intops)
Registers interest operations for a socket.

Parameters:
  `sk` - The selection key
  `socketWrapper` - The socket wrapper
  `intops` - The interest operations to set

### timeout

protected void timeout(int keyCount, boolean hasEvents)
Checks for socket timeouts.

Parameters:
  `keyCount` - Number of selected keys
  `hasEvents` - Whether there were events processed