public abstract class SelectorManager extends ContainerLifeCycle implements Dumpable
SelectorManager manages a number of ManagedSelectors that
simplify the non-blocking primitives provided by the JVM via the java.nio package.
SelectorManager subclasses implement methods to return protocol-specific
EndPoints and Connections.
AbstractLifeCycle.AbstractLifeCycleListenerContainer.InheritedListener, Container.ListenerLifeCycle.Listener| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_CONNECT_TIMEOUT |
protected static Logger |
LOG |
| 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) |
void |
accept(SocketChannel channel,
Object attachment)
Registers a channel to perform non-blocking read/write operations.
|
protected void |
accepted(SocketChannel channel)
Callback method when a channel is accepted from the
ServerSocketChannel
passed to acceptor(ServerSocketChannel). |
void |
acceptor(ServerSocketChannel server)
Registers a server channel for accept 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() |
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()
Get the connect timeout
|
ExecutionStrategy.Factory |
getExecutionStrategyFactory() |
Executor |
getExecutor() |
Scheduler |
getScheduler() |
int |
getSelectorCount() |
int |
getSelectorPriorityDelta()
Deprecated.
not implemented
|
abstract Connection |
newConnection(SocketChannel channel,
EndPoint endpoint,
Object attachment)
Factory method to create
Connection. |
protected abstract EndPoint |
newEndPoint(SocketChannel channel,
ManagedSelector selector,
SelectionKey selectionKey)
Factory method to create
EndPoint. |
protected ManagedSelector |
newSelector(int id)
Factory method for
ManagedSelector. |
void |
setConnectTimeout(long milliseconds)
Set the connect timeout (in milliseconds)
|
void |
setExecutionStrategyFactory(ExecutionStrategy.Factory _executionFactory) |
void |
setSelectorPriorityDelta(int selectorPriorityDelta)
Deprecated.
not implemented
|
addBean, addBean, addBean, addEventListener, addManaged, contains, destroy, dump, dump, dump, dump, dump, dumpBeans, dumpObject, dumpStdErr, dumpThis, getBean, getBeans, getBeans, isManaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeansaddLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stoppublic static final int DEFAULT_CONNECT_TIMEOUT
protected static final Logger LOG
public Executor getExecutor()
public Scheduler getScheduler()
public long getConnectTimeout()
public void setConnectTimeout(long milliseconds)
milliseconds - the number of milliseconds for the timeoutpublic ExecutionStrategy.Factory getExecutionStrategyFactory()
ExecutionStrategy.Factory used by ManagedSelectorpublic void setExecutionStrategyFactory(ExecutionStrategy.Factory _executionFactory)
_executionFactory - the ExecutionStrategy.Factory used by ManagedSelector@Deprecated public int getSelectorPriorityDelta()
@Deprecated public void setSelectorPriorityDelta(int selectorPriorityDelta)
selectorPriorityDelta - the selector priority deltaprotected 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, SocketChannel.connect(SocketAddress)
must be called prior to calling this method, and the connect operation must not be completed
(the return value of SocketChannel.connect(SocketAddress) must be false).
channel - the channel to registerattachment - the attachment objectaccept(SocketChannel, Object)public void accept(SocketChannel channel)
channel - the channel to acceptaccept(SocketChannel, Object)public void accept(SocketChannel channel, Object attachment)
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), or
just after a non-blocking connect via SocketChannel.connect(SocketAddress) that completed
successfully.
channel - the channel to registerattachment - the attachment objectpublic void acceptor(ServerSocketChannel server)
Registers a server channel for accept operations.
When a SocketChannel is accepted from the given ServerSocketChannel
then the accepted(SocketChannel) method is called, which must be
overridden by a derivation of this class to handle the accepted channel
server - the server channel to registerprotected void accepted(SocketChannel channel) throws IOException
ServerSocketChannel
passed to acceptor(ServerSocketChannel).
The default impl throws an UnsupportedOperationException, so it must
be overridden by subclasses if a server channel is provided.channel - theIOException - if unable to accept channelprotected void doStart()
throws Exception
doStart in class ContainerLifeCycleExceptionprotected ManagedSelector newSelector(int id)
Factory method for ManagedSelector.
id - an identifier for the to createManagedSelectorprotected void doStop()
throws Exception
doStop in class ContainerLifeCycleExceptionprotected 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
IOExceptionprotected 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, 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 - if unable to create new connectionnewEndPoint(SocketChannel, ManagedSelector, SelectionKey)Copyright © 1995-2016 Webtide. All Rights Reserved.