Netty3 源码分析 - ChannelEvent
ChannelEvent是和这个Channel相关的IO事件和请求,会由各个ChannelHandler来处理。
事件分为上行和下行两种。当服务器从客户端收到一个消息,那么与之相关的就是一个上行事件(upstream event),流水线中的UpstreamChannelHandler会处理它;如果服务要回应这个客户端,那么与响应消息对应的就是下行事件,pipeline中的DownstreamChannelHandler会处理。站在客户端角度同样很容易理解。上行事件通常是入站操作(
inbound operations)的结果,如 InputStream.read(byte[]),下行事件通常是请求出站操作( outbound operations)比如 OutputStream.write(byte[]), Socket.connect(SocketAddress), and Socket.close()。
上行事件及发生时机:
Event name |
Event type and condition |
Meaning |
|
"messageReceived" |
a message object (e.g. ChannelBuffer) was received from a remote peer |
||
"exceptionCaught" |
an exception was raised by an I/O thread or a ChannelHandler |
||
"channelOpen" |
ChannelStateEvent |
a Channel is open, but not bound nor 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! |
"channelClosed" |
|