Class LengthFieldPrepender

  • All Implemented Interfaces:
    io.netty.channel.ChannelHandler, io.netty.channel.ChannelOutboundHandler

    @Sharable
    public class LengthFieldPrepender
    extends MessageToMessageEncoder<io.netty.buffer.ByteBuf>
    An encoder that prepends the length of the message. The length value is prepended as a binary form.

    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 io.netty.channel.ChannelHandler

        io.netty.channel.ChannelHandler.Sharable
    • Constructor Summary

      Constructors 
      Constructor Description
      LengthFieldPrepender​(int lengthFieldLength)
      Creates a new instance.
      LengthFieldPrepender​(int lengthFieldLength, boolean lengthIncludesLengthFieldLength)
      Creates a new instance.
      LengthFieldPrepender​(int lengthFieldLength, int lengthAdjustment)
      Creates a new instance.
      LengthFieldPrepender​(int lengthFieldLength, int lengthAdjustment, boolean lengthIncludesLengthFieldLength)
      Creates a new instance.
      LengthFieldPrepender​(ByteOrder byteOrder, int lengthFieldLength, int lengthAdjustment, boolean lengthIncludesLengthFieldLength)
      Creates a new instance.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void encode​(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf msg, List<Object> out)
      Encode from one message to an other.
      • Methods inherited from class io.netty.channel.ChannelOutboundHandlerAdapter

        bind, close, connect, deregister, disconnect, flush, read
      • Methods inherited from class io.netty.channel.ChannelHandlerAdapter

        ensureNotSharable, exceptionCaught, handlerAdded, handlerRemoved, isSharable
      • Methods inherited from interface io.netty.channel.ChannelHandler

        exceptionCaught, handlerAdded, handlerRemoved
    • 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
      • LengthFieldPrepender

        public LengthFieldPrepender​(int lengthFieldLength,
                                    int lengthAdjustment)
        Creates a new instance.
        Parameters:
        lengthFieldLength - the length of the prepended length field. Only 1, 2, 3, 4, and 8 are allowed.
        lengthAdjustment - the compensation value to add to the value of the length field
        Throws:
        IllegalArgumentException - if lengthFieldLength is not 1, 2, 3, 4, or 8
      • LengthFieldPrepender

        public LengthFieldPrepender​(int lengthFieldLength,
                                    int lengthAdjustment,
                                    boolean lengthIncludesLengthFieldLength)
        Creates a new instance.
        Parameters:
        lengthFieldLength - the length of the prepended length field. Only 1, 2, 3, 4, and 8 are allowed.
        lengthAdjustment - the compensation value to add to the value of the length field
        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
      • LengthFieldPrepender

        public LengthFieldPrepender​(ByteOrder byteOrder,
                                    int lengthFieldLength,
                                    int lengthAdjustment,
                                    boolean lengthIncludesLengthFieldLength)
        Creates a new instance.
        Parameters:
        byteOrder - the ByteOrder of the length field
        lengthFieldLength - the length of the prepended length field. Only 1, 2, 3, 4, and 8 are allowed.
        lengthAdjustment - the compensation value to add to the value of the length field
        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 void encode​(io.netty.channel.ChannelHandlerContext ctx,
                              io.netty.buffer.ByteBuf msg,
                              List<Object> out)
                       throws Exception
        Description copied from class: MessageToMessageEncoder
        Encode from one message to an other. This method will be called for each written message that can be handled by this encoder.
        Specified by:
        encode in class MessageToMessageEncoder<io.netty.buffer.ByteBuf>
        Parameters:
        ctx - the ChannelHandlerContext which this MessageToMessageEncoder belongs to
        msg - the message to encode to an other one
        out - the List into which the encoded msg should be added needs to do some kind of aggregation
        Throws:
        Exception - is thrown if an error occurs