org.jboss.netty.handler.codec.embedder
Class DecoderEmbedder<E>

java.lang.Object
  extended by org.jboss.netty.handler.codec.embedder.DecoderEmbedder<E>
All Implemented Interfaces:
CodecEmbedder<E>

public class DecoderEmbedder<E>
extends Object

A helper that wraps a decoder so that it can be used without doing actual I/O in unit tests or higher level codecs. For example, you can decode a Base64-encoded ChannelBuffer with Base64Decoder and StringDecoder without setting up the ChannelPipeline and other mock objects by yourself:

 ChannelBuffer base64Data = ChannelBuffers.copiedBuffer("Zm9vYmFy", CharsetUtil.US_ASCII);

 DecoderEmbedder<String> embedder = new DecoderEmbedder<String>(
         new Base64Decoder(), new StringDecoder());

 embedder.offer(base64Data);

 String decoded = embedder.poll();
 assert decoded.equals("foobar");
 

Version:
$Rev: 2122 $, $Date: 2010-02-02 11:00:04 +0900 (Tue, 02 Feb 2010) $
Author:
The Netty Project, Trustin Lee
See Also:
EncoderEmbedder

Constructor Summary
DecoderEmbedder(ChannelBufferFactory bufferFactory, ChannelUpstreamHandler... handlers)
          Creates a new embedder whose pipeline is composed of the specified handlers.
DecoderEmbedder(ChannelUpstreamHandler... handlers)
          Creates a new embedder whose pipeline is composed of the specified handlers.
 
Method Summary
 boolean finish()
          Signals the pipeline that the encoding or decoding has been finished and no more data will be offered.
protected  Channel getChannel()
          Returns the virtual Channel which will be used as a mock during encoding and decoding.
 ChannelPipeline getPipeline()
          Returns the ChannelPipeline that handles the input.
protected  boolean isEmpty()
          Returns true if and only if the produce queue is empty and therefore poll() will return null.
 boolean offer(Object input)
          Offers an input object to the pipeline of this embedder.
 E peek()
          Reads an encoded or decoded output from the head of the product queue.
 E poll()
          Consumes an encoded or decoded output from the product queue.
 Object[] pollAll()
          Consumes all encoded or decoded output from the product queue.
<T> T[]
pollAll(T[] a)
          Consumes all encoded or decoded output from the product queue.
 int size()
          Returns the number of encoded or decoded output in the product queue.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DecoderEmbedder

public DecoderEmbedder(ChannelUpstreamHandler... handlers)
Creates a new embedder whose pipeline is composed of the specified handlers.


DecoderEmbedder

public DecoderEmbedder(ChannelBufferFactory bufferFactory,
                       ChannelUpstreamHandler... handlers)
Creates a new embedder whose pipeline is composed of the specified handlers.

Parameters:
bufferFactory - the ChannelBufferFactory to be used when creating a new buffer.
Method Detail

offer

public boolean offer(Object input)
Description copied from interface: CodecEmbedder
Offers an input object to the pipeline of this embedder.

Returns:
true if and only if there is something to read in the product queue (see CodecEmbedder.poll() and CodecEmbedder.peek())

finish

public boolean finish()
Description copied from interface: CodecEmbedder
Signals the pipeline that the encoding or decoding has been finished and no more data will be offered.

Specified by:
finish in interface CodecEmbedder<E>
Returns:
true if and only if there is something to read in the product queue (see CodecEmbedder.poll() and CodecEmbedder.peek())

getChannel

protected final Channel getChannel()
Returns the virtual Channel which will be used as a mock during encoding and decoding.


isEmpty

protected final boolean isEmpty()
Returns true if and only if the produce queue is empty and therefore poll() will return null.


poll

public final E poll()
Description copied from interface: CodecEmbedder
Consumes an encoded or decoded output from the product queue. The output object is generated by the offered input objects.

Specified by:
poll in interface CodecEmbedder<E>
Returns:
an encoded or decoded object. null if and only if there is no output object left in the product queue.

peek

public final E peek()
Description copied from interface: CodecEmbedder
Reads an encoded or decoded output from the head of the product queue. The difference from CodecEmbedder.poll() is that it does not remove the retrieved object from the product queue.

Specified by:
peek in interface CodecEmbedder<E>
Returns:
an encoded or decoded object. null if and only if there is no output object left in the product queue.

pollAll

public final Object[] pollAll()
Description copied from interface: CodecEmbedder
Consumes all encoded or decoded output from the product queue. The output object is generated by the offered input objects. The behavior of this method is identical with Collection.toArray() except that the product queue is cleared.

Specified by:
pollAll in interface CodecEmbedder<E>
Returns:
an array of all encoded or decoded objects. An empty array is returned if and only if there is no output object left in the product queue.

pollAll

public final <T> T[] pollAll(T[] a)
Description copied from interface: CodecEmbedder
Consumes all encoded or decoded output from the product queue. The output object is generated by the offered input objects. The behavior of this method is identical with Collection.toArray(Object[]) except that the product queue is cleared.

Specified by:
pollAll in interface CodecEmbedder<E>
Returns:
an array of all encoded or decoded objects. An empty array is returned if and only if there is no output object left in the product queue.

size

public final int size()
Description copied from interface: CodecEmbedder
Returns the number of encoded or decoded output in the product queue.

Specified by:
size in interface CodecEmbedder<E>

getPipeline

public ChannelPipeline getPipeline()
Description copied from interface: CodecEmbedder
Returns the ChannelPipeline that handles the input.

Specified by:
getPipeline in interface CodecEmbedder<E>


Copyright © 2008-2011 JBoss, a division of Red Hat, Inc.. All Rights Reserved.