org.apache.tomcat.util.net
Class NioSelectorPool
java.lang.Object
org.apache.tomcat.util.net.NioSelectorPool
public class NioSelectorPool
- extends java.lang.Object
Thread safe non blocking selector pool
- Since:
- 6.0
- Version:
- 1.0
- Author:
- Filip Hanik
Field Summary |
protected java.util.concurrent.atomic.AtomicInteger |
active
|
protected boolean |
enabled
|
protected static Log |
log
|
protected int |
maxSelectors
|
protected int |
maxSpareSelectors
|
protected java.util.concurrent.ConcurrentLinkedQueue<java.nio.channels.Selector> |
selectors
|
protected static boolean |
SHARED
|
protected static java.nio.channels.Selector |
SHARED_SELECTOR
|
protected java.util.concurrent.atomic.AtomicInteger |
spare
|
Method Summary |
void |
close()
|
java.nio.channels.Selector |
get()
|
int |
getMaxSelectors()
|
int |
getMaxSpareSelectors()
|
protected static java.nio.channels.Selector |
getSharedSelector()
|
boolean |
isEnabled()
|
void |
open()
|
void |
put(java.nio.channels.Selector s)
|
int |
read(java.nio.ByteBuffer buf,
NioChannel socket,
java.nio.channels.Selector selector,
long readTimeout)
Performs a blocking read using the bytebuffer for data to be read and a selector to block. |
int |
read(java.nio.ByteBuffer buf,
NioChannel socket,
java.nio.channels.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)
|
int |
write(java.nio.ByteBuffer buf,
NioChannel socket,
java.nio.channels.Selector selector,
long writeTimeout)
Performs a blocking write using the bytebuffer for data to be written and a selector to block. |
int |
write(java.nio.ByteBuffer buf,
NioChannel socket,
java.nio.channels.Selector selector,
long writeTimeout,
boolean block)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
log
protected static Log log
SHARED
protected static final boolean SHARED
SHARED_SELECTOR
protected static java.nio.channels.Selector SHARED_SELECTOR
maxSelectors
protected int maxSelectors
maxSpareSelectors
protected int maxSpareSelectors
enabled
protected boolean enabled
active
protected java.util.concurrent.atomic.AtomicInteger active
spare
protected java.util.concurrent.atomic.AtomicInteger spare
selectors
protected java.util.concurrent.ConcurrentLinkedQueue<java.nio.channels.Selector> selectors
NioSelectorPool
public NioSelectorPool()
getSharedSelector
protected static java.nio.channels.Selector getSharedSelector()
throws java.io.IOException
- Throws:
java.io.IOException
get
public java.nio.channels.Selector get()
throws java.io.IOException
- Throws:
java.io.IOException
put
public void put(java.nio.channels.Selector s)
throws java.io.IOException
- Throws:
java.io.IOException
close
public void close()
throws java.io.IOException
- Throws:
java.io.IOException
open
public void open()
throws java.io.IOException
- Throws:
java.io.IOException
write
public int write(java.nio.ByteBuffer buf,
NioChannel socket,
java.nio.channels.Selector selector,
long writeTimeout)
throws java.io.IOException
- Performs a blocking write using the bytebuffer for data to be written and a selector to block.
If the
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 toselector
- Selector - the selector to use for blocking, if null then a busy write will be initiatedwriteTimeout
- long - the timeout for this write operation in milliseconds, -1 means no timeout
- Returns:
- int - returns the number of bytes written
- Throws:
java.io.EOFException
- if write returns -1
java.net.SocketTimeoutException
- if the write times out
java.io.IOException
- if an IO Exception occurs in the underlying socket logic
write
public int write(java.nio.ByteBuffer buf,
NioChannel socket,
java.nio.channels.Selector selector,
long writeTimeout,
boolean block)
throws java.io.IOException
- Throws:
java.io.IOException
read
public int read(java.nio.ByteBuffer buf,
NioChannel socket,
java.nio.channels.Selector selector,
long readTimeout)
throws java.io.IOException
- Performs a blocking read using the bytebuffer for data to be read and a selector to block.
If the
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 outsocket
- SocketChannel - the socket to write data toselector
- Selector - the selector to use for blocking, if null then a busy read will be initiatedreadTimeout
- long - the timeout for this read operation in milliseconds, -1 means no timeout
- Returns:
- int - returns the number of bytes read
- Throws:
java.io.EOFException
- if read returns -1
java.net.SocketTimeoutException
- if the read times out
java.io.IOException
- if an IO Exception occurs in the underlying socket logic
read
public int read(java.nio.ByteBuffer buf,
NioChannel socket,
java.nio.channels.Selector selector,
long readTimeout,
boolean block)
throws java.io.IOException
- Performs a read using the bytebuffer for data to be read and a selector to register for events should
you have the block=true.
If the
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 outsocket
- SocketChannel - the socket to write data toselector
- Selector - the selector to use for blocking, if null then a busy read will be initiatedreadTimeout
- long - the timeout for this read operation in milliseconds, -1 means no timeoutblock
- - 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:
java.io.EOFException
- if read returns -1
java.net.SocketTimeoutException
- if the read times out
java.io.IOException
- if an IO Exception occurs in the underlying socket logic
setMaxSelectors
public void setMaxSelectors(int maxSelectors)
setMaxSpareSelectors
public void setMaxSpareSelectors(int maxSpareSelectors)
setEnabled
public void setEnabled(boolean enabled)
getMaxSelectors
public int getMaxSelectors()
getMaxSpareSelectors
public int getMaxSpareSelectors()
isEnabled
public boolean isEnabled()
Copyright © 2000-2007 Apache Software Foundation. All Rights Reserved.