|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.jboss.netty.channel.SimpleChannelUpstreamHandler
org.jboss.netty.handler.queue.BlockingReadHandler<E>
E
- the type of the received messagespublic class BlockingReadHandler<E>
Emulates blocking read operation. This handler stores all received messages
into a BlockingQueue
and returns the received messages when
read()
, read(long, TimeUnit)
, readEvent()
, or
readEvent(long, TimeUnit)
method is called.
Please note that this handler is only useful for the cases where there are very small number of connections, such as testing and simple client-side application development.
Also, any handler placed after this handler will never receive
messageReceived
, exceptionCaught
, and channelClosed
events, hence it should be placed in the last place in a pipeline.
Here is an example that demonstrates the usage:
BlockingReadHandler
<ChannelBuffer
> reader = newBlockingReadHandler
<ChannelBuffer
>();ChannelPipeline
p = ...; p.addLast("reader", reader); ... // Read a message from a channel in a blocking manner. try {ChannelBuffer
buf = reader.read(60, TimeUnit.SECONDS); if (buf == null) { // Connection closed. } else { // Handle the received message here. } } catch (BlockingReadTimeoutException
e) { // Read timed out. } catch (IOException e) { // Other read errors }
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler |
---|
ChannelHandler.Sharable |
Constructor Summary | |
---|---|
BlockingReadHandler()
Creates a new instance with the default unbounded BlockingQueue
implementation. |
|
BlockingReadHandler(BlockingQueue<ChannelEvent> queue)
Creates a new instance with the specified BlockingQueue . |
Method Summary | |
---|---|
void |
channelClosed(ChannelHandlerContext ctx,
ChannelStateEvent e)
Invoked when a Channel was closed and all its related resources
were released. |
void |
exceptionCaught(ChannelHandlerContext ctx,
ExceptionEvent e)
Invoked when an exception was raised by an I/O thread or a ChannelHandler . |
protected BlockingQueue<ChannelEvent> |
getQueue()
Returns the queue which stores the received messages. |
boolean |
isClosed()
Returns true if and only if the Channel associated with
this handler has been closed. |
void |
messageReceived(ChannelHandlerContext ctx,
MessageEvent e)
Invoked when a message object (e.g: ChannelBuffer ) was received
from a remote peer. |
E |
read()
Waits until a new message is received or the associated Channel
is closed. |
E |
read(long timeout,
TimeUnit unit)
Waits until a new message is received or the associated Channel
is closed. |
ChannelEvent |
readEvent()
Waits until a new ChannelEvent is received or the associated
Channel is closed. |
ChannelEvent |
readEvent(long timeout,
TimeUnit unit)
Waits until a new ChannelEvent is received or the associated
Channel is closed. |
Methods inherited from class org.jboss.netty.channel.SimpleChannelUpstreamHandler |
---|
channelBound, channelConnected, channelDisconnected, channelInterestChanged, channelOpen, channelUnbound, childChannelClosed, childChannelOpen, handleUpstream, writeComplete |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public BlockingReadHandler()
BlockingQueue
implementation.
public BlockingReadHandler(BlockingQueue<ChannelEvent> queue)
BlockingQueue
.
Method Detail |
---|
protected BlockingQueue<ChannelEvent> getQueue()
public boolean isClosed()
true
if and only if the Channel
associated with
this handler has been closed.
IllegalStateException
- if this handler was not added to a ChannelPipeline
yetpublic E read() throws IOException, InterruptedException
Channel
is closed.
null
if the associated
Channel
has been closed
IOException
- if failed to receive a new message
InterruptedException
- if the operation has been interruptedpublic E read(long timeout, TimeUnit unit) throws IOException, InterruptedException
Channel
is closed.
timeout
- the amount time to wait until a new message is received.
If no message is received within the timeout,
BlockingReadTimeoutException
is thrown.unit
- the unit of timeout
null
if the associated
Channel
has been closed
BlockingReadTimeoutException
- if no message was received within the specified timeout
IOException
- if failed to receive a new message
InterruptedException
- if the operation has been interruptedpublic ChannelEvent readEvent() throws InterruptedException
ChannelEvent
is received or the associated
Channel
is closed.
MessageEvent
or an ExceptionEvent
.
null
if the associated Channel
has been closed
InterruptedException
- if the operation has been interruptedpublic ChannelEvent readEvent(long timeout, TimeUnit unit) throws InterruptedException, BlockingReadTimeoutException
ChannelEvent
is received or the associated
Channel
is closed.
timeout
- the amount time to wait until a new ChannelEvent
is
received. If no message is received within the timeout,
BlockingReadTimeoutException
is thrown.unit
- the unit of timeout
MessageEvent
or an ExceptionEvent
.
null
if the associated Channel
has been closed
BlockingReadTimeoutException
- if no event was received within the specified timeout
InterruptedException
- if the operation has been interruptedpublic void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception
SimpleChannelUpstreamHandler
ChannelBuffer
) was received
from a remote peer.
messageReceived
in class SimpleChannelUpstreamHandler
Exception
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception
SimpleChannelUpstreamHandler
ChannelHandler
.
exceptionCaught
in class SimpleChannelUpstreamHandler
Exception
public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception
SimpleChannelUpstreamHandler
Channel
was closed and all its related resources
were released.
channelClosed
in class SimpleChannelUpstreamHandler
Exception
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |