org.jboss.netty.channel
类 SimpleChannelHandler

java.lang.Object
  继承者 org.jboss.netty.channel.SimpleChannelHandler
所有已实现的接口:
ChannelDownstreamHandler, ChannelHandler, ChannelUpstreamHandler
直接已知子类:
BufferedWriteHandler, HttpContentEncoder, IdleStateAwareChannelHandler

public class SimpleChannelHandler
extends java.lang.Object
implements ChannelUpstreamHandler, ChannelDownstreamHandler

为每个事件类型提供单独处理方法的ChannelUpstreamHandler .处理器会把接收到的上游事件或下游事件转型为更有意义的子类型事件并调用转型事件的适当方法.对于上游事件,方法的名称与上游事件的名称一样.正如 ChannelEvent文档所介绍.对于下游事件,方法名字的开头使用操作的名字并以"Requested"结尾(如. writeRequested.)

如果你仅仅想拦截上游或下游事件,请使用SimpleChannelUpstreamHandlerSimpleChannelDownstreamHandler.

重写 handleUpstreamhandleDownstream方法

你可以像重写一般Java方法一样重写 handleUpstreamhandleDownstream方法.请确保调用super.handleUpstream()super.handleDownstream()以便其他处理器的方法可以被正确的调用:

 public class MyChannelHandler extends SimpleChannelHandler {
 
     @Override
     public void handleUpstream(ChannelHandlerContext ctx, ChannelEvent e) throws Exception {
 
         // 记录所有通道状态改变.
         if (e instanceof ChannelStateEvent) {
             logger.info("Channel state changed: " + e);
         }
 
         super.handleUpstream(ctx, e);
     }
 
     @Override
     public void handleDownstream(ChannelHandlerContext ctx, ChannelEvent e) throws Exception {
 
         // 记录所有通道状态改变.
         if (e instanceof MessageEvent) {
             logger.info("Writing:: " + e);
         }
 
         super.handleDownstream(ctx, e);
     }
 }
 


嵌套类摘要
 
从接口 org.jboss.netty.channel.ChannelHandler 继承的嵌套类/接口
ChannelHandler.Sharable
 
构造方法摘要
SimpleChannelHandler()
          创建一个实例.
 
方法摘要
 void bindRequested(ChannelHandlerContext ctx, ChannelStateEvent e)
          当Channel.bind(SocketAddress)被调用时调用.
 void channelBound(ChannelHandlerContext ctx, ChannelStateEvent e)
          当一个Channel打开并且绑定到本地地址,但还没有连接时被调用.
 void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e)
          当一个Channel被关闭且它所有关联的资源被释放时调用.
 void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e)
          当一个Channel打开并且绑定到本地地址和已连接到远程地址时被调用.
 void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e)
          当一个Channel被远程端断开连接时调用.
 void channelInterestChanged(ChannelHandlerContext ctx, ChannelStateEvent e)
          当一个ChannelinterestOps发送改变时调用.
 void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e)
          当一个Channel打开,但还没有绑定和连接时被调用.
 void channelUnbound(ChannelHandlerContext ctx, ChannelStateEvent e)
          当一个Channel被本地地址取消绑定时调用.
 void childChannelClosed(ChannelHandlerContext ctx, ChildChannelStateEvent e)
          当一个子Channel被关闭时调用.
 void childChannelOpen(ChannelHandlerContext ctx, ChildChannelStateEvent e)
          当一个子Channel打开时调用.
 void closeRequested(ChannelHandlerContext ctx, ChannelStateEvent e)
          当Channel.close()被调用时调用.
 void connectRequested(ChannelHandlerContext ctx, ChannelStateEvent e)
          当Channel.connect(SocketAddress)被调用时调用.
 void disconnectRequested(ChannelHandlerContext ctx, ChannelStateEvent e)
          当Channel.disconnect()被调用时调用.
 void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
          当一个I/O线程或ChannelHandler抛出异常时被调用.
 void handleDownstream(ChannelHandlerContext ctx, ChannelEvent e)
          处理指定的下游事件.
 void handleUpstream(ChannelHandlerContext ctx, ChannelEvent e)
          处理一个指定的上游事件.
 void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
          当一个远程消息对象(如: ChannelBuffer)被接收时调用.
 void setInterestOpsRequested(ChannelHandlerContext ctx, ChannelStateEvent e)
          当Channel.setInterestOps(int)被调用时调用.
 void unbindRequested(ChannelHandlerContext ctx, ChannelStateEvent e)
          当Channel.unbind()被调用时调用.
 void writeComplete(ChannelHandlerContext ctx, WriteCompletionEvent e)
          当有东西被写到一个Channel时调用.
 void writeRequested(ChannelHandlerContext ctx, MessageEvent e)
          当Channel.write(Object)被调用时调用.
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

SimpleChannelHandler

public SimpleChannelHandler()
创建一个实例.

方法详细信息

handleUpstream

public void handleUpstream(ChannelHandlerContext ctx,
                           ChannelEvent e)
                    throws java.lang.Exception
处理一个指定的上游事件. 把接收到的上游事件转型为更有意义的子类型事件并调用转型事件的适当方法.

