public abstract class SelectorManager extends AbstractLifeCycle implements Dumpable
SelectorManager
manages a number of SelectorManager.ManagedSelector
s that
simplify the non-blocking primitives provided by the JVM via the java.nio
package.
SelectorManager
subclasses implement methods to return protocol-specific
EndPoint
s and Connection
s.
Modifier and Type | Class and Description |
---|---|
class |
SelectorManager.ManagedSelector
SelectorManager.ManagedSelector wraps a Selector simplifying non-blocking operations on channels. |
static interface |
SelectorManager.SelectableEndPoint
A
SelectorManager.SelectableEndPoint is an EndPoint that wish to be notified of
non-blocking events by the SelectorManager.ManagedSelector . |
AbstractLifeCycle.AbstractLifeCycleListener
LifeCycle.Listener
Modifier | Constructor and Description |
---|---|
protected |
SelectorManager(Executor executor,
Scheduler scheduler) |
protected |
SelectorManager(Executor executor,
Scheduler scheduler,
int selectors) |
Modifier and Type | Method and Description |
---|---|
void |
accept(SocketChannel channel)
Registers a channel to perform non-blocking read/write operations.
|
void |
connect(SocketChannel channel,
Object attachment)
Registers a channel to perform a non-blocking connect.
|
void |
connectionClosed(Connection connection)
Callback method invoked when a connection is closed.
|
protected void |
connectionFailed(SocketChannel channel,
Throwable ex,
Object attachment)
Callback method invoked when a non-blocking connect cannot be completed.
|
void |
connectionOpened(Connection connection)
Callback method invoked when a connection is opened.
|
protected void |
doStart() |
protected void |
doStop() |
String |
dump() |
void |
dump(Appendable out,
String indent) |
protected void |
endPointClosed(EndPoint endpoint)
Callback method invoked when an endpoint is closed.
|
protected void |
endPointOpened(EndPoint endpoint)
Callback method invoked when an endpoint is opened.
|
protected void |
execute(Runnable task)
Executes the given task in a different thread.
|
protected boolean |
finishConnect(SocketChannel channel) |
long |
getConnectTimeout() |
Executor |
getExecutor() |
Scheduler |
getScheduler() |
int |
getSelectorCount() |
abstract Connection |
newConnection(SocketChannel channel,
EndPoint endpoint,
Object attachment)
Factory method to create
Connection . |
protected abstract EndPoint |
newEndPoint(SocketChannel channel,
SelectorManager.ManagedSelector selector,
SelectionKey selectionKey)
Factory method to create
EndPoint . |
protected SelectorManager.ManagedSelector |
newSelector(int id)
Factory method for
SelectorManager.ManagedSelector . |
void |
setConnectTimeout(long connectTimeout) |
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, setStopTimeout, start, stop
protected static final Logger LOG
public Executor getExecutor()
public Scheduler getScheduler()
public long getConnectTimeout()
public void setConnectTimeout(long connectTimeout)
protected void execute(Runnable task)
task
- the task to executepublic int getSelectorCount()
public void connect(SocketChannel channel, Object attachment)
Registers a channel to perform a non-blocking connect.
The channel must be set in non-blocking mode, and SocketChannel.connect(SocketAddress)
must be called prior to calling this method.
channel
- the channel to registerattachment
- the attachment objectpublic void accept(SocketChannel channel)
Registers a channel to perform non-blocking read/write operations.
This method is called just after a channel has been accepted by ServerSocketChannel.accept()
,
or just after having performed a blocking connect via Socket.connect(SocketAddress, int)
.
channel
- the channel to registerprotected void doStart() throws Exception
doStart
in class AbstractLifeCycle
Exception
protected SelectorManager.ManagedSelector newSelector(int id)
Factory method for SelectorManager.ManagedSelector
.
id
- an identifier for the to create
SelectorManager.ManagedSelector
protected void doStop() throws Exception
doStop
in class AbstractLifeCycle
Exception
protected void endPointOpened(EndPoint endpoint)
Callback method invoked when an endpoint is opened.
endpoint
- the endpoint being openedprotected void endPointClosed(EndPoint endpoint)
Callback method invoked when an endpoint is closed.
endpoint
- the endpoint being closedpublic void connectionOpened(Connection connection)
Callback method invoked when a connection is opened.
connection
- the connection just openedpublic void connectionClosed(Connection connection)
Callback method invoked when a connection is closed.
connection
- the connection just closedprotected boolean finishConnect(SocketChannel channel) throws IOException
IOException
protected void connectionFailed(SocketChannel channel, Throwable ex, Object attachment)
Callback method invoked when a non-blocking connect cannot be completed.
By default it just logs with level warning.
channel
- the channel that attempted the connectex
- the exception that caused the connect to failattachment
- the attachment object associated at registrationprotected abstract EndPoint newEndPoint(SocketChannel channel, SelectorManager.ManagedSelector selector, SelectionKey selectionKey) throws IOException
Factory method to create EndPoint
.
This method is invoked as a result of the registration of a channel via connect(SocketChannel, Object)
or accept(SocketChannel)
.
channel
- the channel associated to the endpointselector
- the selector the channel is registered toselectionKey
- the selection keyIOException
- if the endPoint cannot be creatednewConnection(SocketChannel, EndPoint, Object)
public abstract Connection newConnection(SocketChannel channel, EndPoint endpoint, Object attachment) throws IOException
Factory method to create Connection
.
channel
- the channel associated to the connectionendpoint
- the endpointattachment
- the attachmentIOException
newEndPoint(SocketChannel, ManagedSelector, SelectionKey)
public void dump(Appendable out, String indent) throws IOException
dump
in interface Dumpable
IOException
Copyright © 1995-2012 Mort Bay Consulting. All Rights Reserved.