LineParser Class — netty Architecture
Architecture documentation for the LineParser class in HttpObjectDecoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD f6d5dc41_af35_bf8a_75da_1474a14923bc["LineParser"] f15bbbf6_e315_8ba2_24a1_7970ea7b58eb["HttpObjectDecoder.java"] f6d5dc41_af35_bf8a_75da_1474a14923bc -->|defined in| f15bbbf6_e315_8ba2_24a1_7970ea7b58eb 6ecc492d_29c4_32a5_ca59_bd99b14a1529["LineParser()"] f6d5dc41_af35_bf8a_75da_1474a14923bc -->|method| 6ecc492d_29c4_32a5_ca59_bd99b14a1529 39c2c817_627b_3881_f9ba_0e89bdbe5fdd["ByteBuf()"] f6d5dc41_af35_bf8a_75da_1474a14923bc -->|method| 39c2c817_627b_3881_f9ba_0e89bdbe5fdd d87a93a4_b50d_553a_ff04_98f1cc468821["skipControlChars()"] f6d5dc41_af35_bf8a_75da_1474a14923bc -->|method| d87a93a4_b50d_553a_ff04_98f1cc468821 52765229_f204_eb41_a209_57ec9b96af97["TooLongFrameException()"] f6d5dc41_af35_bf8a_75da_1474a14923bc -->|method| 52765229_f204_eb41_a209_57ec9b96af97
Relationship Graph
Source Code
codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectDecoder.java lines 1228–1270
private final class LineParser extends HeaderParser {
LineParser(ByteBuf seq, int maxLength) {
super(seq, maxLength);
}
@Override
public ByteBuf parse(ByteBuf buffer, Runnable strictCRLFCheck) {
// Suppress a warning because HeaderParser.reset() is supposed to be called
reset();
final int readableBytes = buffer.readableBytes();
if (readableBytes == 0) {
return null;
}
if (currentState == State.SKIP_CONTROL_CHARS &&
skipControlChars(buffer, readableBytes, buffer.readerIndex())) {
return null;
}
return super.parse(buffer, strictCRLFCheck);
}
private boolean skipControlChars(ByteBuf buffer, int readableBytes, int readerIndex) {
assert currentState == State.SKIP_CONTROL_CHARS;
final int maxToSkip = Math.min(maxLength, readableBytes);
final int firstNonControlIndex = buffer.forEachByte(readerIndex, maxToSkip, SKIP_CONTROL_CHARS_BYTES);
if (firstNonControlIndex == -1) {
buffer.skipBytes(maxToSkip);
if (readableBytes > maxLength) {
throw newException(maxLength);
}
return true;
}
// from now on we don't care about control chars
buffer.readerIndex(firstNonControlIndex);
currentState = State.READ_INITIAL;
return false;
}
@Override
protected TooLongFrameException newException(int maxLength) {
return new TooLongHttpLineException("An HTTP line is larger than " + maxLength + " bytes.");
}
}
Source
Frequently Asked Questions
What is the LineParser class?
LineParser is a class in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectDecoder.java.
Where is LineParser defined?
LineParser is defined in codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectDecoder.java at line 1228.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free