指定者:
接口 ChannelUpstreamHandler 中的 handleUpstream
参数:
ctx - 处理器的上下文对象
e - 要处理或拦截的事件
抛出:
java.lang.Exception

messageReceived

public void messageReceived(ChannelHandlerContext ctx,
                            MessageEvent e)
                     throws java.lang.Exception
当一个远程消息对象(如: ChannelBuffer)被接收时调用.

抛出:
java.lang.Exception

exceptionCaught

public void exceptionCaught(ChannelHandlerContext ctx,
                            ExceptionEvent e)
                     throws java.lang.Exception
当一个I/O线程或ChannelHandler抛出异常时被调用.

抛出:
java.lang.Exception

channelOpen

public void channelOpen(ChannelHandlerContext ctx,
                        ChannelStateEvent e)
                 throws java.lang.Exception
当一个Channel打开,但还没有绑定和连接时被调用.

抛出:
java.lang.Exception

channelBound

public void channelBound(ChannelHandlerContext ctx,
                         ChannelStateEvent e)
                  throws java.lang.Exception
当一个Channel打开并且绑定到本地地址,但还没有连接时被调用.

抛出:
java.lang.Exception

channelConnected

public void channelConnected(ChannelHandlerContext ctx,
                             ChannelStateEvent e)
                      throws java.lang.Exception
当一个Channel打开并且绑定到本地地址和已连接到远程地址时被调用.

抛出:
java.lang.Exception

channelInterestChanged

public void channelInterestChanged(ChannelHandlerContext ctx,
                                   ChannelStateEvent e)
                            throws java.lang.Exception
当一个ChannelinterestOps发送改变时调用.

抛出:
java.lang.Exception

channelDisconnected

public void channelDisconnected(ChannelHandlerContext ctx,
                                ChannelStateEvent e)
                         throws java.lang.Exception
当一个Channel被远程端断开连接时调用.

抛出:
java.lang.Exception

channelUnbound

public void channelUnbound(ChannelHandlerContext ctx,
                           ChannelStateEvent e)
                    throws java.lang.Exception
当一个Channel被本地地址取消绑定时调用.

抛出:
java.lang.Exception

channelClosed

public void channelClosed(ChannelHandlerContext ctx,
                          ChannelStateEvent e)
                   throws java.lang.Exception
当一个Channel被关闭且它所有关联的资源被释放时调用.

抛出:
java.lang.Exception

writeComplete

public void writeComplete(ChannelHandlerContext ctx,
                          WriteCompletionEvent e)
                   throws java.lang.Exception
当有东西被写到一个Channel时调用.

抛出:
java.lang.Exception

childChannelOpen

public void childChannelOpen(ChannelHandlerContext ctx,
                             ChildChannelStateEvent e)
                      throws java.lang.Exception
当一个子Channel打开时调用.(如.一个服务端通道接受一个连接)

抛出:
java.lang.Exception

childChannelClosed

public void childChannelClosed(ChannelHandlerContext ctx,
                               ChildChannelStateEvent e)
                        throws java.lang.Exception
当一个子Channel被关闭时调用.(如.接收的连接被关闭)

抛出:
java.lang.Exception

handleDownstream

public void handleDownstream(ChannelHandlerContext ctx,
                             ChannelEvent e)
                      throws java.lang.Exception
处理指定的下游事件. 把接收到的下游游事件转型为更有意义的子类型事件并调用转型事件的适当方法.

指定者:
接口 ChannelDownstreamHandler 中的 handleDownstream
参数:
ctx - 处理器的上下文对象
e - 要处理或拦截的事件
抛出:
java.lang.Exception

writeRequested

public void writeRequested(ChannelHandlerContext ctx,
                           MessageEvent e)
                    throws java.lang.Exception
Channel.write(Object)被调用时调用.

抛出:
java.lang.Exception

bindRequested

public void bindRequested(ChannelHandlerContext ctx,
                          ChannelStateEvent e)
                   throws java.lang.Exception
Channel.bind(SocketAddress)被调用时调用.

抛出:
java.lang.Exception

connectRequested

public void connectRequested(ChannelHandlerContext ctx,
                             ChannelStateEvent e)
                      throws java.lang.Exception
Channel.connect(SocketAddress)被调用时调用.

抛出:
java.lang.Exception

setInterestOpsRequested

public void setInterestOpsRequested(ChannelHandlerContext ctx,
                                    ChannelStateEvent e)
                             throws java.lang.Exception
Channel.setInterestOps(int)被调用时调用.

抛出:
java.lang.Exception

disconnectRequested

public void disconnectRequested(ChannelHandlerContext ctx,
                                ChannelStateEvent e)
                         throws java.lang.Exception
Channel.disconnect()被调用时调用.

抛出:
java.lang.Exception

unbindRequested

public void unbindRequested(ChannelHandlerContext ctx,
                            ChannelStateEvent e)
                     throws java.lang.Exception
Channel.unbind()被调用时调用.

抛出:
java.lang.Exception

closeRequested

public void closeRequested(ChannelHandlerContext ctx,
                           ChannelStateEvent e)
                    throws java.lang.Exception
Channel.close()被调用时调用.

抛出:
java.lang.Exception