Package org.jboss.netty.handler.timeout
Class ReadTimeoutHandler
java.lang.Object
org.jboss.netty.channel.SimpleChannelUpstreamHandler
org.jboss.netty.handler.timeout.ReadTimeoutHandler
- All Implemented Interfaces:
ChannelHandler,ChannelUpstreamHandler,LifeCycleAwareChannelHandler,ExternalResourceReleasable
@Sharable
public class ReadTimeoutHandler
extends SimpleChannelUpstreamHandler
implements LifeCycleAwareChannelHandler, ExternalResourceReleasable
Raises a
ReadTimeoutException when no data was read within a certain
period of time.
public class MyPipelineFactory implementsTheChannelPipelineFactory{ private finalTimertimer; private finalChannelHandlertimeoutHandler; public MyPipelineFactory(Timertimer) { this.timer = timer; this.timeoutHandler = newReadTimeoutHandler(timer, 30), // timer must be shared. } publicChannelPipelinegetPipeline() { // An example configuration that implements 30-second read timeout: returnChannels.pipeline( timeoutHandler, new MyHandler()); } }ServerBootstrapbootstrap = ...;Timertimer = 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.- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate final classprivate static final classNested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler
ChannelHandler.Sharable -
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final ReadTimeoutException(package private) final long(package private) final Timer -
Constructor Summary
ConstructorsConstructorDescriptionReadTimeoutHandler(Timer timer, int timeoutSeconds) Creates a new instance.ReadTimeoutHandler(Timer timer, long timeout, TimeUnit unit) Creates a new instance. -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidvoidvoidvoidInvoked when aChannelwas closed and all its related resources were released.voidInvoked when aChannelis open, but not bound nor connected.private static voidprivate voidvoidInvoked when a message object (e.g:ChannelBuffer) was received from a remote peer.protected voidvoidStops theTimerwhich was specified in the constructor of this handler.private static ReadTimeoutHandler.StateMethods inherited from class org.jboss.netty.channel.SimpleChannelUpstreamHandler
channelBound, channelConnected, channelDisconnected, channelInterestChanged, channelUnbound, childChannelClosed, childChannelOpen, exceptionCaught, handleUpstream, writeComplete
-
Field Details
-
EXCEPTION
-
timer
-
timeoutMillis
final long timeoutMillis
-
-
Constructor Details
-
ReadTimeoutHandler
Creates a new instance.- Parameters:
timer- theTimerthat is used to trigger the scheduled event. The recommendedTimerimplementation isHashedWheelTimer.timeoutSeconds- read timeout in seconds
-
ReadTimeoutHandler
Creates a new instance.- Parameters:
timer- theTimerthat is used to trigger the scheduled event. The recommendedTimerimplementation isHashedWheelTimer.timeout- read timeoutunit- theTimeUnitoftimeout
-
-
Method Details
-
releaseExternalResources
public void releaseExternalResources()Stops theTimerwhich was specified in the constructor of this handler. You should not call this method if theTimeris in use by other objects.- Specified by:
releaseExternalResourcesin interfaceExternalResourceReleasable
-
beforeAdd
- Specified by:
beforeAddin interfaceLifeCycleAwareChannelHandler- Throws:
Exception
-
afterAdd
- Specified by:
afterAddin interfaceLifeCycleAwareChannelHandler- Throws:
Exception
-
beforeRemove
- Specified by:
beforeRemovein interfaceLifeCycleAwareChannelHandler- Throws:
Exception
-
afterRemove
- Specified by:
afterRemovein interfaceLifeCycleAwareChannelHandler- Throws:
Exception
-
channelOpen
Description copied from class:SimpleChannelUpstreamHandlerInvoked when aChannelis open, but not bound nor connected.
Be aware that this event is fired from within the I/O thread. You should never execute any heavy operation in there as it will block the dispatching to other workers!- Overrides:
channelOpenin classSimpleChannelUpstreamHandler- Throws:
Exception
-
channelClosed
Description copied from class:SimpleChannelUpstreamHandlerInvoked when aChannelwas closed and all its related resources were released.- Overrides:
channelClosedin classSimpleChannelUpstreamHandler- Throws:
Exception
-
messageReceived
Description copied from class:SimpleChannelUpstreamHandlerInvoked when a message object (e.g:ChannelBuffer) was received from a remote peer.- Overrides:
messageReceivedin classSimpleChannelUpstreamHandler- Throws:
Exception
-
initialize
-
destroy
-
state
-
readTimedOut
- Throws:
Exception
-