Package io.netty.channel.nio
Class AbstractNioChannel
- java.lang.Object
-
- io.netty.util.DefaultAttributeMap
-
- io.netty.channel.AbstractChannel
-
- io.netty.channel.nio.AbstractNioChannel
-
- All Implemented Interfaces:
Channel
,ChannelOutboundInvoker
,AttributeMap
,java.lang.Comparable<Channel>
- Direct Known Subclasses:
AbstractNioByteChannel
,AbstractNioMessageChannel
public abstract class AbstractNioChannel extends AbstractChannel
Abstract base class forChannel
implementations which use a Selector based approach.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
AbstractNioChannel.AbstractNioUnsafe
static interface
AbstractNioChannel.NioUnsafe
SpecialChannel.Unsafe
sub-type which allows to access the underlyingSelectableChannel
-
Nested classes/interfaces inherited from class io.netty.channel.AbstractChannel
AbstractChannel.AbstractUnsafe
-
Nested classes/interfaces inherited from interface io.netty.channel.Channel
Channel.Unsafe
-
-
Field Summary
Fields Modifier and Type Field Description private java.nio.channels.SelectableChannel
ch
private java.lang.Runnable
clearReadPendingRunnable
private ChannelPromise
connectPromise
The future of the current connection attempt.private Future<?>
connectTimeoutFuture
private static InternalLogger
logger
protected int
readInterestOp
(package private) boolean
readPending
private java.net.SocketAddress
requestedRemoteAddress
(package private) java.nio.channels.SelectionKey
selectionKey
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractNioChannel(Channel parent, java.nio.channels.SelectableChannel ch, int readInterestOp)
Create a new instance
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected void
clearReadPending()
Set read pending tofalse
.private void
clearReadPending0()
protected void
doBeginRead()
Schedule a read operation.protected void
doClose()
Close theChannel
protected abstract boolean
doConnect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress)
Connect to the remote peerprotected void
doDeregister()
protected abstract void
doFinishConnect()
Finish the connectprotected void
doRegister()
NioEventLoop
eventLoop()
protected boolean
isCompatible(EventLoop loop)
Returntrue
if the givenEventLoop
is compatible with this instance.boolean
isOpen()
Returnstrue
if theChannel
is open and may get active laterprotected boolean
isReadPending()
Deprecated.No longer supported.protected java.nio.channels.SelectableChannel
javaChannel()
protected ByteBuf
newDirectBuffer(ByteBuf buf)
Returns an off-heap copy of the specifiedByteBuf
, and releases the original one.protected ByteBuf
newDirectBuffer(ReferenceCounted holder, ByteBuf buf)
Returns an off-heap copy of the specifiedByteBuf
, and releases the specified holder.protected java.nio.channels.SelectionKey
selectionKey()
Return the currentSelectionKey
protected void
setReadPending(boolean readPending)
Deprecated.UseclearReadPending()
if appropriate instead.private void
setReadPending0(boolean readPending)
AbstractNioChannel.NioUnsafe
unsafe()
Returns an internal-use-only object that provides unsafe operations.-
Methods inherited from class io.netty.channel.AbstractChannel
alloc, bind, bind, bytesBeforeUnwritable, bytesBeforeWritable, close, close, closeFuture, compareTo, connect, connect, connect, connect, deregister, deregister, disconnect, disconnect, doBind, doDisconnect, doShutdownOutput, doWrite, equals, filterOutboundMessage, flush, hashCode, id, invalidateLocalAddress, invalidateRemoteAddress, isRegistered, isWritable, localAddress, localAddress0, maxMessagesPerWrite, newChannelPipeline, newFailedFuture, newId, newProgressivePromise, newPromise, newSucceededFuture, newUnsafe, parent, pipeline, read, remoteAddress, remoteAddress0, toString, validateFileRegion, voidPromise, write, write, writeAndFlush, writeAndFlush
-
Methods inherited from class io.netty.util.DefaultAttributeMap
attr, hasAttr
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface io.netty.util.AttributeMap
attr, hasAttr
-
-
-
-
Field Detail
-
logger
private static final InternalLogger logger
-
ch
private final java.nio.channels.SelectableChannel ch
-
readInterestOp
protected final int readInterestOp
-
selectionKey
volatile java.nio.channels.SelectionKey selectionKey
-
readPending
boolean readPending
-
clearReadPendingRunnable
private final java.lang.Runnable clearReadPendingRunnable
-
connectPromise
private ChannelPromise connectPromise
The future of the current connection attempt. If not null, subsequent connection attempts will fail.
-
connectTimeoutFuture
private Future<?> connectTimeoutFuture
-
requestedRemoteAddress
private java.net.SocketAddress requestedRemoteAddress
-
-
Constructor Detail
-
AbstractNioChannel
protected AbstractNioChannel(Channel parent, java.nio.channels.SelectableChannel ch, int readInterestOp)
Create a new instance- Parameters:
parent
- the parentChannel
by which this instance was created. May benull
ch
- the underlyingSelectableChannel
on which it operatesreadInterestOp
- the ops to set to receive data from theSelectableChannel
-
-
Method Detail
-
isOpen
public boolean isOpen()
Description copied from interface:Channel
Returnstrue
if theChannel
is open and may get active later
-
unsafe
public AbstractNioChannel.NioUnsafe unsafe()
Description copied from interface:Channel
Returns an internal-use-only object that provides unsafe operations.- Specified by:
unsafe
in interfaceChannel
- Overrides:
unsafe
in classAbstractChannel
-
javaChannel
protected java.nio.channels.SelectableChannel javaChannel()
-
eventLoop
public NioEventLoop eventLoop()
Description copied from interface:Channel
- Specified by:
eventLoop
in interfaceChannel
- Overrides:
eventLoop
in classAbstractChannel
-
selectionKey
protected java.nio.channels.SelectionKey selectionKey()
Return the currentSelectionKey
-
isReadPending
@Deprecated protected boolean isReadPending()
Deprecated.No longer supported. No longer supported.
-
setReadPending
@Deprecated protected void setReadPending(boolean readPending)
Deprecated.UseclearReadPending()
if appropriate instead. No longer supported.
-
clearReadPending
protected final void clearReadPending()
Set read pending tofalse
.
-
setReadPending0
private void setReadPending0(boolean readPending)
-
clearReadPending0
private void clearReadPending0()
-
isCompatible
protected boolean isCompatible(EventLoop loop)
Description copied from class:AbstractChannel
Returntrue
if the givenEventLoop
is compatible with this instance.- Specified by:
isCompatible
in classAbstractChannel
-
doRegister
protected void doRegister() throws java.lang.Exception
Description copied from class:AbstractChannel
Is called after theChannel
is registered with itsEventLoop
as part of the register process. Sub-classes may override this method- Overrides:
doRegister
in classAbstractChannel
- Throws:
java.lang.Exception
-
doDeregister
protected void doDeregister() throws java.lang.Exception
Description copied from class:AbstractChannel
- Overrides:
doDeregister
in classAbstractChannel
- Throws:
java.lang.Exception
-
doBeginRead
protected void doBeginRead() throws java.lang.Exception
Description copied from class:AbstractChannel
Schedule a read operation.- Specified by:
doBeginRead
in classAbstractChannel
- Throws:
java.lang.Exception
-
doConnect
protected abstract boolean doConnect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress) throws java.lang.Exception
Connect to the remote peer- Throws:
java.lang.Exception
-
doFinishConnect
protected abstract void doFinishConnect() throws java.lang.Exception
Finish the connect- Throws:
java.lang.Exception
-
newDirectBuffer
protected final ByteBuf newDirectBuffer(ReferenceCounted holder, ByteBuf buf)
Returns an off-heap copy of the specifiedByteBuf
, and releases the specified holder. The caller must ensure that the holder releases the originalByteBuf
when the holder is released by this method. Note that this method does not create an off-heap copy if the allocation / deallocation cost is too high, but just returns the originalByteBuf
..
-
doClose
protected void doClose() throws java.lang.Exception
Description copied from class:AbstractChannel
Close theChannel
- Specified by:
doClose
in classAbstractChannel
- Throws:
java.lang.Exception
-
-