public class ManagedSelector extends ContainerLifeCycle implements Dumpable
ManagedSelector wraps a Selector simplifying non-blocking operations on channels.
ManagedSelector runs the select loop, which waits on Selector.select() until events
happen for registered channels. When events happen, it notifies the EndPoint associated
with the channel.
| Modifier and Type | Class and Description |
|---|---|
(package private) class |
ManagedSelector.Accept |
(package private) class |
ManagedSelector.Acceptor |
private class |
ManagedSelector.CloseConnections |
(package private) class |
ManagedSelector.Connect |
private class |
ManagedSelector.CreateEndPoint |
private class |
ManagedSelector.DestroyEndPoint |
private static class |
ManagedSelector.DumpKeys |
static interface |
ManagedSelector.Selectable
A
ManagedSelector.Selectable is an EndPoint that wish to be
notified of non-blocking events by the ManagedSelector. |
private class |
ManagedSelector.SelectorProducer |
static interface |
ManagedSelector.SelectorUpdate
A selector update to be done when the selector has been woken.
|
private class |
ManagedSelector.StopSelector |
AbstractLifeCycle.AbstractLifeCycleListenerContainer.InheritedListener, Container.ListenerLifeCycle.Listener| Modifier and Type | Field and Description |
|---|---|
private int |
_id |
private boolean |
_selecting |
private java.nio.channels.Selector |
_selector |
private SelectorManager |
_selectorManager |
private java.util.concurrent.atomic.AtomicBoolean |
_started |
private ExecutionStrategy |
_strategy |
private java.util.Deque<ManagedSelector.SelectorUpdate> |
_updateable |
private java.util.Deque<ManagedSelector.SelectorUpdate> |
_updates |
private static Logger |
LOG |
FAILED, RUNNING, STARTED, STARTING, STOP_ON_FAILURE, STOPPED, STOPPING| Constructor and Description |
|---|
ManagedSelector(SelectorManager selectorManager,
int id) |
| Modifier and Type | Method and Description |
|---|---|
private static void |
closeNoExceptions(java.io.Closeable closeable) |
private void |
createEndPoint(java.nio.channels.SelectableChannel channel,
java.nio.channels.SelectionKey selectionKey) |
void |
destroyEndPoint(EndPoint endPoint) |
protected void |
doStart()
Starts the managed lifecycle beans in the order they were added.
|
protected void |
doStop()
Stops the managed lifecycle beans in the reverse order they were added.
|
void |
dump(java.lang.Appendable out,
java.lang.String indent) |
private void |
execute(java.lang.Runnable task) |
private int |
getActionSize() |
java.nio.channels.Selector |
getSelector() |
private void |
processConnect(java.nio.channels.SelectionKey key,
ManagedSelector.Connect connect) |
int |
size() |
void |
submit(ManagedSelector.SelectorUpdate update)
Submit an
ManagedSelector.SelectorUpdate to be acted on between calls to Selector.select() |
java.lang.String |
toString() |
addBean, addBean, addBean, addEventListener, addManaged, contains, destroy, dump, dump, dump, dump, dumpBeans, dumpObject, dumpStdErr, dumpThis, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isManaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeansaddLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stopprivate static final Logger LOG
private final java.util.concurrent.atomic.AtomicBoolean _started
private boolean _selecting
private final SelectorManager _selectorManager
private final int _id
private final ExecutionStrategy _strategy
private java.nio.channels.Selector _selector
private java.util.Deque<ManagedSelector.SelectorUpdate> _updates
private java.util.Deque<ManagedSelector.SelectorUpdate> _updateable
public ManagedSelector(SelectorManager selectorManager, int id)
public java.nio.channels.Selector getSelector()
protected void doStart()
throws java.lang.Exception
ContainerLifeCycledoStart in class ContainerLifeCyclejava.lang.Exceptionpublic int size()
protected void doStop()
throws java.lang.Exception
ContainerLifeCycledoStop in class ContainerLifeCyclejava.lang.Exceptionpublic void submit(ManagedSelector.SelectorUpdate update)
ManagedSelector.SelectorUpdate to be acted on between calls to Selector.select()update - The selector update to apply at next wakeupprivate void execute(java.lang.Runnable task)
private void processConnect(java.nio.channels.SelectionKey key,
ManagedSelector.Connect connect)
private static void closeNoExceptions(java.io.Closeable closeable)
private void createEndPoint(java.nio.channels.SelectableChannel channel,
java.nio.channels.SelectionKey selectionKey)
throws java.io.IOException
java.io.IOExceptionpublic void destroyEndPoint(EndPoint endPoint)
private int getActionSize()
public void dump(java.lang.Appendable out,
java.lang.String indent)
throws java.io.IOException
dump in interface Dumpabledump in class ContainerLifeCyclejava.io.IOExceptionpublic java.lang.String toString()
toString in class java.lang.Object