Class EncoderEmbedder<E>

java.lang.Object
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<>(
         new Base64Encoder(), new StringEncoder());

 embedder.offer(data);

 ChannelBuffer encoded = embedder.poll();
 assert encoded.toString(CharsetUtil.US_ASCII).equals("Zm9vYmFy");
 
See Also:
  • Constructor Details

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