Class DecoderEmbedder<E>

java.lang.Object
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");
 
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new embedder whose pipeline is composed of the specified handlers.
    Creates a new embedder whose pipeline is composed of the specified handlers.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Signals the pipeline that the encoding or decoding has been finished and no more data will be offered.
    protected final Channel
    Returns the virtual Channel which will be used as a mock during encoding and decoding.
    Returns the ChannelPipeline that handles the input.
    protected final boolean
    Returns true if and only if the produce queue is empty and therefore CodecEmbedder.poll() will return null.
    boolean
    offer(Object input)
    Offers an input object to the pipeline of this embedder.
    final E
    Reads an encoded or decoded output from the head of the product queue.
    final E
    Consumes an encoded or decoded output from the product queue.
    final Object[]
    Consumes all encoded or decoded output from the product queue.
    final <T> T[]
    pollAll(T[] a)
    Consumes all encoded or decoded output from the product queue.
    final int
    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 Details

    • 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 Details

    • 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 CodecEmbedder.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>