Class LengthFieldPrepender

  • All Implemented Interfaces:
    ChannelDownstreamHandler, 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" |
     +--------+----------------+
     
    • Field Detail

      • lengthFieldLength

        private final int lengthFieldLength
      • lengthIncludesLengthFieldLength

        private final boolean lengthIncludesLengthFieldLength
    • 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:
        java.lang.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:
        java.lang.IllegalArgumentException - if lengthFieldLength is not 1, 2, 3, 4, or 8