|
|||||||||
| 上一个类 下一个类 | 框架 无框架 | ||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | ||||||||
java.lang.Objectorg.jboss.netty.channel.SimpleChannelUpstreamHandler
org.jboss.netty.handler.timeout.IdleStateHandler
public class IdleStateHandler

当一个Channel暂时不执行读、写或两者时触发一个IdleStateEvent.
| 属性 | 意思 |
|---|---|
readerIdleTime |
当指定的时间周期内没有读操作,一个状态为IdleState.READER_IDLE的IdleStateEvent
被触发.设置0表示禁止. |
writerIdleTime |
当指定的时间周期内没有写操作,一个状态为IdleState.WRITER_IDLE的IdleStateEvent
被触发. 设置0表示禁止. |
allIdleTime |
当指定的时间周期内没有读和写操作,一个状态为IdleState.ALL_IDLE的IdleStateEvent
被触发. 设置0表示禁止. |
// 下面例子表示当30秒没有出站通信时发送Ping消息,60秒没有入站通信时关闭连接. public class MyPipelineFactory implements当ChannelPipelineFactory{ private finalTimertimer; public MyPipelineFactory(Timertimer) { this.timer = timer; } publicChannelPipelinegetPipeline() { returnChannels.pipeline( newIdleStateHandler(timer, 60, 30, 0), // timer must be shared. new MyHandler()); } } // 处理器会处理由IdleStateHandler触发的IdleStateEvent. public class MyHandler extendsIdleStateAwareChannelHandler{@Overridepublic void channelIdle(ChannelHandlerContextctx,IdleStateEvente) { if (e.getState() ==IdleState.READER_IDLE) { e.getChannel().close(); } else if (e.getState() ==IdleState.WRITER_IDLE) { e.getChannel().write(new PingMessage()); } } }ServerBootstrapbootstrap = ...;Timertimer = newHashedWheelTimer(); ... bootstrap.setPipelineFactory(new MyPipelineFactory(timer)); ...
ReadTimeoutHandler被创建时Timer会被指定.当你的应用程序关闭,需要手工调用
releaseExternalResources()或Timer.stop()关闭.
ReadTimeoutHandler,
WriteTimeoutHandler| 嵌套类摘要 |
|---|
| 从接口 org.jboss.netty.channel.ChannelHandler 继承的嵌套类/接口 |
|---|
ChannelHandler.Sharable |
| 构造方法摘要 | |
|---|---|
IdleStateHandler(Timer timer,
int readerIdleTimeSeconds,
int writerIdleTimeSeconds,
int allIdleTimeSeconds)
创建一个实例. |
|
IdleStateHandler(Timer timer,
long readerIdleTime,
long writerIdleTime,
long allIdleTime,
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被其他对象使用 ,你不能调用该方法. |
void |
writeComplete(ChannelHandlerContext ctx,
WriteCompletionEvent e)
当有东西被写到一个 Channel时调用. |
| 从类 org.jboss.netty.channel.SimpleChannelUpstreamHandler 继承的方法 |
|---|
channelBound, channelConnected, channelDisconnected, channelInterestChanged, channelUnbound, childChannelClosed, childChannelOpen, exceptionCaught, handleUpstream |
| 从类 java.lang.Object 继承的方法 |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 构造方法详细信息 |
|---|
public IdleStateHandler(Timer timer,
int readerIdleTimeSeconds,
int writerIdleTimeSeconds,
int allIdleTimeSeconds)
timer - Timer 常常被用于触发计时事件.推荐的Timer实现是
HashedWheelTimer.readerIdleTimeSeconds - 当指定的时间周期内没有读操作,一个状态为IdleState.READER_IDLE的
IdleStateEvent 被触发.设置0表示禁止.writerIdleTimeSeconds - 当指定的时间周期内没有写操作,一个状态为IdleState.WRITER_IDLE的
IdleStateEvent 被触发. 设置0表示禁止.allIdleTimeSeconds - 当指定的时间周期内没有读和写操作,一个状态为IdleState.ALL_IDLE的
IdleStateEvent 被触发. 设置0表示禁止.
public IdleStateHandler(Timer timer,
long readerIdleTime,
long writerIdleTime,
long allIdleTime,
java.util.concurrent.TimeUnit unit)
timer - Timer 常常被用于触发计时事件.推荐的Timer实现是
HashedWheelTimer.readerIdleTime - 当指定的时间周期内没有读操作,一个状态为IdleState.READER_IDLE的
IdleStateEvent 被触发.设置0表示禁止.writerIdleTime - 当指定的时间周期内没有写操作,一个状态为IdleState.WRITER_IDLE的
IdleStateEvent 被触发. 设置0表示禁止.allIdleTime - 当指定的时间周期内没有读和写操作,一个状态为IdleState.ALL_IDLE的
IdleStateEvent 被触发. 设置0表示禁止.unit - readerIdleTime, writeIdleTime和
allIdleTime的TimeUnit.| 方法详细信息 |
|---|
public void releaseExternalResources()
Timer.当该Timer被其他对象使用 ,你不能调用该方法.
ExternalResourceReleasable 中的 releaseExternalResources
public void beforeAdd(ChannelHandlerContext ctx)
throws java.lang.Exception
LifeCycleAwareChannelHandler 中的 beforeAddjava.lang.Exception
public void afterAdd(ChannelHandlerContext ctx)
throws java.lang.Exception
LifeCycleAwareChannelHandler 中的 afterAddjava.lang.Exception
public void beforeRemove(ChannelHandlerContext ctx)
throws java.lang.Exception
LifeCycleAwareChannelHandler 中的 beforeRemovejava.lang.Exception
public void afterRemove(ChannelHandlerContext ctx)
throws java.lang.Exception
LifeCycleAwareChannelHandler 中的 afterRemovejava.lang.Exception
public void channelOpen(ChannelHandlerContext ctx,
ChannelStateEvent e)
throws java.lang.Exception
SimpleChannelUpstreamHandler 复制的描述Channel打开,但还没有绑定和连接时被调用.
SimpleChannelUpstreamHandler 中的 channelOpenjava.lang.Exception
public void channelClosed(ChannelHandlerContext ctx,
ChannelStateEvent e)
throws java.lang.Exception
SimpleChannelUpstreamHandler 复制的描述Channel被关闭且它所有关联的资源被释放时调用.
SimpleChannelUpstreamHandler 中的 channelClosedjava.lang.Exception
public void messageReceived(ChannelHandlerContext ctx,
MessageEvent e)
throws java.lang.Exception
SimpleChannelUpstreamHandler 复制的描述ChannelBuffer)被接收时调用.
SimpleChannelUpstreamHandler 中的 messageReceivedjava.lang.Exception
public void writeComplete(ChannelHandlerContext ctx,
WriteCompletionEvent e)
throws java.lang.Exception
SimpleChannelUpstreamHandler 复制的描述Channel时调用.
SimpleChannelUpstreamHandler 中的 writeCompletejava.lang.Exception
|
|||||||||
| 上一个类 下一个类 | 框架 无框架 | ||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | ||||||||