@ChannelHandler.Sharable public class ReadTimeoutHandler extends SimpleChannelUpstreamHandler implements LifeCycleAwareChannelHandler, ExternalResourceReleasable
ReadTimeoutException
when no data was read within a certain
period of time.
public class MyPipelineFactory implementsTheChannelPipelineFactory
{ private finalTimer
timer; private finalChannelHandler
timeoutHandler; public MyPipelineFactory(Timer
timer) { this.timer = timer; this.timeoutHandler = newReadTimeoutHandler
(timer, 30), // timer must be shared. } publicChannelPipeline
getPipeline() { // An example configuration that implements 30-second read timeout: returnChannels
.pipeline( timeoutHandler, new MyHandler()); } }ServerBootstrap
bootstrap = ...;Timer
timer = newHashedWheelTimer
(); ... bootstrap.setPipelineFactory(new MyPipelineFactory(timer)); ...
Timer
which was specified when the ReadTimeoutHandler
is
created should be stopped manually by calling releaseExternalResources()
or Timer.stop()
when your application shuts down.ChannelHandler.Sharable
构造器和说明 |
---|
ReadTimeoutHandler(Timer timer,
int timeoutSeconds)
Creates a new instance.
|
ReadTimeoutHandler(Timer timer,
long timeout,
java.util.concurrent.TimeUnit unit)
Creates a new instance.
|
限定符和类型 | 方法和说明 |
---|---|
void |
afterAdd(ChannelHandlerContext ctx) |
void |
afterRemove(ChannelHandlerContext ctx) |
void |
beforeAdd(ChannelHandlerContext ctx) |
void |
beforeRemove(ChannelHandlerContext ctx) |
void |
channelClosed(ChannelHandlerContext ctx,
ChannelStateEvent e)
Invoked when a
Channel was closed and all its related resources
were released. |
void |
channelOpen(ChannelHandlerContext ctx,
ChannelStateEvent e)
Invoked when a
Channel is open, but not bound nor connected. |
void |
messageReceived(ChannelHandlerContext ctx,
MessageEvent e)
Invoked when a message object (e.g:
ChannelBuffer ) was received
from a remote peer. |
protected void |
readTimedOut(ChannelHandlerContext ctx) |
void |
releaseExternalResources()
Stops the
Timer which was specified in the constructor of this
handler. |
channelBound, channelConnected, channelDisconnected, channelInterestChanged, channelUnbound, childChannelClosed, childChannelOpen, exceptionCaught, handleUpstream, writeComplete
public ReadTimeoutHandler(Timer timer, int timeoutSeconds)
timer
- the Timer
that is used to trigger the scheduled event.
The recommended Timer
implementation is HashedWheelTimer
.timeoutSeconds
- read timeout in secondspublic ReadTimeoutHandler(Timer timer, long timeout, java.util.concurrent.TimeUnit unit)
timer
- the Timer
that is used to trigger the scheduled event.
The recommended Timer
implementation is HashedWheelTimer
.timeout
- read timeoutunit
- the TimeUnit
of timeout
public void releaseExternalResources()
public void beforeAdd(ChannelHandlerContext ctx) throws java.lang.Exception
beforeAdd
在接口中 LifeCycleAwareChannelHandler
java.lang.Exception
public void afterAdd(ChannelHandlerContext ctx) throws java.lang.Exception
afterAdd
在接口中 LifeCycleAwareChannelHandler
java.lang.Exception
public void beforeRemove(ChannelHandlerContext ctx) throws java.lang.Exception
beforeRemove
在接口中 LifeCycleAwareChannelHandler
java.lang.Exception
public void afterRemove(ChannelHandlerContext ctx) throws java.lang.Exception
afterRemove
在接口中 LifeCycleAwareChannelHandler
java.lang.Exception
public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) throws java.lang.Exception
SimpleChannelUpstreamHandler
Channel
is open, but not bound nor connected.
channelOpen
在类中 SimpleChannelUpstreamHandler
java.lang.Exception
public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws java.lang.Exception
SimpleChannelUpstreamHandler
Channel
was closed and all its related resources
were released.channelClosed
在类中 SimpleChannelUpstreamHandler
java.lang.Exception
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws java.lang.Exception
SimpleChannelUpstreamHandler
ChannelBuffer
) was received
from a remote peer.messageReceived
在类中 SimpleChannelUpstreamHandler
java.lang.Exception
protected void readTimedOut(ChannelHandlerContext ctx) throws java.lang.Exception
java.lang.Exception