Class SmtpResponseDecoder
java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.handler.codec.ByteToMessageDecoder
io.netty.handler.codec.LineBasedFrameDecoder
io.netty.handler.codec.smtp.SmtpResponseDecoder
- All Implemented Interfaces:
ChannelHandler, ChannelInboundHandler
Decoder for SMTP responses.
-
Nested Class Summary
Nested classes/interfaces inherited from class ByteToMessageDecoder
ByteToMessageDecoder.CumulatorNested classes/interfaces inherited from interface ChannelHandler
ChannelHandler.Sharable -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final intprivate static final intprivate List<CharSequence> private final intprivate longFields inherited from class ByteToMessageDecoder
COMPOSITE_CUMULATOR, MERGE_CUMULATOR -
Constructor Summary
ConstructorsConstructorDescriptionSmtpResponseDecoder(int maxLineLength) Creates a new instance that enforces the givenmaxLineLengthand a default limit of 64 KiB on the accumulated size of a multi-line response.SmtpResponseDecoder(int maxLineLength, int maxResponseSize) Creates a new instance that enforces the givenmaxLineLengthandmaxResponseSize. -
Method Summary
Modifier and TypeMethodDescriptionprotected SmtpResponsedecode(ChannelHandlerContext ctx, ByteBuf buffer) Create a frame out of theByteBufand return it.private static DecoderExceptionnewDecoderException(ByteBuf buffer, int readerIndex, int readable) private static intParses the io.netty.handler.codec.smtp code without any allocation, which is three digits.private static intparseNumber(byte b) private voidreset()Methods inherited from class LineBasedFrameDecoder
decodeMethods inherited from class ByteToMessageDecoder
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggeredMethods inherited from class ChannelInboundHandlerAdapter
channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaughtMethods inherited from class ChannelHandlerAdapter
ensureNotSharable, handlerAdded, isSharableMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ChannelHandler
handlerAdded
-
Field Details
-
DEFAULT_MAX_RESPONSE_SIZE
private static final int DEFAULT_MAX_RESPONSE_SIZE- See Also:
-
DETAIL_ENTRY_OVERHEAD
private static final int DETAIL_ENTRY_OVERHEAD- See Also:
-
maxResponseSize
private final int maxResponseSize -
details
-
responseSize
private long responseSize
-
-
Constructor Details
-
SmtpResponseDecoder
public SmtpResponseDecoder(int maxLineLength) Creates a new instance that enforces the givenmaxLineLengthand a default limit of 64 KiB on the accumulated size of a multi-line response.- Parameters:
maxLineLength- the maximum length of a single response line, in bytes.
-
SmtpResponseDecoder
public SmtpResponseDecoder(int maxLineLength, int maxResponseSize) Creates a new instance that enforces the givenmaxLineLengthandmaxResponseSize.The lines of a multi-line response are buffered until its terminating line arrives.
maxResponseSizebounds that buffering. Once it is exceeded, decoding fails with aTooLongFrameException. The limit is approximate and tracks retained memory rather than bytes received, as it charges each buffered line a fixed object overhead in addition to its detail bytes, and ignores the response code, the separator and the terminating line.- Parameters:
maxLineLength- the maximum length of a single response line, in bytes.maxResponseSize- the maximum accumulated size of a multi-line response, in bytes.
-
-
Method Details
-
decode
Description copied from class:LineBasedFrameDecoderCreate a frame out of theByteBufand return it.- Overrides:
decodein classLineBasedFrameDecoder- Parameters:
ctx- theChannelHandlerContextwhich thisByteToMessageDecoderbelongs tobuffer- theByteBuffrom which to read data- Returns:
- frame the
ByteBufwhich represent the frame ornullif no frame could be created. - Throws:
Exception
-
reset
private void reset() -
newDecoderException
-
parseCode
Parses the io.netty.handler.codec.smtp code without any allocation, which is three digits. -
parseNumber
private static int parseNumber(byte b)
-