Interface ChannelEvent
-
- All Known Subinterfaces:
ChannelStateEvent,ChildChannelStateEvent,ExceptionEvent,IdleStateEvent,MessageEvent,WriteCompletionEvent
- All Known Implementing Classes:
DefaultChildChannelStateEvent,DefaultExceptionEvent,DefaultIdleStateEvent,DefaultWriteCompletionEvent,DownstreamChannelStateEvent,DownstreamMessageEvent,UpstreamChannelStateEvent,UpstreamMessageEvent
public interface ChannelEventAn I/O event or I/O request associated with aChannel.A
ChannelEventis handled by a series ofChannelHandlers in aChannelPipeline.Upstream events and downstream events, and their interpretation
Every event is either an upstream event or a downstream event. If an event flows forward from the first handler to the last handler in a
ChannelPipeline, we call it an upstream event and say "an event goes upstream." If an event flows backward from the last handler to the first handler in aChannelPipeline, we call it a downstream event and say "an event goes downstream." (Please refer to the diagram inChannelPipelinefor more explanation.)When your server receives a message from a client, the event associated with the received message is an upstream event. When your server sends a message or reply to the client, the event associated with the write request is a downstream event. The same rule applies for the client side. If your client sent a request to the server, it means your client triggered a downstream event. If your client received a response from the server, it means your client will be notified with an upstream event. Upstream events are often the result of inbound operations such as
InputStream.read(byte[]), and downstream events are the request for outbound operations such asOutputStream.write(byte[]),Socket.connect(SocketAddress), andSocket.close().Upstream events
Event name Event type and condition Meaning "messageReceived"MessageEventa message object (e.g. ChannelBuffer) was received from a remote peer"exceptionCaught"ExceptionEventan exception was raised by an I/O thread or a ChannelHandler"channelOpen"ChannelStateEvent
(state =OPEN, value =true)a Channelis open, but not bound nor connectedBe aware that this event is fired from within the I/O thread. You should never execute any heavy operation in there as it will block the dispatching to other workers! "channelClosed"ChannelStateEvent
(state =OPEN, value =false)a Channelwas closed and all its related resources were released"channelBound"ChannelStateEvent
(state =BOUND, value =SocketAddress)a Channelis open and bound to a local address, but not connected.Be aware that this event is fired from within the I/O thread. You should never execute any heavy operation in there as it will block the dispatching to other workers! "channelUnbound"ChannelStateEvent
(state =BOUND, value =null)a Channelwas unbound from the current local address"channelConnected"ChannelStateEvent
(state =CONNECTED, value =SocketAddress)a Channelis open, bound to a local address, and connected to a remote addressBe aware that this event is fired from within the I/O thread. You should never execute any heavy operation in there as it will block the dispatching to other workers! "writeComplete"WriteCompletionEventsomething has been written to a remote peer "channelDisconnected"ChannelStateEvent
(state =CONNECTED, value =null)a Channelwas disconnected from its remote peer"channelInterestChanged"ChannelStateEvent
(state =INTEREST_OPS, no value)a Channel'sinterestOpswas changedThese two additional event types are used only for a parent channel which can have a child channel (e.g.
ServerSocketChannel).Event name Event type and condition Meaning "childChannelOpen"ChildChannelStateEvent
(childChannel.isOpen() = true)a child Channelwas open (e.g. a server channel accepted a connection.)"childChannelClosed"ChildChannelStateEvent
(childChannel.isOpen() = false)a child Channelwas closed (e.g. the accepted connection was closed.)Downstream events
Event name Event type and condition Meaning "write"MessageEventSend a message to the Channel."bind"ChannelStateEvent
(state =BOUND, value =SocketAddress)Bind the Channelto the specified local address."unbind"ChannelStateEvent
(state =BOUND, value =null)Unbind the Channelfrom the current local address."connect"ChannelStateEvent
(state =CONNECTED, value =SocketAddress)Connect the Channelto the specified remote address."disconnect"ChannelStateEvent
(state =CONNECTED, value =null)Disconnect the Channelfrom the current remote address."close"ChannelStateEvent
(state =OPEN, value =false)Close the Channel.Other event types and conditions which were not addressed here will be ignored and discarded. Please note that there's no
"open"in the table. It is because aChannelis always open when it is created by aChannelFactory.Additional resources worth reading
Please refer to the
ChannelHandlerandChannelPipelinedocumentation to find out how an event flows in a pipeline and how to handle the event in your application.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description ChannelgetChannel()Returns theChannelwhich is associated with this event.ChannelFuturegetFuture()Returns theChannelFuturewhich is associated with this event.
-
-
-
Method Detail
-
getFuture
ChannelFuture getFuture()
Returns theChannelFuturewhich is associated with this event. If this event is an upstream event, this method will always return aSucceededChannelFuturebecause the event has occurred already. If this event is a downstream event (i.e. I/O request), the returned future will be notified when the I/O request succeeds or fails.
-
-