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

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

public class EncoderEmbedder<E>
extends Object

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

 String data = "foobar";

 EncoderEmbedder<ChannelBuffer> embedder = new EncoderEmbedder<ChannelBuffer>(
         new Base64Encoder(), new StringEncoder());

 embedder.offer(data);

 ChannelBuffer encoded = embedder.poll();
 assert encoded.toString(CharsetUtil.US_ASCII).equals("Zm9vYmFy");
 

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

Constructor Summary
EncoderEmbedder(ChannelBufferFactory bufferFactory, ChannelDownstreamHandler... handlers)
          Creates a new embedder whose pipeline is composed of the specified handlers.
EncoderEmbedder(ChannelDownstreamHandler... 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

EncoderEmbedder

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


EncoderEmbedder

public EncoderEmbedder(ChannelBufferFactory bufferFactory,
                       ChannelDownstreamHandler... 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.