org.jboss.netty.channel
接口 ChannelDownstreamHandler

所有超级接口:
ChannelHandler
所有已知实现类:
Base64Encoder, BufferedWriteHandler, ChunkedWriteHandler, CompatibleObjectEncoder, ExecutionHandler, HttpClientCodec, HttpContentCompressor, HttpContentEncoder, HttpMessageEncoder, HttpRequestEncoder, HttpResponseEncoder, HttpServerCodec, IdleStateAwareChannelHandler, LengthFieldPrepender, LoggingHandler, ObjectEncoder, OneToOneEncoder, ProtobufEncoder, ProtobufVarint32LengthFieldPrepender, RtspMessageEncoder, RtspRequestEncoder, RtspResponseEncoder, SimpleChannelDownstreamHandler, SimpleChannelHandler, SslHandler, StringEncoder, WebSocketFrameEncoder, WriteTimeoutHandler, ZlibEncoder

public interface ChannelDownstreamHandler
extends ChannelHandler

处理或拦截一个下游事件,并发送一个事件到管道下一个处理器中.

该接口大多数使用情况是拦截一个I/O请求,如 Channel.write(Object)Channel.close().

SimpleChannelDownstreamHandler

大多数情况下,你可以使用一个SimpleChannelDownstreamHandler 去实现一个下游处理器是因为它为每个事件类型提供了一个独立的处理器.然而如果你想使用更通用的方式处理各种各样的事件类型时你可以直接实现该接口.

发送事件到下一个处理器

你可以转发接收到的上游或下游事件.尽管ChannelDownstreamHandler 可以合法的发送上游事件(如.进站),但是大多数情况下是用来发送下游事件的(如.出站):

 // 发送下游事件(出站)
 void handleDownstream(ChannelHandlerContext ctx, ChannelEvent e) throws Exception {
     ...
     ctx.sendDownstream(e);
     ...
 }
 
 // 发送上游事件(进站)
 void handleDownstream(ChannelHandlerContext ctx, ChannelEvent e) throws Exception {
     ...
     ctx.sendUpstream(new UpstreamChannelStateEvent(...));
     ...
 }
 

使用帮助类发送事件

你可以使用在Channels中很多各种各样的有用的帮助方法去生成和发送人工或非人工的事件.

状态管理

请参考ChannelHandler.

线程安全

handleDownstream可以同时被多个线程调用. 如果处理器访问共享资源或存储有状态信息,你必须在处理器使用适当的同步.


嵌套类摘要
 
从接口 org.jboss.netty.channel.ChannelHandler 继承的嵌套类/接口
ChannelHandler.Sharable
 
方法摘要
 void handleDownstream(ChannelHandlerContext ctx, ChannelEvent e)
          处理指定的下游事件.
 

方法详细信息

handleDownstream

void handleDownstream(ChannelHandlerContext ctx,
                      ChannelEvent e)
                      throws java.lang.Exception
处理指定的下游事件.

参数:
ctx - 处理器的上下文对象
e - 要处理或拦截的事件
抛出:
java.lang.Exception