Package io.netty.channel
Class AbstractChannel.AbstractUnsafe
- java.lang.Object
-
- io.netty.channel.AbstractChannel.AbstractUnsafe
-
- All Implemented Interfaces:
Channel.Unsafe
- Direct Known Subclasses:
AbstractNioChannel.AbstractNioUnsafe
,AbstractOioChannel.DefaultOioUnsafe
,AbstractServerChannel.DefaultServerUnsafe
,EmbeddedChannel.EmbeddedUnsafe
,FailedChannel.FailedChannelUnsafe
,LocalChannel.LocalUnsafe
- Enclosing class:
- AbstractChannel
protected abstract class AbstractChannel.AbstractUnsafe extends java.lang.Object implements Channel.Unsafe
Channel.Unsafe
implementation which sub-classes must extend and use.
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
inFlush0
private boolean
neverRegistered
true if the channel has never been registered, false otherwiseprivate ChannelOutboundBuffer
outboundBuffer
private RecvByteBufAllocator.Handle
recvHandle
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractUnsafe()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.Throwable
annotateConnectException(java.lang.Throwable cause, java.net.SocketAddress remoteAddress)
Appends the remote address to the message of the exceptions caused by connection attempt failure.private void
assertEventLoop()
void
beginRead()
Schedules a read operation that fills the inbound buffer of the firstChannelInboundHandler
in theChannelPipeline
.void
bind(java.net.SocketAddress localAddress, ChannelPromise promise)
void
close(ChannelPromise promise)
Close theChannel
of theChannelPromise
and notify theChannelPromise
once the operation was complete.private void
close(ChannelPromise promise, java.lang.Throwable cause, java.nio.channels.ClosedChannelException closeCause, boolean notify)
void
closeForcibly()
Closes theChannel
immediately without firing any events.protected void
closeIfClosed()
private void
closeOutboundBufferForShutdown(ChannelPipeline pipeline, ChannelOutboundBuffer buffer, java.lang.Throwable cause)
void
deregister(ChannelPromise promise)
Deregister theChannel
of theChannelPromise
fromEventLoop
and notify theChannelPromise
once the operation was complete.private void
deregister(ChannelPromise promise, boolean fireChannelInactive)
void
disconnect(ChannelPromise promise)
Disconnect theChannel
of theChannelFuture
and notify theChannelPromise
once the operation was complete.private void
doClose0(ChannelPromise promise)
protected boolean
ensureOpen(ChannelPromise promise)
private void
fireChannelInactiveAndDeregister(boolean wasActive)
void
flush()
Flush out all write operations scheduled viaChannel.Unsafe.write(Object, ChannelPromise)
.protected void
flush0()
private void
invokeLater(java.lang.Runnable task)
java.net.SocketAddress
localAddress()
Return theSocketAddress
to which is bound local ornull
if none.private java.nio.channels.ClosedChannelException
newClosedChannelException(java.lang.Throwable cause)
ChannelOutboundBuffer
outboundBuffer()
Returns theChannelOutboundBuffer
of theChannel
where the pending write requests are stored.protected java.util.concurrent.Executor
prepareToClose()
Prepares to close theChannel
.RecvByteBufAllocator.Handle
recvBufAllocHandle()
Return the assignedRecvByteBufAllocator.Handle
which will be used to allocateByteBuf
's when receiving data.void
register(EventLoop eventLoop, ChannelPromise promise)
Register theChannel
of theChannelPromise
and notify theChannelFuture
once the registration was complete.private void
register0(ChannelPromise promise)
java.net.SocketAddress
remoteAddress()
Return theSocketAddress
to which is bound remote ornull
if none is bound yet.protected void
safeSetFailure(ChannelPromise promise, java.lang.Throwable cause)
Marks the specifiedpromise
as failure.protected void
safeSetSuccess(ChannelPromise promise)
Marks the specifiedpromise
as success.void
shutdownOutput(ChannelPromise promise)
Shutdown the output portion of the correspondingChannel
.private void
shutdownOutput(ChannelPromise promise, java.lang.Throwable cause)
Shutdown the output portion of the correspondingChannel
.ChannelPromise
voidPromise()
Return a special ChannelPromise which can be reused and passed to the operations inChannel.Unsafe
.void
write(java.lang.Object msg, ChannelPromise promise)
Schedules a write operation.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.netty.channel.Channel.Unsafe
connect
-
-
-
-
Field Detail
-
outboundBuffer
private volatile ChannelOutboundBuffer outboundBuffer
-
recvHandle
private RecvByteBufAllocator.Handle recvHandle
-
inFlush0
private boolean inFlush0
-
neverRegistered
private boolean neverRegistered
true if the channel has never been registered, false otherwise
-
-
Method Detail
-
assertEventLoop
private void assertEventLoop()
-
recvBufAllocHandle
public RecvByteBufAllocator.Handle recvBufAllocHandle()
Description copied from interface:Channel.Unsafe
Return the assignedRecvByteBufAllocator.Handle
which will be used to allocateByteBuf
's when receiving data.- Specified by:
recvBufAllocHandle
in interfaceChannel.Unsafe
-
outboundBuffer
public final ChannelOutboundBuffer outboundBuffer()
Description copied from interface:Channel.Unsafe
Returns theChannelOutboundBuffer
of theChannel
where the pending write requests are stored.- Specified by:
outboundBuffer
in interfaceChannel.Unsafe
-
localAddress
public final java.net.SocketAddress localAddress()
Description copied from interface:Channel.Unsafe
Return theSocketAddress
to which is bound local ornull
if none.- Specified by:
localAddress
in interfaceChannel.Unsafe
-
remoteAddress
public final java.net.SocketAddress remoteAddress()
Description copied from interface:Channel.Unsafe
Return theSocketAddress
to which is bound remote ornull
if none is bound yet.- Specified by:
remoteAddress
in interfaceChannel.Unsafe
-
register
public final void register(EventLoop eventLoop, ChannelPromise promise)
Description copied from interface:Channel.Unsafe
Register theChannel
of theChannelPromise
and notify theChannelFuture
once the registration was complete.- Specified by:
register
in interfaceChannel.Unsafe
-
register0
private void register0(ChannelPromise promise)
-
bind
public final void bind(java.net.SocketAddress localAddress, ChannelPromise promise)
Description copied from interface:Channel.Unsafe
- Specified by:
bind
in interfaceChannel.Unsafe
-
disconnect
public final void disconnect(ChannelPromise promise)
Description copied from interface:Channel.Unsafe
Disconnect theChannel
of theChannelFuture
and notify theChannelPromise
once the operation was complete.- Specified by:
disconnect
in interfaceChannel.Unsafe
-
close
public final void close(ChannelPromise promise)
Description copied from interface:Channel.Unsafe
Close theChannel
of theChannelPromise
and notify theChannelPromise
once the operation was complete.- Specified by:
close
in interfaceChannel.Unsafe
-
shutdownOutput
@UnstableApi public final void shutdownOutput(ChannelPromise promise)
Shutdown the output portion of the correspondingChannel
. For example this will clean up theChannelOutboundBuffer
and not allow any more writes.
-
shutdownOutput
private void shutdownOutput(ChannelPromise promise, java.lang.Throwable cause)
Shutdown the output portion of the correspondingChannel
. For example this will clean up theChannelOutboundBuffer
and not allow any more writes.- Parameters:
cause
- The cause which may provide rational for the shutdown.
-
closeOutboundBufferForShutdown
private void closeOutboundBufferForShutdown(ChannelPipeline pipeline, ChannelOutboundBuffer buffer, java.lang.Throwable cause)
-
close
private void close(ChannelPromise promise, java.lang.Throwable cause, java.nio.channels.ClosedChannelException closeCause, boolean notify)
-
doClose0
private void doClose0(ChannelPromise promise)
-
fireChannelInactiveAndDeregister
private void fireChannelInactiveAndDeregister(boolean wasActive)
-
closeForcibly
public final void closeForcibly()
Description copied from interface:Channel.Unsafe
Closes theChannel
immediately without firing any events. Probably only useful when registration attempt failed.- Specified by:
closeForcibly
in interfaceChannel.Unsafe
-
deregister
public final void deregister(ChannelPromise promise)
Description copied from interface:Channel.Unsafe
Deregister theChannel
of theChannelPromise
fromEventLoop
and notify theChannelPromise
once the operation was complete.- Specified by:
deregister
in interfaceChannel.Unsafe
-
deregister
private void deregister(ChannelPromise promise, boolean fireChannelInactive)
-
beginRead
public final void beginRead()
Description copied from interface:Channel.Unsafe
Schedules a read operation that fills the inbound buffer of the firstChannelInboundHandler
in theChannelPipeline
. If there's already a pending read operation, this method does nothing.- Specified by:
beginRead
in interfaceChannel.Unsafe
-
write
public final void write(java.lang.Object msg, ChannelPromise promise)
Description copied from interface:Channel.Unsafe
Schedules a write operation.- Specified by:
write
in interfaceChannel.Unsafe
-
flush
public final void flush()
Description copied from interface:Channel.Unsafe
Flush out all write operations scheduled viaChannel.Unsafe.write(Object, ChannelPromise)
.- Specified by:
flush
in interfaceChannel.Unsafe
-
flush0
protected void flush0()
-
newClosedChannelException
private java.nio.channels.ClosedChannelException newClosedChannelException(java.lang.Throwable cause)
-
voidPromise
public final ChannelPromise voidPromise()
Description copied from interface:Channel.Unsafe
Return a special ChannelPromise which can be reused and passed to the operations inChannel.Unsafe
. It will never be notified of a success or error and so is only a placeholder for operations that take aChannelPromise
as argument but for which you not want to get notified.- Specified by:
voidPromise
in interfaceChannel.Unsafe
-
ensureOpen
protected final boolean ensureOpen(ChannelPromise promise)
-
safeSetSuccess
protected final void safeSetSuccess(ChannelPromise promise)
Marks the specifiedpromise
as success. If thepromise
is done already, log a message.
-
safeSetFailure
protected final void safeSetFailure(ChannelPromise promise, java.lang.Throwable cause)
Marks the specifiedpromise
as failure. If thepromise
is done already, log a message.
-
closeIfClosed
protected final void closeIfClosed()
-
invokeLater
private void invokeLater(java.lang.Runnable task)
-
annotateConnectException
protected final java.lang.Throwable annotateConnectException(java.lang.Throwable cause, java.net.SocketAddress remoteAddress)
Appends the remote address to the message of the exceptions caused by connection attempt failure.
-
prepareToClose
protected java.util.concurrent.Executor prepareToClose()
Prepares to close theChannel
. If this method returns anExecutor
, the caller must call theExecutor.execute(Runnable)
method with a task that callsAbstractChannel.doClose()
on the returnedExecutor
. If this method returnsnull
,AbstractChannel.doClose()
must be called from the caller thread. (i.e.EventLoop
)
-
-