Class TextLineDecoder
java.lang.Object
org.apache.mina.filter.codec.textline.TextLineDecoder
- All Implemented Interfaces:
ProtocolDecoder
A
ProtocolDecoder which decodes a text line into a string.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classA Context used during the decoding of a lin. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intThe default maximum buffer length.private final Charsetprivate static final AttributeKeyprivate IoBufferAn IoBuffer containing the delimiterprivate final LineDelimiterThe delimiter used to determinate when a line has been fully decodedprivate intThe default maximum Line length. -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new instance with the current defaultCharsetandLineDelimiter.AUTOdelimiter.TextLineDecoder(String delimiter) Creates a new instance with the current defaultCharsetand the specifieddelimiter.TextLineDecoder(Charset charset) Creates a new instance with the spcifiedcharsetandLineDelimiter.AUTOdelimiter.TextLineDecoder(Charset charset, String delimiter) Creates a new instance with the spcifiedcharsetand the specifieddelimiter.TextLineDecoder(Charset charset, LineDelimiter delimiter) Creates a new instance with the specifiedcharsetand the specifieddelimiter.TextLineDecoder(LineDelimiter delimiter) Creates a new instance with the current defaultCharsetand the specifieddelimiter. -
Method Summary
Modifier and TypeMethodDescriptionvoiddecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) Decodes binary or protocol-specific content into higher-level message objects.private voiddecodeAuto(TextLineDecoder.Context ctx, IoSession session, IoBuffer in, ProtocolDecoderOutput out) Decode a line using the default delimiter on the current systemprivate voiddecodeNormal(TextLineDecoder.Context ctx, IoSession session, IoBuffer in, ProtocolDecoderOutput out) Decode a line using the delimiter defined by the callervoidReleases all resources related with this decoder.voidfinishDecode(IoSession session, ProtocolDecoderOutput out) Invoked when the specifiedsessionis closed.intprivate TextLineDecoder.ContextgetContext(IoSession session) intvoidsetBufferLength(int bufferLength) Sets the default buffer size.voidsetMaxLineLength(int maxLineLength) Sets the allowed maximum size of the line to be decoded.protected voidwriteText(IoSession session, String text, ProtocolDecoderOutput out) By default, this method propagates the decoded line of text toProtocolDecoderOutput#write(Object).
-
Field Details
-
CONTEXT
-
charset
-
delimiter
The delimiter used to determinate when a line has been fully decoded -
delimBuf
An IoBuffer containing the delimiter -
maxLineLength
private int maxLineLengthThe default maximum Line length. Default to 1024. -
bufferLength
private int bufferLengthThe default maximum buffer length. Default to 128 chars.
-
-
Constructor Details
-
TextLineDecoder
public TextLineDecoder()Creates a new instance with the current defaultCharsetandLineDelimiter.AUTOdelimiter. -
TextLineDecoder
-
TextLineDecoder
Creates a new instance with the current defaultCharsetand the specifieddelimiter.- Parameters:
delimiter- The line delimiter to use
-
TextLineDecoder
Creates a new instance with the spcifiedcharsetandLineDelimiter.AUTOdelimiter.- Parameters:
charset- TheCharsetto use
-
TextLineDecoder
-
TextLineDecoder
Creates a new instance with the specifiedcharsetand the specifieddelimiter.- Parameters:
charset- TheCharsetto usedelimiter- The line delimiter to use
-
-
Method Details
-
getMaxLineLength
public int getMaxLineLength()- Returns:
- the allowed maximum size of the line to be decoded.
If the size of the line to be decoded exceeds this value, the
decoder will throw a
BufferDataException. The default value is1024(1KB).
-
setMaxLineLength
public void setMaxLineLength(int maxLineLength) Sets the allowed maximum size of the line to be decoded. If the size of the line to be decoded exceeds this value, the decoder will throw aBufferDataException. The default value is1024(1KB).- Parameters:
maxLineLength- The maximum line length
-
setBufferLength
public void setBufferLength(int bufferLength) Sets the default buffer size. This buffer is used in the Context to store the decoded line.- Parameters:
bufferLength- The default bufer size
-
getBufferLength
public int getBufferLength()- Returns:
- the allowed buffer size used to store the decoded line in the Context instance.
-
decode
Decodes binary or protocol-specific content into higher-level message objects. MINA invokesProtocolDecoder.decode(IoSession, IoBuffer, ProtocolDecoderOutput)method with read data, and then the decoder implementation puts decoded messages intoProtocolDecoderOutput.- Specified by:
decodein interfaceProtocolDecoder- Parameters:
session- The current Sessionin- the buffer to decodeout- TheProtocolDecoderOutputthat will receive the decoded message- Throws:
Exception- if the read data violated protocol specification
-
getContext
- Parameters:
session- The session for which we want the context- Returns:
- the context for this session
-
finishDecode
Invoked when the specifiedsessionis closed. This method is useful when you deal with the protocol which doesn't specify the length of a message such as HTTP response withoutcontent-lengthheader. Implement this method to process the remaining data thatProtocolDecoder.decode(IoSession, IoBuffer, ProtocolDecoderOutput)method didn't process completely.- Specified by:
finishDecodein interfaceProtocolDecoder- Parameters:
session- The current Sessionout- TheProtocolDecoderOutputthat contains the decoded message- Throws:
Exception- if the read data violated protocol specification
-
dispose
Releases all resources related with this decoder.- Specified by:
disposein interfaceProtocolDecoder- Parameters:
session- The current Session- Throws:
Exception- if failed to dispose all resources
-
decodeAuto
private void decodeAuto(TextLineDecoder.Context ctx, IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws CharacterCodingException, ProtocolDecoderException Decode a line using the default delimiter on the current system -
decodeNormal
private void decodeNormal(TextLineDecoder.Context ctx, IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws CharacterCodingException, ProtocolDecoderException Decode a line using the delimiter defined by the caller -
writeText
By default, this method propagates the decoded line of text toProtocolDecoderOutput#write(Object). You may override this method to modify the default behavior.- Parameters:
session- theIoSessionthe received data.text- the decoded textout- the upstreamProtocolDecoderOutput.
-