org.apache.tomcat.util.net
public class NioSelectorPool extends Object
Since: 6.0
Version: 1.0
Field Summary | |
---|---|
protected AtomicInteger | active |
protected NioBlockingSelector | blockingSelector |
protected boolean | enabled |
protected static Log | log |
protected int | maxSelectors |
protected int | maxSpareSelectors |
protected ConcurrentLinkedQueue<Selector> | selectors |
protected long | sharedSelectorTimeout |
protected AtomicInteger | spare |
protected static boolean | SHARED |
protected Selector | SHARED_SELECTOR |
protected static int | threadCount |
Constructor Summary | |
---|---|
NioSelectorPool() |
Method Summary | |
---|---|
void | close() |
Selector | get() |
int | getMaxSelectors() |
int | getMaxSpareSelectors() |
ConcurrentLinkedQueue | getSelectors() |
protected Selector | getSharedSelector() |
long | getSharedSelectorTimeout() |
AtomicInteger | getSpare() |
boolean | isEnabled() |
void | open() |
void | put(Selector s) |
int | read(ByteBuffer buf, NioChannel socket, Selector selector, long readTimeout)
Performs a blocking read using the bytebuffer for data to be read and a selector to block.
|
int | read(ByteBuffer buf, NioChannel socket, Selector selector, long readTimeout, boolean block)
Performs a read using the bytebuffer for data to be read and a selector to register for events should
you have the block=true.
|
void | setEnabled(boolean enabled) |
void | setMaxSelectors(int maxSelectors) |
void | setMaxSpareSelectors(int maxSpareSelectors) |
void | setSharedSelectorTimeout(long sharedSelectorTimeout) |
int | write(ByteBuffer buf, NioChannel socket, Selector selector, long writeTimeout)
Performs a blocking write using the bytebuffer for data to be written and a selector to block.
|
int | write(ByteBuffer buf, NioChannel socket, Selector selector, long writeTimeout, boolean block, MutableInteger lastWrite) |
selector
parameter is null, then it will perform a busy read that could
take up a lot of CPU cycles.Parameters: buf ByteBuffer - the buffer containing the data, we will read as until we have read at least one byte or we timed out socket SocketChannel - the socket to write data to selector Selector - the selector to use for blocking, if null then a busy read will be initiated readTimeout long - the timeout for this read operation in milliseconds, -1 means no timeout
Returns: int - returns the number of bytes read
Throws: EOFException if read returns -1 SocketTimeoutException if the read times out IOException if an IO Exception occurs in the underlying socket logic
selector
parameter is null, then it will perform a busy read that could
take up a lot of CPU cycles.Parameters: buf ByteBuffer - the buffer containing the data, we will read as until we have read at least one byte or we timed out socket SocketChannel - the socket to write data to selector Selector - the selector to use for blocking, if null then a busy read will be initiated readTimeout long - the timeout for this read operation in milliseconds, -1 means no timeout block - true if you want to block until data becomes available or timeout time has been reached
Returns: int - returns the number of bytes read
Throws: EOFException if read returns -1 SocketTimeoutException if the read times out IOException if an IO Exception occurs in the underlying socket logic
selector
parameter is null, then it will perform a busy write that could
take up a lot of CPU cycles.Parameters: buf ByteBuffer - the buffer containing the data, we will write as long as (buf.hasRemaining()==true)
socket SocketChannel - the socket to write data to selector Selector - the selector to use for blocking, if null then a busy write will be initiated writeTimeout long - the timeout for this write operation in milliseconds, -1 means no timeout
Returns: int - returns the number of bytes written
Throws: EOFException if write returns -1 SocketTimeoutException if the write times out IOException if an IO Exception occurs in the underlying socket logic