ByteBuf() — netty Function Reference
Architecture documentation for the ByteBuf() function in HttpObjectDecoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 4c5fc4a7_9083_906d_2990_e8117307a129["ByteBuf()"] ef24e48c_0b83_21cd_41f1_a114c4a0039f["HeaderParser"] 4c5fc4a7_9083_906d_2990_e8117307a129 -->|defined in| ef24e48c_0b83_21cd_41f1_a114c4a0039f style 4c5fc4a7_9083_906d_2990_e8117307a129 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectDecoder.java lines 1170–1217
public ByteBuf parse(ByteBuf buffer, Runnable strictCRLFCheck) {
final int readableBytes = buffer.readableBytes();
final int readerIndex = buffer.readerIndex();
final int maxBodySize = maxLength - size;
assert maxBodySize >= 0;
// adding 2 to account for both CR (if present) and LF
// don't remove 2L: it's key to cover maxLength = Integer.MAX_VALUE
final long maxBodySizeWithCRLF = maxBodySize + 2L;
final int toProcess = (int) Math.min(maxBodySizeWithCRLF, readableBytes);
final int toIndexExclusive = readerIndex + toProcess;
assert toIndexExclusive >= readerIndex;
final int indexOfLf = buffer.indexOf(readerIndex, toIndexExclusive, HttpConstants.LF);
if (indexOfLf == -1) {
if (readableBytes > maxBodySize) {
// TODO: Respond with Bad Request and discard the traffic
// or close the connection.
// No need to notify the upstream handlers - just log.
// If decoding a response, just throw an exception.
throw newException(maxLength);
}
return null;
}
final int endOfSeqIncluded;
if (indexOfLf > readerIndex && buffer.getByte(indexOfLf - 1) == HttpConstants.CR) {
// Drop CR if we had a CRLF pair
endOfSeqIncluded = indexOfLf - 1;
} else {
if (strictCRLFCheck != null) {
strictCRLFCheck.run();
}
endOfSeqIncluded = indexOfLf;
}
final int newSize = endOfSeqIncluded - readerIndex;
if (newSize == 0) {
seq.clear();
buffer.readerIndex(indexOfLf + 1);
return seq;
}
int size = this.size + newSize;
if (size > maxLength) {
throw newException(maxLength);
}
this.size = size;
seq.clear();
seq.writeBytes(buffer, readerIndex, newSize);
buffer.readerIndex(indexOfLf + 1);
return seq;
}
Domain
Subdomains
Source
Frequently Asked Questions
What does ByteBuf() do?
ByteBuf() is a function in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectDecoder.java.
Where is ByteBuf() defined?
ByteBuf() is defined in codec-http/src/main/java/io/netty/handler/codec/http/HttpObjectDecoder.java at line 1170.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free