Class PrefixedStringEncoder

java.lang.Object
org.apache.mina.filter.codec.ProtocolEncoderAdapter
org.apache.mina.filter.codec.prefixedstring.PrefixedStringEncoder
All Implemented Interfaces:
ProtocolEncoder

public class PrefixedStringEncoder extends ProtocolEncoderAdapter
A ProtocolEncoder which encodes a string using a fixed-length length prefix.
  • Field Details

    • DEFAULT_PREFIX_LENGTH

      public static final int DEFAULT_PREFIX_LENGTH
      The default length for the prefix
      See Also:
    • DEFAULT_MAX_DATA_LENGTH

      public static final int DEFAULT_MAX_DATA_LENGTH
      The default maximum data length
      See Also:
    • charset

      private final Charset charset
    • prefixLength

      private int prefixLength
    • maxDataLength

      private int maxDataLength
  • Constructor Details

    • PrefixedStringEncoder

      public PrefixedStringEncoder(Charset charset, int prefixLength, int maxDataLength)
      Creates a new PrefixedStringEncoder instance
      Parameters:
      charset - the Charset to use for encoding
      prefixLength - the length of the prefix
      maxDataLength - maximum number of bytes allowed for a single String
    • PrefixedStringEncoder

      public PrefixedStringEncoder(Charset charset, int prefixLength)
      Creates a new PrefixedStringEncoder instance
      Parameters:
      charset - the Charset to use for encoding
      prefixLength - the length of the prefix
    • PrefixedStringEncoder

      public PrefixedStringEncoder(Charset charset)
      Creates a new PrefixedStringEncoder instance
      Parameters:
      charset - the Charset to use for encoding
    • PrefixedStringEncoder

      public PrefixedStringEncoder()
      Creates a new PrefixedStringEncoder instance
  • Method Details

    • setPrefixLength

      public void setPrefixLength(int prefixLength)
      Sets the number of bytes used by the length prefix
      Parameters:
      prefixLength - the length of the length prefix (1, 2, or 4)
    • getPrefixLength

      public int getPrefixLength()
      Gets the length of the length prefix (1, 2, or 4)
      Returns:
      length of the length prefix
    • setMaxDataLength

      public void setMaxDataLength(int maxDataLength)
      Sets the maximum number of bytes allowed for encoding a single String (including the prefix)

      The encoder will throw a IllegalArgumentException when more bytes are needed to encode a String value. The default value is DEFAULT_MAX_DATA_LENGTH.

      Parameters:
      maxDataLength - maximum number of bytes allowed for encoding a single String
    • getMaxDataLength

      public int getMaxDataLength()
      Gets the maximum number of bytes allowed for encoding a single String *
      Returns:
      maximum number of bytes allowed for encoding a single String (prefix included)
    • encode

      public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception
      Encodes higher-level message objects into binary or protocol-specific data. MINA invokes ProtocolEncoder.encode(IoSession, Object, ProtocolEncoderOutput) method with message which is popped from the session write queue, and then the encoder implementation puts encoded messages (typically IoBuffers) into ProtocolEncoderOutput.
      Parameters:
      session - The current Session
      message - the message to encode
      out - The ProtocolEncoderOutput that will receive the encoded message
      Throws:
      Exception - if the message violated protocol specification