Class AbstractChannelHandlerContext
- java.lang.Object
-
- io.netty.channel.AbstractChannelHandlerContext
-
- All Implemented Interfaces:
ChannelHandlerContext,ChannelInboundInvoker,ChannelOutboundInvoker,AttributeMap,ResourceLeakHint
- Direct Known Subclasses:
DefaultChannelHandlerContext,DefaultChannelPipeline.HeadContext,DefaultChannelPipeline.TailContext
abstract class AbstractChannelHandlerContext extends java.lang.Object implements ChannelHandlerContext, ResourceLeakHint
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classAbstractChannelHandlerContext.Tasks(package private) static classAbstractChannelHandlerContext.WriteTask
-
Field Summary
Fields Modifier and Type Field Description private static intADD_COMPLETEprivate static intADD_PENDINGChannelHandler.handlerAdded(ChannelHandlerContext)is about to be called.private intexecutionMask(package private) EventExecutorexecutorprivate static java.util.concurrent.atomic.AtomicIntegerFieldUpdater<AbstractChannelHandlerContext>HANDLER_STATE_UPDATERprivate inthandlerStateprivate static intINITprivate AbstractChannelHandlerContext.TasksinvokeTasksprivate static InternalLoggerloggerprivate java.lang.Stringname(package private) AbstractChannelHandlerContextnextprivate booleanorderedprivate DefaultChannelPipelinepipeline(package private) AbstractChannelHandlerContextprevprivate static intREMOVE_COMPLETEprivate ChannelFuturesucceededFuture
-
Constructor Summary
Constructors Constructor Description AbstractChannelHandlerContext(DefaultChannelPipeline pipeline, EventExecutor executor, java.lang.String name, java.lang.Class<? extends ChannelHandler> handlerClass)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ByteBufAllocatoralloc()Return the assignedByteBufAllocatorwhich will be used to allocateByteBufs.<T> Attribute<T>attr(AttributeKey<T> key)Get theAttributefor the givenAttributeKey.ChannelFuturebind(java.net.SocketAddress localAddress)Request to bind to the givenSocketAddressand notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.ChannelFuturebind(java.net.SocketAddress localAddress, ChannelPromise promise)Request to bind to the givenSocketAddressand notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.(package private) voidcallHandlerAdded()(package private) voidcallHandlerRemoved()Channelchannel()Return theChannelwhich is bound to theChannelHandlerContext.ChannelFutureclose()Request to close theChanneland notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.ChannelFutureclose(ChannelPromise promise)Request to close theChanneland notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.ChannelFutureconnect(java.net.SocketAddress remoteAddress)Request to connect to the givenSocketAddressand notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.ChannelFutureconnect(java.net.SocketAddress remoteAddress, ChannelPromise promise)Request to connect to the givenSocketAddressand notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.ChannelFutureconnect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress)Request to connect to the givenSocketAddresswhile bind to the localAddress and notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.ChannelFutureconnect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress, ChannelPromise promise)Request to connect to the givenSocketAddresswhile bind to the localAddress and notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.ChannelFuturederegister()Request to deregister from the previous assignedEventExecutorand notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.ChannelFuturederegister(ChannelPromise promise)Request to deregister from the previous assignedEventExecutorand notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.ChannelFuturedisconnect()Request to disconnect from the remote peer and notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.ChannelFuturedisconnect(ChannelPromise promise)Request to disconnect from the remote peer and notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.EventExecutorexecutor()Returns theEventExecutorwhich is used to execute an arbitrary task.private AbstractChannelHandlerContextfindContextInbound(int mask)private AbstractChannelHandlerContextfindContextOutbound(int mask)ChannelHandlerContextfireChannelActive()AChannelis active now, which means it is connected.ChannelHandlerContextfireChannelInactive()AChannelis inactive now, which means it is closed.ChannelHandlerContextfireChannelRead(java.lang.Object msg)AChannelreceived a message.ChannelHandlerContextfireChannelReadComplete()Triggers anChannelInboundHandler.channelReadComplete(ChannelHandlerContext)event to the nextChannelInboundHandlerin theChannelPipeline.ChannelHandlerContextfireChannelRegistered()ChannelHandlerContextfireChannelUnregistered()ChannelHandlerContextfireChannelWritabilityChanged()Triggers anChannelInboundHandler.channelWritabilityChanged(ChannelHandlerContext)event to the nextChannelInboundHandlerin theChannelPipeline.ChannelHandlerContextfireExceptionCaught(java.lang.Throwable cause)AChannelreceived anThrowablein one of its inbound operations.ChannelHandlerContextfireUserEventTriggered(java.lang.Object event)AChannelreceived an user defined event.ChannelHandlerContextflush()Request to flush all pending messages via this ChannelOutboundInvoker.<T> booleanhasAttr(AttributeKey<T> key)private voidinvokeBind(java.net.SocketAddress localAddress, ChannelPromise promise)private voidinvokeChannelActive()(package private) static voidinvokeChannelActive(AbstractChannelHandlerContext next)private voidinvokeChannelInactive()(package private) static voidinvokeChannelInactive(AbstractChannelHandlerContext next)(package private) static voidinvokeChannelRead(AbstractChannelHandlerContext next, java.lang.Object msg)private voidinvokeChannelRead(java.lang.Object msg)private voidinvokeChannelReadComplete()(package private) static voidinvokeChannelReadComplete(AbstractChannelHandlerContext next)private voidinvokeChannelRegistered()(package private) static voidinvokeChannelRegistered(AbstractChannelHandlerContext next)private voidinvokeChannelUnregistered()(package private) static voidinvokeChannelUnregistered(AbstractChannelHandlerContext next)private voidinvokeChannelWritabilityChanged()(package private) static voidinvokeChannelWritabilityChanged(AbstractChannelHandlerContext next)private voidinvokeClose(ChannelPromise promise)private voidinvokeConnect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress, ChannelPromise promise)private voidinvokeDeregister(ChannelPromise promise)private voidinvokeDisconnect(ChannelPromise promise)(package private) static voidinvokeExceptionCaught(AbstractChannelHandlerContext next, java.lang.Throwable cause)private voidinvokeExceptionCaught(java.lang.Throwable cause)private voidinvokeFlush()private voidinvokeFlush0()private booleaninvokeHandler()Makes best possible effort to detect ifChannelHandler.handlerAdded(ChannelHandlerContext)was called yet.private voidinvokeRead()(package private) static voidinvokeUserEventTriggered(AbstractChannelHandlerContext next, java.lang.Object event)private voidinvokeUserEventTriggered(java.lang.Object event)(package private) voidinvokeWrite(java.lang.Object msg, ChannelPromise promise)private voidinvokeWrite0(java.lang.Object msg, ChannelPromise promise)(package private) voidinvokeWriteAndFlush(java.lang.Object msg, ChannelPromise promise)private booleanisNotValidPromise(ChannelPromise promise, boolean allowVoidPromise)booleanisRemoved()Returntrueif theChannelHandlerwhich belongs to this context was removed from theChannelPipeline.java.lang.Stringname()The unique name of theChannelHandlerContext.The name was used when thenChannelHandlerwas added to theChannelPipeline.ChannelFuturenewFailedFuture(java.lang.Throwable cause)Create a newChannelFuturewhich is marked as failed already.ChannelProgressivePromisenewProgressivePromise()Return an newChannelProgressivePromiseChannelPromisenewPromise()Return a newChannelPromise.ChannelFuturenewSucceededFuture()Create a newChannelFuturewhich is marked as succeeded already.private static voidnotifyOutboundHandlerException(java.lang.Throwable cause, ChannelPromise promise)ChannelPipelinepipeline()Return the assignedChannelPipelineChannelHandlerContextread()Request to Read data from theChannelinto the first inbound buffer, triggers anChannelInboundHandler.channelRead(ChannelHandlerContext, Object)event if data was read, and triggers achannelReadCompleteevent so the handler can decide to continue reading.private static booleansafeExecute(EventExecutor executor, java.lang.Runnable runnable, ChannelPromise promise, java.lang.Object msg, boolean lazy)(package private) booleansetAddComplete()(package private) voidsetAddPending()(package private) voidsetRemoved()private static booleanskipContext(AbstractChannelHandlerContext ctx, EventExecutor currentExecutor, int mask, int onlyMask)java.lang.StringtoHintString()Returns a human-readable message that potentially enables easier resource leak tracking.java.lang.StringtoString()ChannelPromisevoidPromise()Return a special ChannelPromise which can be reused for different operations.ChannelFuturewrite(java.lang.Object msg)Request to write a message via thisChannelHandlerContextthrough theChannelPipeline.private voidwrite(java.lang.Object msg, boolean flush, ChannelPromise promise)ChannelFuturewrite(java.lang.Object msg, ChannelPromise promise)Request to write a message via thisChannelHandlerContextthrough theChannelPipeline.ChannelFuturewriteAndFlush(java.lang.Object msg)Shortcut for callChannelOutboundInvoker.write(Object)andChannelOutboundInvoker.flush().ChannelFuturewriteAndFlush(java.lang.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 Detail
-
logger
private static final InternalLogger logger
-
next
volatile AbstractChannelHandlerContext next
-
prev
volatile AbstractChannelHandlerContext prev
-
HANDLER_STATE_UPDATER
private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<AbstractChannelHandlerContext> HANDLER_STATE_UPDATER
-
ADD_PENDING
private static final int ADD_PENDING
ChannelHandler.handlerAdded(ChannelHandlerContext)is about to be called.- See Also:
- Constant Field Values
-
ADD_COMPLETE
private static final int ADD_COMPLETE
- See Also:
- Constant Field Values
-
REMOVE_COMPLETE
private static final int REMOVE_COMPLETE
- See Also:
- Constant Field Values
-
INIT
private static final int INIT
NeitherChannelHandler.handlerAdded(ChannelHandlerContext)norChannelHandler.handlerRemoved(ChannelHandlerContext)was called.- See Also:
- Constant Field Values
-
pipeline
private final DefaultChannelPipeline pipeline
-
name
private final java.lang.String name
-
ordered
private final boolean ordered
-
executionMask
private final int executionMask
-
executor
final EventExecutor executor
-
succeededFuture
private ChannelFuture succeededFuture
-
invokeTasks
private AbstractChannelHandlerContext.Tasks invokeTasks
-
handlerState
private volatile int handlerState
-
-
Constructor Detail
-
AbstractChannelHandlerContext
AbstractChannelHandlerContext(DefaultChannelPipeline pipeline, EventExecutor executor, java.lang.String name, java.lang.Class<? extends ChannelHandler> handlerClass)
-
-
Method Detail
-
channel
public Channel channel()
Description copied from interface:ChannelHandlerContextReturn theChannelwhich is bound to theChannelHandlerContext.- Specified by:
channelin interfaceChannelHandlerContext
-
pipeline
public ChannelPipeline pipeline()
Description copied from interface:ChannelHandlerContextReturn the assignedChannelPipeline- Specified by:
pipelinein interfaceChannelHandlerContext
-
alloc
public ByteBufAllocator alloc()
Description copied from interface:ChannelHandlerContextReturn the assignedByteBufAllocatorwhich will be used to allocateByteBufs.- Specified by:
allocin interfaceChannelHandlerContext
-
executor
public EventExecutor executor()
Description copied from interface:ChannelHandlerContextReturns theEventExecutorwhich is used to execute an arbitrary task.- Specified by:
executorin interfaceChannelHandlerContext
-
name
public java.lang.String name()
Description copied from interface:ChannelHandlerContextThe unique name of theChannelHandlerContext.The name was used when thenChannelHandlerwas added to theChannelPipeline. This name can also be used to access the registeredChannelHandlerfrom theChannelPipeline.- Specified by:
namein interfaceChannelHandlerContext
-
fireChannelRegistered
public ChannelHandlerContext fireChannelRegistered()
Description copied from interface:ChannelInboundInvokerAChannelwas registered to itsEventLoop. This will result in having theChannelInboundHandler.channelRegistered(ChannelHandlerContext)method called of the nextChannelInboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
fireChannelRegisteredin interfaceChannelHandlerContext- Specified by:
fireChannelRegisteredin interfaceChannelInboundInvoker
-
invokeChannelRegistered
static void invokeChannelRegistered(AbstractChannelHandlerContext next)
-
invokeChannelRegistered
private void invokeChannelRegistered()
-
fireChannelUnregistered
public ChannelHandlerContext fireChannelUnregistered()
Description copied from interface:ChannelInboundInvokerAChannelwas unregistered from itsEventLoop. This will result in having theChannelInboundHandler.channelUnregistered(ChannelHandlerContext)method called of the nextChannelInboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
fireChannelUnregisteredin interfaceChannelHandlerContext- Specified by:
fireChannelUnregisteredin interfaceChannelInboundInvoker
-
invokeChannelUnregistered
static void invokeChannelUnregistered(AbstractChannelHandlerContext next)
-
invokeChannelUnregistered
private void invokeChannelUnregistered()
-
fireChannelActive
public ChannelHandlerContext fireChannelActive()
Description copied from interface:ChannelInboundInvokerAChannelis active now, which means it is connected. This will result in having theChannelInboundHandler.channelActive(ChannelHandlerContext)method called of the nextChannelInboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
fireChannelActivein interfaceChannelHandlerContext- Specified by:
fireChannelActivein interfaceChannelInboundInvoker
-
invokeChannelActive
static void invokeChannelActive(AbstractChannelHandlerContext next)
-
invokeChannelActive
private void invokeChannelActive()
-
fireChannelInactive
public ChannelHandlerContext fireChannelInactive()
Description copied from interface:ChannelInboundInvokerAChannelis inactive now, which means it is closed. This will result in having theChannelInboundHandler.channelInactive(ChannelHandlerContext)method called of the nextChannelInboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
fireChannelInactivein interfaceChannelHandlerContext- Specified by:
fireChannelInactivein interfaceChannelInboundInvoker
-
invokeChannelInactive
static void invokeChannelInactive(AbstractChannelHandlerContext next)
-
invokeChannelInactive
private void invokeChannelInactive()
-
fireExceptionCaught
public ChannelHandlerContext fireExceptionCaught(java.lang.Throwable cause)
Description copied from interface:ChannelInboundInvokerAChannelreceived anThrowablein one of its inbound operations. This will result in having theChannelInboundHandler.exceptionCaught(ChannelHandlerContext, Throwable)method called of the nextChannelInboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
fireExceptionCaughtin interfaceChannelHandlerContext- Specified by:
fireExceptionCaughtin interfaceChannelInboundInvoker
-
invokeExceptionCaught
static void invokeExceptionCaught(AbstractChannelHandlerContext next, java.lang.Throwable cause)
-
invokeExceptionCaught
private void invokeExceptionCaught(java.lang.Throwable cause)
-
fireUserEventTriggered
public ChannelHandlerContext fireUserEventTriggered(java.lang.Object event)
Description copied from interface:ChannelInboundInvokerAChannelreceived an user defined event. This will result in having theChannelInboundHandler.userEventTriggered(ChannelHandlerContext, Object)method called of the nextChannelInboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
fireUserEventTriggeredin interfaceChannelHandlerContext- Specified by:
fireUserEventTriggeredin interfaceChannelInboundInvoker
-
invokeUserEventTriggered
static void invokeUserEventTriggered(AbstractChannelHandlerContext next, java.lang.Object event)
-
invokeUserEventTriggered
private void invokeUserEventTriggered(java.lang.Object event)
-
fireChannelRead
public ChannelHandlerContext fireChannelRead(java.lang.Object msg)
Description copied from interface:ChannelInboundInvokerAChannelreceived a message. This will result in having theChannelInboundHandler.channelRead(ChannelHandlerContext, Object)method called of the nextChannelInboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
fireChannelReadin interfaceChannelHandlerContext- Specified by:
fireChannelReadin interfaceChannelInboundInvoker
-
invokeChannelRead
static void invokeChannelRead(AbstractChannelHandlerContext next, java.lang.Object msg)
-
invokeChannelRead
private void invokeChannelRead(java.lang.Object msg)
-
fireChannelReadComplete
public ChannelHandlerContext fireChannelReadComplete()
Description copied from interface:ChannelInboundInvokerTriggers anChannelInboundHandler.channelReadComplete(ChannelHandlerContext)event to the nextChannelInboundHandlerin theChannelPipeline.- Specified by:
fireChannelReadCompletein interfaceChannelHandlerContext- Specified by:
fireChannelReadCompletein interfaceChannelInboundInvoker
-
invokeChannelReadComplete
static void invokeChannelReadComplete(AbstractChannelHandlerContext next)
-
invokeChannelReadComplete
private void invokeChannelReadComplete()
-
fireChannelWritabilityChanged
public ChannelHandlerContext fireChannelWritabilityChanged()
Description copied from interface:ChannelInboundInvokerTriggers anChannelInboundHandler.channelWritabilityChanged(ChannelHandlerContext)event to the nextChannelInboundHandlerin theChannelPipeline.- Specified by:
fireChannelWritabilityChangedin interfaceChannelHandlerContext- Specified by:
fireChannelWritabilityChangedin interfaceChannelInboundInvoker
-
invokeChannelWritabilityChanged
static void invokeChannelWritabilityChanged(AbstractChannelHandlerContext next)
-
invokeChannelWritabilityChanged
private void invokeChannelWritabilityChanged()
-
bind
public ChannelFuture bind(java.net.SocketAddress localAddress)
Description copied from interface:ChannelOutboundInvokerRequest to bind to the givenSocketAddressand notify theChannelFutureonce 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 nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
bindin interfaceChannelOutboundInvoker
-
connect
public ChannelFuture connect(java.net.SocketAddress remoteAddress)
Description copied from interface:ChannelOutboundInvokerRequest to connect to the givenSocketAddressand notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error.If the connection fails because of a connection timeout, the
ChannelFuturewill get failed with aConnectTimeoutException. If it fails because of connection refused aConnectExceptionwill be used.This will result in having the
ChannelOutboundHandler.connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)method called of the nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
connectin interfaceChannelOutboundInvoker
-
connect
public ChannelFuture connect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress)
Description copied from interface:ChannelOutboundInvokerRequest to connect to the givenSocketAddresswhile bind to the localAddress and notify theChannelFutureonce 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 nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
connectin interfaceChannelOutboundInvoker
-
disconnect
public ChannelFuture disconnect()
Description copied from interface:ChannelOutboundInvokerRequest to disconnect from the remote peer and notify theChannelFutureonce 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 nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
disconnectin interfaceChannelOutboundInvoker
-
close
public ChannelFuture close()
Description copied from interface:ChannelOutboundInvokerRequest to close theChanneland notify theChannelFutureonce 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 nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
closein interfaceChannelOutboundInvoker
-
deregister
public ChannelFuture deregister()
Description copied from interface:ChannelOutboundInvokerRequest to deregister from the previous assignedEventExecutorand notify theChannelFutureonce 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 nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
deregisterin interfaceChannelOutboundInvoker
-
bind
public ChannelFuture bind(java.net.SocketAddress localAddress, ChannelPromise promise)
Description copied from interface:ChannelOutboundInvokerRequest to bind to the givenSocketAddressand notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error. The givenChannelPromisewill be notified.This will result in having the
ChannelOutboundHandler.bind(ChannelHandlerContext, SocketAddress, ChannelPromise)method called of the nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
bindin interfaceChannelOutboundInvoker
-
invokeBind
private void invokeBind(java.net.SocketAddress localAddress, ChannelPromise promise)
-
connect
public ChannelFuture connect(java.net.SocketAddress remoteAddress, ChannelPromise promise)
Description copied from interface:ChannelOutboundInvokerRequest to connect to the givenSocketAddressand notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error. The givenChannelFuturewill be notified.If the connection fails because of a connection timeout, the
ChannelFuturewill get failed with aConnectTimeoutException. If it fails because of connection refused aConnectExceptionwill be used.This will result in having the
ChannelOutboundHandler.connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)method called of the nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
connectin interfaceChannelOutboundInvoker
-
connect
public ChannelFuture connect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress, ChannelPromise promise)
Description copied from interface:ChannelOutboundInvokerRequest to connect to the givenSocketAddresswhile bind to the localAddress and notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error. The givenChannelPromisewill be notified and also returned.This will result in having the
ChannelOutboundHandler.connect(ChannelHandlerContext, SocketAddress, SocketAddress, ChannelPromise)method called of the nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
connectin interfaceChannelOutboundInvoker
-
invokeConnect
private void invokeConnect(java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress, ChannelPromise promise)
-
disconnect
public ChannelFuture disconnect(ChannelPromise promise)
Description copied from interface:ChannelOutboundInvokerRequest to disconnect from the remote peer and notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error. The givenChannelPromisewill be notified.This will result in having the
ChannelOutboundHandler.disconnect(ChannelHandlerContext, ChannelPromise)method called of the nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
disconnectin interfaceChannelOutboundInvoker
-
invokeDisconnect
private void invokeDisconnect(ChannelPromise promise)
-
close
public ChannelFuture close(ChannelPromise promise)
Description copied from interface:ChannelOutboundInvokerRequest to close theChanneland notify theChannelFutureonce 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 givenChannelPromisewill be notified.This will result in having the
ChannelOutboundHandler.close(ChannelHandlerContext, ChannelPromise)method called of the nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
closein interfaceChannelOutboundInvoker
-
invokeClose
private void invokeClose(ChannelPromise promise)
-
deregister
public ChannelFuture deregister(ChannelPromise promise)
Description copied from interface:ChannelOutboundInvokerRequest to deregister from the previous assignedEventExecutorand notify theChannelFutureonce the operation completes, either because the operation was successful or because of an error. The givenChannelPromisewill be notified.This will result in having the
ChannelOutboundHandler.deregister(ChannelHandlerContext, ChannelPromise)method called of the nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
deregisterin interfaceChannelOutboundInvoker
-
invokeDeregister
private void invokeDeregister(ChannelPromise promise)
-
read
public ChannelHandlerContext read()
Description copied from interface:ChannelOutboundInvokerRequest to Read data from theChannelinto the first inbound buffer, triggers anChannelInboundHandler.channelRead(ChannelHandlerContext, Object)event if data was read, and triggers achannelReadCompleteevent 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 nextChannelOutboundHandlercontained in theChannelPipelineof theChannel.- Specified by:
readin interfaceChannelHandlerContext- Specified by:
readin interfaceChannelOutboundInvoker
-
invokeRead
private void invokeRead()
-
write
public ChannelFuture write(java.lang.Object msg)
Description copied from interface:ChannelOutboundInvokerRequest to write a message via thisChannelHandlerContextthrough 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:
writein interfaceChannelOutboundInvoker
-
write
public ChannelFuture write(java.lang.Object msg, ChannelPromise promise)
Description copied from interface:ChannelOutboundInvokerRequest to write a message via thisChannelHandlerContextthrough 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:
writein interfaceChannelOutboundInvoker
-
invokeWrite
void invokeWrite(java.lang.Object msg, ChannelPromise promise)
-
invokeWrite0
private void invokeWrite0(java.lang.Object msg, ChannelPromise promise)
-
flush
public ChannelHandlerContext flush()
Description copied from interface:ChannelOutboundInvokerRequest to flush all pending messages via this ChannelOutboundInvoker.- Specified by:
flushin interfaceChannelHandlerContext- Specified by:
flushin interfaceChannelOutboundInvoker
-
invokeFlush
private void invokeFlush()
-
invokeFlush0
private void invokeFlush0()
-
writeAndFlush
public ChannelFuture writeAndFlush(java.lang.Object msg, ChannelPromise promise)
Description copied from interface:ChannelOutboundInvokerShortcut for callChannelOutboundInvoker.write(Object, ChannelPromise)andChannelOutboundInvoker.flush().- Specified by:
writeAndFlushin interfaceChannelOutboundInvoker
-
invokeWriteAndFlush
void invokeWriteAndFlush(java.lang.Object msg, ChannelPromise promise)
-
write
private void write(java.lang.Object msg, boolean flush, ChannelPromise promise)
-
writeAndFlush
public ChannelFuture writeAndFlush(java.lang.Object msg)
Description copied from interface:ChannelOutboundInvokerShortcut for callChannelOutboundInvoker.write(Object)andChannelOutboundInvoker.flush().- Specified by:
writeAndFlushin interfaceChannelOutboundInvoker
-
notifyOutboundHandlerException
private static void notifyOutboundHandlerException(java.lang.Throwable cause, ChannelPromise promise)
-
newPromise
public ChannelPromise newPromise()
Description copied from interface:ChannelOutboundInvokerReturn a newChannelPromise.- Specified by:
newPromisein interfaceChannelOutboundInvoker
-
newProgressivePromise
public ChannelProgressivePromise newProgressivePromise()
Description copied from interface:ChannelOutboundInvokerReturn an newChannelProgressivePromise- Specified by:
newProgressivePromisein interfaceChannelOutboundInvoker
-
newSucceededFuture
public ChannelFuture newSucceededFuture()
Description copied from interface:ChannelOutboundInvokerCreate a newChannelFuturewhich is marked as succeeded already. SoFuture.isSuccess()will returntrue. AllFutureListeneradded to it will be notified directly. Also every call of blocking methods will just return without blocking.- Specified by:
newSucceededFuturein interfaceChannelOutboundInvoker
-
newFailedFuture
public ChannelFuture newFailedFuture(java.lang.Throwable cause)
Description copied from interface:ChannelOutboundInvokerCreate a newChannelFuturewhich is marked as failed already. SoFuture.isSuccess()will returnfalse. AllFutureListeneradded to it will be notified directly. Also every call of blocking methods will just return without blocking.- Specified by:
newFailedFuturein interfaceChannelOutboundInvoker
-
isNotValidPromise
private boolean isNotValidPromise(ChannelPromise promise, boolean allowVoidPromise)
-
findContextInbound
private AbstractChannelHandlerContext findContextInbound(int mask)
-
findContextOutbound
private AbstractChannelHandlerContext findContextOutbound(int mask)
-
skipContext
private static boolean skipContext(AbstractChannelHandlerContext ctx, EventExecutor currentExecutor, int mask, int onlyMask)
-
voidPromise
public ChannelPromise voidPromise()
Description copied from interface:ChannelOutboundInvokerReturn 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!ChannelPromisewill 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:
voidPromisein interfaceChannelOutboundInvoker
-
setRemoved
final void setRemoved()
-
setAddComplete
final boolean setAddComplete()
-
setAddPending
final void setAddPending()
-
callHandlerAdded
final void callHandlerAdded() throws java.lang.Exception- Throws:
java.lang.Exception
-
callHandlerRemoved
final void callHandlerRemoved() throws java.lang.Exception- Throws:
java.lang.Exception
-
invokeHandler
private boolean invokeHandler()
Makes best possible effort to detect ifChannelHandler.handlerAdded(ChannelHandlerContext)was called yet. If not returnfalseand if called or could not detect returntrue. If this method returnsfalsewe will not invoke theChannelHandlerbut just forward the event. This is needed asDefaultChannelPipelinemay already put theChannelHandlerin the linked-list but not calledChannelHandler.handlerAdded(ChannelHandlerContext).
-
isRemoved
public boolean isRemoved()
Description copied from interface:ChannelHandlerContextReturntrueif theChannelHandlerwhich belongs to this context was removed from theChannelPipeline. Note that this method is only meant to be called from with in theEventLoop.- Specified by:
isRemovedin interfaceChannelHandlerContext
-
attr
public <T> Attribute<T> attr(AttributeKey<T> key)
Description copied from interface:AttributeMapGet theAttributefor the givenAttributeKey. This method will never return null, but may return anAttributewhich does not have a value set yet.- Specified by:
attrin interfaceAttributeMap- Specified by:
attrin interfaceChannelHandlerContext
-
hasAttr
public <T> boolean hasAttr(AttributeKey<T> key)
Description copied from interface:AttributeMap- Specified by:
hasAttrin interfaceAttributeMap- Specified by:
hasAttrin interfaceChannelHandlerContext
-
safeExecute
private static boolean safeExecute(EventExecutor executor, java.lang.Runnable runnable, ChannelPromise promise, java.lang.Object msg, boolean lazy)
-
toHintString
public java.lang.String toHintString()
Description copied from interface:ResourceLeakHintReturns a human-readable message that potentially enables easier resource leak tracking.- Specified by:
toHintStringin interfaceResourceLeakHint
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-