Container, Destroyable, Dumpable, LifeCyclepublic 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 | Description |
|---|---|---|
static int |
DEFAULT_CONNECT_TIMEOUT |
|
protected static Logger |
LOG |
FAILED, RUNNING, STARTED, STARTING, STOP_ON_FAILURE, STOPPED, STOPPING| Modifier | Constructor | Description |
|---|---|---|
protected |
SelectorManager(java.util.concurrent.Executor executor,
Scheduler scheduler) |
|
protected |
SelectorManager(java.util.concurrent.Executor executor,
Scheduler scheduler,
int selectors) |
| Modifier and Type | Method | Description |
|---|---|---|
void |
accept(java.nio.channels.SocketChannel channel) |
|
void |
accept(java.nio.channels.SocketChannel channel,
java.lang.Object attachment) |
Registers a channel to perform non-blocking read/write operations.
|
protected void |
accepted(java.nio.channels.SocketChannel channel) |
Callback method when a channel is accepted from the
ServerSocketChannel
passed to acceptor(ServerSocketChannel). |
void |
acceptor(java.nio.channels.ServerSocketChannel server) |
Registers a server channel for accept operations.
|
void |
connect(java.nio.channels.SocketChannel channel,
java.lang.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(java.nio.channels.SocketChannel channel,
java.lang.Throwable ex,
java.lang.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(java.lang.Runnable task) |
Executes the given task in a different thread.
|
protected boolean |
finishConnect(java.nio.channels.SocketChannel channel) |
|
long |
getConnectTimeout() |
Get the connect timeout
|
ExecutionStrategy.Factory |
getExecutionStrategyFactory() |
|
java.util.concurrent.Executor |
getExecutor() |
|
Scheduler |
getScheduler() |
|
int |
getSelectorCount() |
|
int |
getSelectorPriorityDelta() |
Deprecated.
not implemented
|
abstract Connection |
newConnection(java.nio.channels.SocketChannel channel,
EndPoint endpoint,
java.lang.Object attachment) |
Factory method to create
Connection. |
protected abstract EndPoint |
newEndPoint(java.nio.channels.SocketChannel channel,
ManagedSelector selector,
java.nio.channels.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
|
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stopaddBean, 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, updateBeanspublic static final int DEFAULT_CONNECT_TIMEOUT
protected static final Logger LOG
protected SelectorManager(java.util.concurrent.Executor executor,
Scheduler scheduler)
protected SelectorManager(java.util.concurrent.Executor executor,
Scheduler scheduler,
int selectors)
public java.util.concurrent.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(java.lang.Runnable task)
task - the task to executepublic int getSelectorCount()
public void connect(java.nio.channels.SocketChannel channel,
java.lang.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(java.nio.channels.SocketChannel channel)
channel - the channel to acceptaccept(SocketChannel, Object)public void accept(java.nio.channels.SocketChannel channel,
java.lang.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(java.nio.channels.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(java.nio.channels.SocketChannel channel)
throws java.io.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 - thejava.io.IOException - if unable to accept channelprotected void doStart()
throws java.lang.Exception
doStart in class ContainerLifeCyclejava.lang.Exceptionprotected ManagedSelector newSelector(int id)
Factory method for ManagedSelector.
id - an identifier for the to createManagedSelectorprotected void doStop()
throws java.lang.Exception
doStop in class ContainerLifeCyclejava.lang.Exceptionprotected 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(java.nio.channels.SocketChannel channel)
throws java.io.IOException
java.io.IOExceptionprotected void connectionFailed(java.nio.channels.SocketChannel channel,
java.lang.Throwable ex,
java.lang.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(java.nio.channels.SocketChannel channel, ManagedSelector selector, java.nio.channels.SelectionKey selectionKey) throws java.io.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 keyjava.io.IOException - if the endPoint cannot be creatednewConnection(SocketChannel, EndPoint, Object)public abstract Connection newConnection(java.nio.channels.SocketChannel channel, EndPoint endpoint, java.lang.Object attachment) throws java.io.IOException
Factory method to create Connection.
channel - the channel associated to the connectionendpoint - the endpointattachment - the attachmentjava.io.IOException - if unable to create new connectionnewEndPoint(SocketChannel, ManagedSelector, SelectionKey)Copyright © 1995–2017 Webtide. All rights reserved.