public abstract class ChannelEndPoint extends AbstractEndPoint implements ManagedSelector.Selectable
Holds the channel and socket for an NIO endpoint.
Modifier and Type | Class and Description |
---|---|
private class |
ChannelEndPoint.RunnableCloseable |
private class |
ChannelEndPoint.RunnableTask |
Modifier and Type | Field and Description |
---|---|
private java.nio.channels.ByteChannel |
_channel |
protected int |
_currentInterestOps
The current value for
SelectionKey.interestOps() . |
protected int |
_desiredInterestOps
The desired value for
SelectionKey.interestOps() . |
private java.nio.channels.GatheringByteChannel |
_gather |
protected java.nio.channels.SelectionKey |
_key |
private java.lang.Runnable |
_runCompleteWrite |
private java.lang.Runnable |
_runCompleteWriteFillable |
private java.lang.Runnable |
_runFillable |
protected ManagedSelector |
_selector |
private ManagedSelector.SelectorUpdate |
_updateKeyAction |
private boolean |
_updatePending |
private static Logger |
LOG |
Constructor and Description |
---|
ChannelEndPoint(java.nio.channels.ByteChannel channel,
ManagedSelector selector,
java.nio.channels.SelectionKey key,
Scheduler scheduler) |
Modifier and Type | Method and Description |
---|---|
private void |
changeInterests(int operation) |
void |
doClose() |
int |
fill(java.nio.ByteBuffer buffer)
Fill the passed buffer with data from this endpoint.
|
boolean |
flush(java.nio.ByteBuffer... buffers)
Flush data from the passed header/buffer to this endpoint.
|
java.nio.channels.ByteChannel |
getChannel() |
java.lang.Object |
getTransport() |
boolean |
isOpen()
This abstract method should be called to check if idle timeouts
should still be checked.
|
boolean |
isOptimizedForDirectBuffers()
Is the endpoint optimized for DirectBuffer usage
|
protected void |
needsFillInterest() |
void |
onClose()
Callback method invoked when this
EndPoint is close. |
protected void |
onIncompleteFlush() |
java.lang.Runnable |
onSelected()
Callback method invoked when a read or write events has been
detected by the
ManagedSelector for this endpoint. |
java.lang.String |
toEndPointString() |
void |
updateKey()
Callback method invoked when all the keys selected by the
ManagedSelector for this endpoint have been processed. |
checkFill, checkFlush, close, close, doShutdownInput, doShutdownOutput, fillInterested, getConnection, getCreatedTimeStamp, getFillInterest, getWriteFlusher, isFillInterested, isInputShutdown, isOutputShutdown, onClose, onIdleExpired, onOpen, reset, setConnection, shutdownInput, shutdownOutput, toConnectionString, toString, tryFillInterested, upgrade, write
checkIdleTimeout, getIdleFor, getIdleTimeout, getIdleTimestamp, getScheduler, notIdle, setIdleTimeout
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getIdleTimeout, getLocalAddress, getRemoteAddress, setIdleTimeout
private static final Logger LOG
private final java.nio.channels.ByteChannel _channel
private final java.nio.channels.GatheringByteChannel _gather
protected final ManagedSelector _selector
protected final java.nio.channels.SelectionKey _key
private boolean _updatePending
protected int _currentInterestOps
SelectionKey.interestOps()
.protected int _desiredInterestOps
SelectionKey.interestOps()
.private final ManagedSelector.SelectorUpdate _updateKeyAction
private final java.lang.Runnable _runFillable
private final java.lang.Runnable _runCompleteWrite
private final java.lang.Runnable _runCompleteWriteFillable
public ChannelEndPoint(java.nio.channels.ByteChannel channel, ManagedSelector selector, java.nio.channels.SelectionKey key, Scheduler scheduler)
public boolean isOptimizedForDirectBuffers()
EndPoint
isOptimizedForDirectBuffers
in interface EndPoint
isOptimizedForDirectBuffers
in class AbstractEndPoint
public boolean isOpen()
IdleTimeout
isOpen
in interface EndPoint
isOpen
in class AbstractEndPoint
public void doClose()
doClose
in class AbstractEndPoint
public void onClose()
EndPoint
Callback method invoked when this EndPoint
is close.
onClose
in interface EndPoint
onClose
in class AbstractEndPoint
EndPoint.onOpen()
public int fill(java.nio.ByteBuffer buffer) throws java.io.IOException
EndPoint
fill
in interface EndPoint
buffer
- The buffer to fill. The position and limit are modified during the fill. After the
operation, the position is unchanged and the limit is increased to reflect the new data filled.int
value indicating the number of bytes
filled or -1 if EOF is read or the input is shutdown.java.io.IOException
- if the endpoint is closed.public boolean flush(java.nio.ByteBuffer... buffers) throws java.io.IOException
EndPoint
flush
in interface EndPoint
buffers
- the buffers to flushjava.io.IOException
- If the endpoint is closed or output is shutdown.public java.nio.channels.ByteChannel getChannel()
public java.lang.Object getTransport()
getTransport
in interface EndPoint
protected void needsFillInterest()
needsFillInterest
in class AbstractEndPoint
protected void onIncompleteFlush()
onIncompleteFlush
in class AbstractEndPoint
public java.lang.Runnable onSelected()
ManagedSelector.Selectable
ManagedSelector
for this endpoint.onSelected
in interface ManagedSelector.Selectable
public void updateKey()
ManagedSelector.Selectable
ManagedSelector
for this endpoint have been processed.updateKey
in interface ManagedSelector.Selectable
private void changeInterests(int operation)
public java.lang.String toEndPointString()
toEndPointString
in class AbstractEndPoint