org.jboss.netty.channel
接口 ChannelUpstreamHandler

所有超级接口:
ChannelHandler
所有已知实现类:
Base64Decoder, BlockingReadHandler, BufferedWriteHandler, ChunkedWriteHandler, CompatibleObjectDecoder, DelimiterBasedFrameDecoder, ExecutionHandler, FixedLengthFrameDecoder, FrameDecoder, HttpChunkAggregator, HttpClientCodec, HttpContentCompressor, HttpContentDecoder, HttpContentDecompressor, HttpContentEncoder, HttpMessageDecoder, HttpRequestDecoder, HttpResponseDecoder, HttpServerCodec, IdleStateAwareChannelHandler, IdleStateAwareChannelUpstreamHandler, IdleStateHandler, LengthFieldBasedFrameDecoder, LoggingHandler, ObjectDecoder, OneToOneDecoder, ProtobufDecoder, ProtobufVarint32FrameDecoder, ReadTimeoutHandler, ReplayingDecoder, RtspMessageDecoder, RtspRequestDecoder, RtspResponseDecoder, SimpleChannelHandler, SimpleChannelUpstreamHandler, SslHandler, StringDecoder, WebSocketFrameDecoder, ZlibDecoder

public interface ChannelUpstreamHandler
extends ChannelHandler

处理或拦截一个上游ChannelEvent,并发送一个ChannelEvent到管道里的下一个处理器.

该接口大多数使用情况是拦截一个使用I/O工作者产生的I/O请求并转化接收到的消息或执行相关业务逻辑.

SimpleChannelUpstreamHandler

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

发送事件到下一个处理器

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

 // 发送上游事件 (入站)
 void handleUpstream(ChannelHandlerContext ctx, ChannelEvent e) throws Exception {
     ...
     ctx.sendUpstream(e);
     ...
 }

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

使用帮助类发送事件

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

状态管理

请参考ChannelHandler.

线程安全

handleUpstream会被同一个线程(如.I/O线程)顺序的调用, 因此处理器不必担心在上一个上游事件完成之前一个新的上游事件被调用问题.

这并不意味着每个Channel对应一个线程;一些传输的I/O线程可以服务多个Channel (如.NIO传输), 但其他传输的I/O线程只能服务一个(如.OIO传输).

然而,如果你添加一个ExecutionHandler到一个ChannelPipeline,该行为改变会依赖于什么Executor被用来派发事件.请参考ExecutionHandler了解更多信息.


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

方法详细信息

handleUpstream

void handleUpstream(ChannelHandlerContext ctx,
                    ChannelEvent e)
                    throws java.lang.Exception
处理一个指定的上游事件.

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