Class AbstractChannelHandlerContext
- All Implemented Interfaces:
ChannelHandlerContext
,ChannelInboundInvoker
,ChannelOutboundInvoker
,AttributeMap
,ResourceLeakHint
- Direct Known Subclasses:
DefaultChannelHandlerContext
,DefaultChannelPipeline.HeadContext
,DefaultChannelPipeline.TailContext
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class
(package private) static final class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final int
private static final int
ChannelHandler.handlerAdded(ChannelHandlerContext)
is about to be called.private final int
(package private) final EventExecutor
private static final AtomicIntegerFieldUpdater
<AbstractChannelHandlerContext> private int
private static final int
private static final InternalLogger
private final String
(package private) AbstractChannelHandlerContext
private final boolean
private final DefaultChannelPipeline
(package private) AbstractChannelHandlerContext
private static final int
private ChannelFuture
-
Constructor Summary
ConstructorsConstructorDescriptionAbstractChannelHandlerContext
(DefaultChannelPipeline pipeline, EventExecutor executor, String name, Class<? extends ChannelHandler> handlerClass) -
Method Summary
Modifier and TypeMethodDescriptionalloc()
Return the assignedByteBufAllocator
which will be used to allocateByteBuf
s.<T> Attribute
<T> attr
(AttributeKey<T> key) Get theAttribute
for the givenAttributeKey
.bind
(SocketAddress localAddress) Request to bind to the givenSocketAddress
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.bind
(SocketAddress localAddress, ChannelPromise promise) Request to bind to the givenSocketAddress
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.(package private) final void
(package private) final void
channel()
Return theChannel
which is bound to theChannelHandlerContext
.close()
Request to close theChannel
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.close
(ChannelPromise promise) Request to close theChannel
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.connect
(SocketAddress remoteAddress) Request to connect to the givenSocketAddress
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.connect
(SocketAddress remoteAddress, ChannelPromise promise) Request to connect to the givenSocketAddress
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.connect
(SocketAddress remoteAddress, SocketAddress localAddress) Request to connect to the givenSocketAddress
while bind to the localAddress and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.connect
(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise) Request to connect to the givenSocketAddress
while bind to the localAddress and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.Request to deregister from the previous assignedEventExecutor
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.deregister
(ChannelPromise promise) Request to deregister from the previous assignedEventExecutor
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.Request to disconnect from the remote peer and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.disconnect
(ChannelPromise promise) Request to disconnect from the remote peer and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.executor()
Returns theEventExecutor
which is used to execute an arbitrary task.private AbstractChannelHandlerContext
findContextInbound
(int mask) private AbstractChannelHandlerContext
findContextOutbound
(int mask) AChannel
is active now, which means it is connected.AChannel
is inactive now, which means it is closed.fireChannelRead
(Object msg) AChannel
received a message.Triggers anChannelInboundHandler.channelReadComplete(ChannelHandlerContext)
event to the nextChannelInboundHandler
in theChannelPipeline
.Triggers anChannelInboundHandler.channelWritabilityChanged(ChannelHandlerContext)
event to the nextChannelInboundHandler
in theChannelPipeline
.fireExceptionCaught
(Throwable cause) fireUserEventTriggered
(Object event) AChannel
received an user defined event.flush()
Request to flush all pending messages via this ChannelOutboundInvoker.<T> boolean
hasAttr
(AttributeKey<T> key) private void
invokeBind
(SocketAddress localAddress, ChannelPromise promise) private void
(package private) static void
private void
(package private) static void
(package private) static void
invokeChannelRead
(AbstractChannelHandlerContext next, Object msg) private void
invokeChannelRead
(Object msg) private void
(package private) static void
private void
(package private) static void
private void
(package private) static void
private void
(package private) static void
private void
invokeClose
(ChannelPromise promise) private void
invokeConnect
(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise) private void
invokeDeregister
(ChannelPromise promise) private void
invokeDisconnect
(ChannelPromise promise) (package private) static void
invokeExceptionCaught
(AbstractChannelHandlerContext next, Throwable cause) private void
invokeExceptionCaught
(Throwable cause) private void
private void
private boolean
Makes best possible effort to detect ifChannelHandler.handlerAdded(ChannelHandlerContext)
was called yet.private void
(package private) static void
invokeUserEventTriggered
(AbstractChannelHandlerContext next, Object event) private void
invokeUserEventTriggered
(Object event) (package private) void
invokeWrite
(Object msg, ChannelPromise promise) private void
invokeWrite0
(Object msg, ChannelPromise promise) (package private) void
invokeWriteAndFlush
(Object msg, ChannelPromise promise) private boolean
isNotValidPromise
(ChannelPromise promise, boolean allowVoidPromise) boolean
Returntrue
if theChannelHandler
which belongs to this context was removed from theChannelPipeline
.name()
The unique name of theChannelHandlerContext
.The name was used when thenChannelHandler
was added to theChannelPipeline
.newFailedFuture
(Throwable cause) Create a newChannelFuture
which is marked as failed already.Return an newChannelProgressivePromise
Return a newChannelPromise
.Create a newChannelFuture
which is marked as succeeded already.private static void
notifyOutboundHandlerException
(Throwable cause, ChannelPromise promise) pipeline()
Return the assignedChannelPipeline
read()
Request to Read data from theChannel
into the first inbound buffer, triggers anChannelInboundHandler.channelRead(ChannelHandlerContext, Object)
event if data was read, and triggers achannelReadComplete
event so the handler can decide to continue reading.private static boolean
safeExecute
(EventExecutor executor, Runnable runnable, ChannelPromise promise, Object msg, boolean lazy) (package private) final boolean
(package private) final void
(package private) final void
private static boolean
skipContext
(AbstractChannelHandlerContext ctx, EventExecutor currentExecutor, int mask, int onlyMask) Returns a human-readable message that potentially enables easier resource leak tracking.toString()
Return a special ChannelPromise which can be reused for different operations.Request to write a message via thisChannelHandlerContext
through theChannelPipeline
.private void
write
(Object msg, boolean flush, ChannelPromise promise) write
(Object msg, ChannelPromise promise) Request to write a message via thisChannelHandlerContext
through theChannelPipeline
.writeAndFlush
(Object msg) Shortcut for callChannelOutboundInvoker.write(Object)
andChannelOutboundInvoker.flush()
.writeAndFlush
(Object msg, ChannelPromise promise) Shortcut for callChannelOutboundInvoker.write(Object, ChannelPromise)
andChannelOutboundInvoker.flush()
.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface io.netty.channel.ChannelHandlerContext
handler
-
Field Details
-
logger
-
next
-
prev
-
HANDLER_STATE_UPDATER
-
ADD_PENDING
private static final int ADD_PENDINGChannelHandler.handlerAdded(ChannelHandlerContext)
is about to be called.- See Also:
-
ADD_COMPLETE
private static final int ADD_COMPLETE- See Also:
-
REMOVE_COMPLETE
private static final int REMOVE_COMPLETE- See Also:
-
INIT
private static final int INITNeitherChannelHandler.handlerAdded(ChannelHandlerContext)
norChannelHandler.handlerRemoved(ChannelHandlerContext)
was called.- See Also:
-
pipeline
-
name
-
ordered
private final boolean ordered -
executionMask
private final int executionMask -
executor
-
succeededFuture
-
invokeTasks
-
handlerState
private volatile int handlerState
-
-
Constructor Details
-
AbstractChannelHandlerContext
AbstractChannelHandlerContext(DefaultChannelPipeline pipeline, EventExecutor executor, String name, Class<? extends ChannelHandler> handlerClass)
-
-
Method Details
-
channel
Description copied from interface:ChannelHandlerContext
Return theChannel
which is bound to theChannelHandlerContext
.- Specified by:
channel
in interfaceChannelHandlerContext
-
pipeline
Description copied from interface:ChannelHandlerContext
Return the assignedChannelPipeline
- Specified by:
pipeline
in interfaceChannelHandlerContext
-
alloc
Description copied from interface:ChannelHandlerContext
Return the assignedByteBufAllocator
which will be used to allocateByteBuf
s.- Specified by:
alloc
in interfaceChannelHandlerContext
-
executor
Description copied from interface:ChannelHandlerContext
Returns theEventExecutor
which is used to execute an arbitrary task.- Specified by:
executor
in interfaceChannelHandlerContext
-
name
Description copied from interface:ChannelHandlerContext
The unique name of theChannelHandlerContext
.The name was used when thenChannelHandler
was added to theChannelPipeline
. This name can also be used to access the registeredChannelHandler
from theChannelPipeline
.- Specified by:
name
in interfaceChannelHandlerContext
-
fireChannelRegistered
Description copied from interface:ChannelInboundInvoker
AChannel
was registered to itsEventLoop
. This will result in having theChannelInboundHandler.channelRegistered(ChannelHandlerContext)
method called of the nextChannelInboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
fireChannelRegistered
in interfaceChannelHandlerContext
- Specified by:
fireChannelRegistered
in interfaceChannelInboundInvoker
-
invokeChannelRegistered
-
invokeChannelRegistered
private void invokeChannelRegistered() -
fireChannelUnregistered
Description copied from interface:ChannelInboundInvoker
AChannel
was unregistered from itsEventLoop
. This will result in having theChannelInboundHandler.channelUnregistered(ChannelHandlerContext)
method called of the nextChannelInboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
fireChannelUnregistered
in interfaceChannelHandlerContext
- Specified by:
fireChannelUnregistered
in interfaceChannelInboundInvoker
-
invokeChannelUnregistered
-
invokeChannelUnregistered
private void invokeChannelUnregistered() -
fireChannelActive
Description copied from interface:ChannelInboundInvoker
AChannel
is active now, which means it is connected. This will result in having theChannelInboundHandler.channelActive(ChannelHandlerContext)
method called of the nextChannelInboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
fireChannelActive
in interfaceChannelHandlerContext
- Specified by:
fireChannelActive
in interfaceChannelInboundInvoker
-
invokeChannelActive
-
invokeChannelActive
private void invokeChannelActive() -
fireChannelInactive
Description copied from interface:ChannelInboundInvoker
AChannel
is inactive now, which means it is closed. This will result in having theChannelInboundHandler.channelInactive(ChannelHandlerContext)
method called of the nextChannelInboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
fireChannelInactive
in interfaceChannelHandlerContext
- Specified by:
fireChannelInactive
in interfaceChannelInboundInvoker
-
invokeChannelInactive
-
invokeChannelInactive
private void invokeChannelInactive() -
fireExceptionCaught
Description copied from interface:ChannelInboundInvoker
AChannel
received anThrowable
in one of its inbound operations. This will result in having theChannelInboundHandler.exceptionCaught(ChannelHandlerContext, Throwable)
method called of the nextChannelInboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
fireExceptionCaught
in interfaceChannelHandlerContext
- Specified by:
fireExceptionCaught
in interfaceChannelInboundInvoker
-
invokeExceptionCaught
-
invokeExceptionCaught
-
fireUserEventTriggered
Description copied from interface:ChannelInboundInvoker
AChannel
received an user defined event. This will result in having theChannelInboundHandler.userEventTriggered(ChannelHandlerContext, Object)
method called of the nextChannelInboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
fireUserEventTriggered
in interfaceChannelHandlerContext
- Specified by:
fireUserEventTriggered
in interfaceChannelInboundInvoker
-
invokeUserEventTriggered
-
invokeUserEventTriggered
-
fireChannelRead
Description copied from interface:ChannelInboundInvoker
AChannel
received a message. This will result in having theChannelInboundHandler.channelRead(ChannelHandlerContext, Object)
method called of the nextChannelInboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
fireChannelRead
in interfaceChannelHandlerContext
- Specified by:
fireChannelRead
in interfaceChannelInboundInvoker
-
invokeChannelRead
-
invokeChannelRead
-
fireChannelReadComplete
Description copied from interface:ChannelInboundInvoker
Triggers anChannelInboundHandler.channelReadComplete(ChannelHandlerContext)
event to the nextChannelInboundHandler
in theChannelPipeline
.- Specified by:
fireChannelReadComplete
in interfaceChannelHandlerContext
- Specified by:
fireChannelReadComplete
in interfaceChannelInboundInvoker
-
invokeChannelReadComplete
-
invokeChannelReadComplete
private void invokeChannelReadComplete() -
fireChannelWritabilityChanged
Description copied from interface:ChannelInboundInvoker
Triggers anChannelInboundHandler.channelWritabilityChanged(ChannelHandlerContext)
event to the nextChannelInboundHandler
in theChannelPipeline
.- Specified by:
fireChannelWritabilityChanged
in interfaceChannelHandlerContext
- Specified by:
fireChannelWritabilityChanged
in interfaceChannelInboundInvoker
-
invokeChannelWritabilityChanged
-
invokeChannelWritabilityChanged
private void invokeChannelWritabilityChanged() -
bind
Description copied from interface:ChannelOutboundInvoker
Request to bind to the givenSocketAddress
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.This will result in having the
ChannelOutboundHandler.bind(ChannelHandlerContext, SocketAddress, ChannelPromise)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
bind
in interfaceChannelOutboundInvoker
-
connect
Description copied from interface:ChannelOutboundInvoker
Request to connect to the givenSocketAddress
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.If the connection fails because of a connection timeout, the
ChannelFuture
will get failed with aConnectTimeoutException
. If it fails because of connection refused aConnectException
will be used.This will result in having the
ChannelOutboundHandler.connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
connect
in interfaceChannelOutboundInvoker
-
connect
Description copied from interface:ChannelOutboundInvoker
Request to connect to the givenSocketAddress
while bind to the localAddress and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.This will result in having the
ChannelOutboundHandler.connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
connect
in interfaceChannelOutboundInvoker
-
disconnect
Description copied from interface:ChannelOutboundInvoker
Request to disconnect from the remote peer and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.This will result in having the
ChannelOutboundHandler.disconnect(ChannelHandlerContext, ChannelPromise)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
disconnect
in interfaceChannelOutboundInvoker
-
close
Description copied from interface:ChannelOutboundInvoker
Request to close theChannel
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error. After it is closed it is not possible to reuse it again.This will result in having the
ChannelOutboundHandler.close(ChannelHandlerContext, ChannelPromise)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
close
in interfaceChannelOutboundInvoker
-
deregister
Description copied from interface:ChannelOutboundInvoker
Request to deregister from the previous assignedEventExecutor
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error.This will result in having the
ChannelOutboundHandler.deregister(ChannelHandlerContext, ChannelPromise)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
deregister
in interfaceChannelOutboundInvoker
-
bind
Description copied from interface:ChannelOutboundInvoker
Request to bind to the givenSocketAddress
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error. The givenChannelPromise
will be notified.This will result in having the
ChannelOutboundHandler.bind(ChannelHandlerContext, SocketAddress, ChannelPromise)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
bind
in interfaceChannelOutboundInvoker
-
invokeBind
-
connect
Description copied from interface:ChannelOutboundInvoker
Request to connect to the givenSocketAddress
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error. The givenChannelFuture
will be notified.If the connection fails because of a connection timeout, the
ChannelFuture
will get failed with aConnectTimeoutException
. If it fails because of connection refused aConnectException
will be used.This will result in having the
ChannelOutboundHandler.connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
connect
in interfaceChannelOutboundInvoker
-
connect
public ChannelFuture connect(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise) Description copied from interface:ChannelOutboundInvoker
Request to connect to the givenSocketAddress
while bind to the localAddress and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error. The givenChannelPromise
will be notified and also returned.This will result in having the
ChannelOutboundHandler.connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
connect
in interfaceChannelOutboundInvoker
-
invokeConnect
private void invokeConnect(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise) -
disconnect
Description copied from interface:ChannelOutboundInvoker
Request to disconnect from the remote peer and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error. The givenChannelPromise
will be notified.This will result in having the
ChannelOutboundHandler.disconnect(ChannelHandlerContext, ChannelPromise)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
disconnect
in interfaceChannelOutboundInvoker
-
invokeDisconnect
-
close
Description copied from interface:ChannelOutboundInvoker
Request to close theChannel
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error. After it is closed it is not possible to reuse it again. The givenChannelPromise
will be notified.This will result in having the
ChannelOutboundHandler.close(ChannelHandlerContext, ChannelPromise)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
close
in interfaceChannelOutboundInvoker
-
invokeClose
-
deregister
Description copied from interface:ChannelOutboundInvoker
Request to deregister from the previous assignedEventExecutor
and notify theChannelFuture
once the operation completes, either because the operation was successful or because of an error. The givenChannelPromise
will be notified.This will result in having the
ChannelOutboundHandler.deregister(ChannelHandlerContext, ChannelPromise)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
deregister
in interfaceChannelOutboundInvoker
-
invokeDeregister
-
read
Description copied from interface:ChannelOutboundInvoker
Request to Read data from theChannel
into the first inbound buffer, triggers anChannelInboundHandler.channelRead(ChannelHandlerContext, Object)
event if data was read, and triggers achannelReadComplete
event so the handler can decide to continue reading. If there's a pending read operation already, this method does nothing.This will result in having the
ChannelOutboundHandler.read(ChannelHandlerContext)
method called of the nextChannelOutboundHandler
contained in theChannelPipeline
of theChannel
.- Specified by:
read
in interfaceChannelHandlerContext
- Specified by:
read
in interfaceChannelOutboundInvoker
-
invokeRead
private void invokeRead() -
write
Description copied from interface:ChannelOutboundInvoker
Request to write a message via thisChannelHandlerContext
through theChannelPipeline
. This method will not request to actual flush, so be sure to callChannelOutboundInvoker.flush()
once you want to request to flush all pending data to the actual transport.- Specified by:
write
in interfaceChannelOutboundInvoker
-
write
Description copied from interface:ChannelOutboundInvoker
Request to write a message via thisChannelHandlerContext
through theChannelPipeline
. This method will not request to actual flush, so be sure to callChannelOutboundInvoker.flush()
once you want to request to flush all pending data to the actual transport.- Specified by:
write
in interfaceChannelOutboundInvoker
-
invokeWrite
-
invokeWrite0
-
flush
Description copied from interface:ChannelOutboundInvoker
Request to flush all pending messages via this ChannelOutboundInvoker.- Specified by:
flush
in interfaceChannelHandlerContext
- Specified by:
flush
in interfaceChannelOutboundInvoker
-
invokeFlush
private void invokeFlush() -
invokeFlush0
private void invokeFlush0() -
writeAndFlush
Description copied from interface:ChannelOutboundInvoker
Shortcut for callChannelOutboundInvoker.write(Object, ChannelPromise)
andChannelOutboundInvoker.flush()
.- Specified by:
writeAndFlush
in interfaceChannelOutboundInvoker
-
invokeWriteAndFlush
-
write
-
writeAndFlush
Description copied from interface:ChannelOutboundInvoker
Shortcut for callChannelOutboundInvoker.write(Object)
andChannelOutboundInvoker.flush()
.- Specified by:
writeAndFlush
in interfaceChannelOutboundInvoker
-
notifyOutboundHandlerException
-
newPromise
Description copied from interface:ChannelOutboundInvoker
Return a newChannelPromise
.- Specified by:
newPromise
in interfaceChannelOutboundInvoker
-
newProgressivePromise
Description copied from interface:ChannelOutboundInvoker
Return an newChannelProgressivePromise
- Specified by:
newProgressivePromise
in interfaceChannelOutboundInvoker
-
newSucceededFuture
Description copied from interface:ChannelOutboundInvoker
Create a newChannelFuture
which is marked as succeeded already. SoFuture.isSuccess()
will returntrue
. AllFutureListener
added to it will be notified directly. Also every call of blocking methods will just return without blocking.- Specified by:
newSucceededFuture
in interfaceChannelOutboundInvoker
-
newFailedFuture
Description copied from interface:ChannelOutboundInvoker
Create a newChannelFuture
which is marked as failed already. SoFuture.isSuccess()
will returnfalse
. AllFutureListener
added to it will be notified directly. Also every call of blocking methods will just return without blocking.- Specified by:
newFailedFuture
in interfaceChannelOutboundInvoker
-
isNotValidPromise
-
findContextInbound
-
findContextOutbound
-
skipContext
private static boolean skipContext(AbstractChannelHandlerContext ctx, EventExecutor currentExecutor, int mask, int onlyMask) -
voidPromise
Description copied from interface:ChannelOutboundInvoker
Return a special ChannelPromise which can be reused for different operations.It's only supported to use it for
ChannelOutboundInvoker.write(Object, ChannelPromise)
.Be aware that the returned
Be aware this is an expert feature and should be used with care!ChannelPromise
will not support most operations and should only be used if you want to save an object allocation for every write operation. You will not be able to detect if the operation was complete, only if it failed as the implementation will callChannelPipeline.fireExceptionCaught(Throwable)
in this case.- Specified by:
voidPromise
in interfaceChannelOutboundInvoker
-
setRemoved
final void setRemoved() -
setAddComplete
final boolean setAddComplete() -
setAddPending
final void setAddPending() -
callHandlerAdded
- Throws:
Exception
-
callHandlerRemoved
- Throws:
Exception
-
invokeHandler
private boolean invokeHandler()Makes best possible effort to detect ifChannelHandler.handlerAdded(ChannelHandlerContext)
was called yet. If not returnfalse
and if called or could not detect returntrue
. If this method returnsfalse
we will not invoke theChannelHandler
but just forward the event. This is needed asDefaultChannelPipeline
may already put theChannelHandler
in the linked-list but not calledChannelHandler.handlerAdded(ChannelHandlerContext)
. -
isRemoved
public boolean isRemoved()Description copied from interface:ChannelHandlerContext
Returntrue
if theChannelHandler
which belongs to this context was removed from theChannelPipeline
. Note that this method is only meant to be called from with in theEventLoop
.- Specified by:
isRemoved
in interfaceChannelHandlerContext
-
attr
Description copied from interface:AttributeMap
Get theAttribute
for the givenAttributeKey
. This method will never return null, but may return anAttribute
which does not have a value set yet.- Specified by:
attr
in interfaceAttributeMap
- Specified by:
attr
in interfaceChannelHandlerContext
-
hasAttr
Description copied from interface:AttributeMap
- Specified by:
hasAttr
in interfaceAttributeMap
- Specified by:
hasAttr
in interfaceChannelHandlerContext
-
safeExecute
private static boolean safeExecute(EventExecutor executor, Runnable runnable, ChannelPromise promise, Object msg, boolean lazy) -
toHintString
Description copied from interface:ResourceLeakHint
Returns a human-readable message that potentially enables easier resource leak tracking.- Specified by:
toHintString
in interfaceResourceLeakHint
-
toString
-