public class PrefixedStringDecoder extends CumulativeProtocolDecoder
ProtocolDecoder which decodes a String using a fixed-length length prefix.| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_MAX_DATA_LENGTH |
static int |
DEFAULT_PREFIX_LENGTH |
| Constructor and Description |
|---|
PrefixedStringDecoder(Charset charset) |
PrefixedStringDecoder(Charset charset,
int prefixLength) |
PrefixedStringDecoder(Charset charset,
int prefixLength,
int maxDataLength) |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
doDecode(IoSession session,
IoBuffer in,
ProtocolDecoderOutput out)
Implement this method to consume the specified cumulative buffer and
decode its content into message(s).
|
int |
getMaxDataLength()
Gets the maximum number of bytes allowed for a single String
|
int |
getPrefixLength()
Gets the length of the length prefix (1, 2, or 4)
|
void |
setMaxDataLength(int maxDataLength)
Sets the maximum allowed value specified as data length in the incoming data
|
void |
setPrefixLength(int prefixLength)
Sets the number of bytes used by the length prefix
|
decode, disposefinishDecodepublic static final int DEFAULT_PREFIX_LENGTH
public static final int DEFAULT_MAX_DATA_LENGTH
public PrefixedStringDecoder(Charset charset, int prefixLength, int maxDataLength)
charset - the charset to use for encodingprefixLength - the length of the prefixmaxDataLength - maximum number of bytes allowed for a single Stringpublic PrefixedStringDecoder(Charset charset, int prefixLength)
public PrefixedStringDecoder(Charset charset)
public void setPrefixLength(int prefixLength)
prefixLength - the length of the length prefix (1, 2, or 4)public int getPrefixLength()
public void setMaxDataLength(int maxDataLength)
Useful for preventing an OutOfMemory attack by the peer.
The decoder will throw a BufferDataException when data length
specified in the incoming data is greater than maxDataLength
The default value is DEFAULT_MAX_DATA_LENGTH.
maxDataLength - maximum allowed value specified as data length in the incoming datapublic int getMaxDataLength()
protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception
CumulativeProtocolDecoderdoDecode in class CumulativeProtocolDecoderin - the cumulative bufferException - if cannot decode in.