Class ManagedSelector
java.lang.Object
org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.ContainerLifeCycle
org.eclipse.jetty.io.ManagedSelector
- All Implemented Interfaces:
Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle
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.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) class(package private) classprivate class(package private) classprivate final classprivate classprivate static classstatic interfaceAManagedSelector.Selectableis anEndPointthat wish to be notified of non-blocking events by theManagedSelector.private classstatic interfaceA selector update to be done when the selector has been woken.private classprivate classNested classes/interfaces inherited from class AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListenerNested classes/interfaces inherited from interface Container
Container.InheritedListener, Container.ListenerNested classes/interfaces inherited from interface Dumpable
Dumpable.DumpableContainerNested classes/interfaces inherited from interface LifeCycle
LifeCycle.Listener -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final intprivate final SampleStatisticprivate booleanprivate Selectorprivate final SelectorManagerprivate final AtomicBooleanprivate final ExecutionStrategyprivate Deque<ManagedSelector.SelectorUpdate> private Deque<ManagedSelector.SelectorUpdate> private static final booleanprivate static final Logger -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidcreateEndPoint(SelectableChannel channel, SelectionKey selectionKey) (package private) voiddestroyEndPoint(EndPoint endPoint) protected voiddoStart()Starts the managed lifecycle beans in the order they were added.protected voiddoStop()Stops the managed lifecycle beans in the reverse order they were added.voiddump(Appendable out, String indent) Dump this object (and children) into an Appendable using the provided indent after any new lines.protected voidendPointClosed(EndPoint endPoint) protected voidendPointOpened(EndPoint endPoint) private voidprivate intdoubledoublelongintprotected voidhandleSelectFailure(Selector selector, Throwable failure) protected intprotected voidonSelectFailed(Throwable cause) private voidprocessConnect(SelectionKey key, ManagedSelector.Connect connect) void(package private) static intsafeInterestOps(SelectionKey selectionKey) (package private) static intsafeReadyOps(SelectionKey selectionKey) protected intintsize()voidsubmit(ManagedSelector.SelectorUpdate update) Submit anManagedSelector.SelectorUpdateto be acted on between calls toSelector.select()private voidsubmit(ManagedSelector.SelectorUpdate update, boolean lazy) toString()private voidwakeup()Methods inherited from class ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, destroy, dump, dump, dump, dump, dumpBeans, dumpObject, dumpObjects, dumpStdErr, dumpThis, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeansMethods inherited from class AbstractLifeCycle
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stopMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Dumpable.DumpableContainer
isDumpable
-
Field Details
-
LOG
-
FORCE_SELECT_NOW
private static final boolean FORCE_SELECT_NOW -
_started
-
_selecting
private boolean _selecting -
_selectorManager
-
_id
private final int _id -
_strategy
-
_selector
-
_updates
-
_updateable
-
_keyStats
-
-
Constructor Details
-
ManagedSelector
-
-
Method Details
-
getSelector
-
doStart
Description copied from class:ContainerLifeCycleStarts the managed lifecycle beans in the order they were added.- Overrides:
doStartin classContainerLifeCycle- Throws:
Exception
-
doStop
Description copied from class:ContainerLifeCycleStops the managed lifecycle beans in the reverse order they were added.- Overrides:
doStopin classContainerLifeCycle- Throws:
Exception
-
getTotalKeys
-
getAverageSelectedKeys
@ManagedAttribute(value="Average number of selected keys", readonly=true) public double getAverageSelectedKeys() -
getMaxSelectedKeys
@ManagedAttribute(value="Maximum number of selected keys", readonly=true) public double getMaxSelectedKeys() -
getSelectCount
@ManagedAttribute(value="Total number of select() calls", readonly=true) public long getSelectCount() -
resetStats
-
nioSelect
- Throws:
IOException
-
select
- Throws:
IOException
-
handleSelectFailure
- Throws:
IOException
-
onSelectFailed
-
size
public int size() -
submit
Submit anManagedSelector.SelectorUpdateto be acted on between calls toSelector.select()- Parameters:
update- The selector update to apply at next wakeup
-
submit
-
wakeup
private void wakeup() -
execute
-
processConnect
-
endPointOpened
-
endPointClosed
-
createEndPoint
private void createEndPoint(SelectableChannel channel, SelectionKey selectionKey) throws IOException - Throws:
IOException
-
destroyEndPoint
-
getActionSize
private int getActionSize() -
safeReadyOps
-
safeInterestOps
-
dump
Description copied from interface:DumpableDump this object (and children) into an Appendable using the provided indent after any new lines. The indent should not be applied to the first object dumped.- Specified by:
dumpin interfaceDumpable- Overrides:
dumpin classContainerLifeCycle- Parameters:
out- The appendable to dump toindent- The indent to apply after any new lines.- Throws:
IOException- if unable to write to Appendable
-
toString
- Overrides:
toStringin classAbstractLifeCycle
-