org.jboss.netty.handler.codec.embedder

## 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:
    `EncoderEmbedder`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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-2012 The Netty Project. All Rights Reserved.