org.jboss.netty.handler.codec.frame

## Class LengthFieldPrepender

- java.lang.Object
- - org.jboss.netty.handler.codec.oneone.OneToOneEncoder
  - - org.jboss.netty.handler.codec.frame.LengthFieldPrepender

- All Implemented Interfaces:
    ChannelDownstreamHandler, ChannelHandler

      @ChannelHandler.Sharable
      public class LengthFieldPrepender
      extends OneToOneEncoder

  An encoder that prepends the length of the message. The length value is prepended as a binary form. It is encoded in either big endian or little endian depending on the default `ByteOrder` of the current `ChannelBufferFactory`.

  For example, ``LengthFieldPrepender`(2)` will encode the following 12-bytes string:

       +----------------+
       | "HELLO, WORLD" |
       +----------------+

  into the following:

       +--------+----------------+
       + 0x000C | "HELLO, WORLD" |
       +--------+----------------+

  If you turned on the `lengthIncludesLengthFieldLength` flag in the constructor, the encoded data would look like the following (12 (original data) + 2 (prepended data) = 14 (0xE)):

       +--------+----------------+
       + 0x000E | "HELLO, WORLD" |
       +--------+----------------+

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler

      `ChannelHandler.Sharable`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LengthFieldPrepender(int lengthFieldLength)` Creates a new instance.
    `LengthFieldPrepender(int lengthFieldLength, boolean lengthIncludesLengthFieldLength)` Creates a new instance.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Object` | `encode(ChannelHandlerContext ctx, Channel channel, Object msg)` Transforms the specified message into another message and return the transformed message.

    - ### Methods inherited from class org.jboss.netty.handler.codec.oneone.OneToOneEncoder

      `handleDownstream`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### LengthFieldPrepender

          public LengthFieldPrepender(int lengthFieldLength)

      Creates a new instance.
      Parameters:
        `lengthFieldLength` - the length of the prepended length field. Only 1, 2, 3, 4, and 8 are allowed.
      Throws:
        `IllegalArgumentException` - if `lengthFieldLength` is not 1, 2, 3, 4, or 8

    - #### LengthFieldPrepender

          public LengthFieldPrepender(int lengthFieldLength,
                              boolean lengthIncludesLengthFieldLength)

      Creates a new instance.
      Parameters:
        `lengthFieldLength` - the length of the prepended length field. Only 1, 2, 3, 4, and 8 are allowed.
        `lengthIncludesLengthFieldLength` - if `true`, the length of the prepended length field is added to the value of the prepended length field.
      Throws:
        `IllegalArgumentException` - if `lengthFieldLength` is not 1, 2, 3, 4, or 8

  - ### Method Detail

    - #### encode

          protected Object encode(ChannelHandlerContext ctx,
                      Channel channel,
                      Object msg)
                           throws Exception

      Description copied from class: `OneToOneEncoder`
      Transforms the specified message into another message and return the transformed message. Note that you can not return `null`, unlike you can in `OneToOneDecoder.decode(ChannelHandlerContext, Channel, Object)`; you must return something, at least `ChannelBuffers.EMPTY_BUFFER`.
      Specified by:
        `encode` in class `OneToOneEncoder`
      Throws:
        `Exception`

Copyright © 2008-2012 The Netty Project. All Rights Reserved.