org.jboss.netty.handler.timeout
类 ReadTimeoutHandler

java.lang.Object
  继承者 org.jboss.netty.channel.SimpleChannelUpstreamHandler
      继承者 org.jboss.netty.handler.timeout.ReadTimeoutHandler
所有已实现的接口:
ChannelHandler, ChannelUpstreamHandler, LifeCycleAwareChannelHandler, ExternalResourceReleasable

public class ReadTimeoutHandler
extends SimpleChannelUpstreamHandler
implements LifeCycleAwareChannelHandler, ExternalResourceReleasable

当在一定的时间周期内没有数据被读取则抛出ReadTimeoutException.

 public class MyPipelineFactory implements ChannelPipelineFactory {
 
     private final Timer timer;
 
     public MyPipelineFactory(Timer timer) {
         this.timer = timer;
     }
 
     public ChannelPipeline getPipeline() {
         // 该例子配置30秒读取超时:
         return Channels.pipeline(
             new ReadTimeoutHandler(timer, 30), // timer必须是共享的.
             new MyHandler());
     }
 }
 
 ServerBootstrap bootstrap = ...;
 Timer timer = new HashedWheelTimer();
 ...
 bootstrap.setPipelineFactory(new MyPipelineFactory(timer));
 ...
 
ReadTimeoutHandler被创建时Timer会被指定.当你的应用程序关闭,需要手工调用 releaseExternalResources()Timer.stop()关闭.

另请参见:
WriteTimeoutHandler, IdleStateHandler

嵌套类摘要
 
从接口 org.jboss.netty.channel.ChannelHandler 继承的嵌套类/接口
ChannelHandler.Sharable
 
构造方法摘要
ReadTimeoutHandler(Timer timer, int timeoutSeconds)
          创建一个实例.
ReadTimeoutHandler(Timer timer, long timeout, java.util.concurrent.TimeUnit unit)
          创建一个实例.
 
方法摘要
 void afterAdd(ChannelHandlerContext ctx)
           
 void afterRemove(ChannelHandlerContext ctx)
           
 void beforeAdd(ChannelHandlerContext ctx)
           
 void beforeRemove(ChannelHandlerContext ctx)
           
 void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e)
          当一个Channel被关闭且它所有关联的资源被释放时调用.
 void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e)
          当一个Channel打开,但还没有绑定和连接时被调用.
 void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
          当一个从远端发来的消息对象(如: ChannelBuffer)被接收时调用.
 void releaseExternalResources()
          停止该处理器在构造时指定的Timer.当该Timer被其他对象使用 ,你不能调用该方法.
 
从类 org.jboss.netty.channel.SimpleChannelUpstreamHandler 继承的方法
channelBound, channelConnected, channelDisconnected, channelInterestChanged, channelUnbound, childChannelClosed, childChannelOpen, exceptionCaught, handleUpstream, writeComplete
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

ReadTimeoutHandler

public ReadTimeoutHandler(Timer timer,
                          int timeoutSeconds)
创建一个实例.

参数:
timer - Timer 常常被用于触发计时事件.推荐的Timer实现是 HashedWheelTimer.
timeoutSeconds - 读超时秒数

ReadTimeoutHandler

public ReadTimeoutHandler(Timer timer,
                          long timeout,
                          java.util.concurrent.TimeUnit unit)
创建一个实例.

参数:
timer - Timer 常常被用于触发计时事件.推荐的Timer实现是 HashedWheelTimer.
timeout - 读取超时数
unit - 读取超时数的TimeUnit
方法详细信息

releaseExternalResources

public void releaseExternalResources()
停止该处理器在构造时指定的Timer.当该Timer被其他对象使用 ,你不能调用该方法.

指定者:
接口 ExternalResourceReleasable 中的 releaseExternalResources

beforeAdd

public void beforeAdd(ChannelHandlerContext ctx)
               throws java.lang.Exception
指定者:
接口 LifeCycleAwareChannelHandler 中的 beforeAdd
抛出:
java.lang.Exception

afterAdd

public void afterAdd(ChannelHandlerContext ctx)
              throws java.lang.Exception
指定者:
接口 LifeCycleAwareChannelHandler 中的 afterAdd
抛出:
java.lang.Exception

beforeRemove

public void beforeRemove(ChannelHandlerContext ctx)
                  throws java.lang.Exception
指定者:
接口 LifeCycleAwareChannelHandler 中的 beforeRemove
抛出:
java.lang.Exception

afterRemove

public void afterRemove(ChannelHandlerContext ctx)
                 throws java.lang.Exception
指定者:
接口 LifeCycleAwareChannelHandler 中的 afterRemove
抛出:
java.lang.Exception

channelOpen

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

覆盖:
SimpleChannelUpstreamHandler 中的 channelOpen
抛出:
java.lang.Exception

channelClosed

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

覆盖:
SimpleChannelUpstreamHandler 中的 channelClosed
抛出:
java.lang.Exception

messageReceived

public void messageReceived(ChannelHandlerContext ctx,
                            MessageEvent e)
                     throws java.lang.Exception
从类 SimpleChannelUpstreamHandler 复制的描述
当一个从远端发来的消息对象(如: ChannelBuffer)被接收时调用.

覆盖:
SimpleChannelUpstreamHandler 中的 messageReceived
抛出:
java.lang.Exception