|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object org.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 finalTimer
timer; public MyPipelineFactory(Timer
timer) { this.timer = timer; } publicChannelPipeline
getPipeline() { returnChannels
.pipeline( newIdleStateHandler
(timer, 60, 30, 0), // timer must be shared. new MyHandler()); } } // 处理器会处理由IdleStateHandler
触发的IdleStateEvent
. public class MyHandler extendsIdleStateAwareChannelHandler
{@Override
public void channelIdle(ChannelHandlerContext
ctx,IdleStateEvent
e) { if (e.getState() ==IdleState
.READER_IDLE) { e.getChannel().close(); } else if (e.getState() ==IdleState
.WRITER_IDLE) { e.getChannel().write(new PingMessage()); } } }ServerBootstrap
bootstrap = ...;Timer
timer = 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
中的 beforeAdd
java.lang.Exception
public void afterAdd(ChannelHandlerContext ctx) throws java.lang.Exception
LifeCycleAwareChannelHandler
中的 afterAdd
java.lang.Exception
public void beforeRemove(ChannelHandlerContext ctx) throws java.lang.Exception
LifeCycleAwareChannelHandler
中的 beforeRemove
java.lang.Exception
public void afterRemove(ChannelHandlerContext ctx) throws java.lang.Exception
LifeCycleAwareChannelHandler
中的 afterRemove
java.lang.Exception
public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) throws java.lang.Exception
SimpleChannelUpstreamHandler
复制的描述Channel
打开,但还没有绑定和连接时被调用.
SimpleChannelUpstreamHandler
中的 channelOpen
java.lang.Exception
public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws java.lang.Exception
SimpleChannelUpstreamHandler
复制的描述Channel
被关闭且它所有关联的资源被释放时调用.
SimpleChannelUpstreamHandler
中的 channelClosed
java.lang.Exception
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws java.lang.Exception
SimpleChannelUpstreamHandler
复制的描述ChannelBuffer
)被接收时调用.
SimpleChannelUpstreamHandler
中的 messageReceived
java.lang.Exception
public void writeComplete(ChannelHandlerContext ctx, WriteCompletionEvent e) throws java.lang.Exception
SimpleChannelUpstreamHandler
复制的描述Channel
时调用.
SimpleChannelUpstreamHandler
中的 writeComplete
java.lang.Exception
|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |