decode() — netty Function Reference
Architecture documentation for the decode() function in Snappy.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD f2623adf_f9d0_6b9a_01bf_992a8c89c1e8["decode()"] 6a7984ff_ded6_5ba2_b4bb_f92d0d3986f8["Snappy"] f2623adf_f9d0_6b9a_01bf_992a8c89c1e8 -->|defined in| 6a7984ff_ded6_5ba2_b4bb_f92d0d3986f8 61395c44_d8f1_2ccc_d61d_8a1707cbc191["readPreamble()"] f2623adf_f9d0_6b9a_01bf_992a8c89c1e8 -->|calls| 61395c44_d8f1_2ccc_d61d_8a1707cbc191 7210bee0_d5c7_4186_aa1a_9a8f95e1e757["decodeLiteral()"] f2623adf_f9d0_6b9a_01bf_992a8c89c1e8 -->|calls| 7210bee0_d5c7_4186_aa1a_9a8f95e1e757 02f1d546_5814_3353_a804_4d9f39591d0d["decodeCopyWith1ByteOffset()"] f2623adf_f9d0_6b9a_01bf_992a8c89c1e8 -->|calls| 02f1d546_5814_3353_a804_4d9f39591d0d 5a991b7b_d13e_6b74_df07_e461641c7020["decodeCopyWith2ByteOffset()"] f2623adf_f9d0_6b9a_01bf_992a8c89c1e8 -->|calls| 5a991b7b_d13e_6b74_df07_e461641c7020 f1c4d3ee_834b_d5ad_b8b3_2d0617d38468["decodeCopyWith4ByteOffset()"] f2623adf_f9d0_6b9a_01bf_992a8c89c1e8 -->|calls| f1c4d3ee_834b_d5ad_b8b3_2d0617d38468 style f2623adf_f9d0_6b9a_01bf_992a8c89c1e8 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-compression/src/main/java/io/netty/handler/codec/compression/Snappy.java lines 315–393
public void decode(ByteBuf in, ByteBuf out) {
while (in.isReadable()) {
switch (state) {
case READING_PREAMBLE:
int uncompressedLength = readPreamble(in);
if (uncompressedLength == PREAMBLE_NOT_FULL) {
// We've not yet read all of the preamble, so wait until we can
return;
}
if (uncompressedLength == 0) {
// Should never happen, but it does mean we have nothing further to do
return;
}
out.ensureWritable(uncompressedLength);
state = State.READING_TAG;
// fall through
case READING_TAG:
if (!in.isReadable()) {
return;
}
tag = in.readByte();
switch (tag & 0x03) {
case LITERAL:
state = State.READING_LITERAL;
break;
case COPY_1_BYTE_OFFSET:
case COPY_2_BYTE_OFFSET:
case COPY_4_BYTE_OFFSET:
state = State.READING_COPY;
break;
}
break;
case READING_LITERAL:
int literalWritten = decodeLiteral(tag, in, out);
if (literalWritten != NOT_ENOUGH_INPUT) {
state = State.READING_TAG;
written += literalWritten;
} else {
// Need to wait for more data
return;
}
break;
case READING_COPY:
int decodeWritten;
switch (tag & 0x03) {
case COPY_1_BYTE_OFFSET:
decodeWritten = decodeCopyWith1ByteOffset(tag, in, out, written);
if (decodeWritten != NOT_ENOUGH_INPUT) {
state = State.READING_TAG;
written += decodeWritten;
} else {
// Need to wait for more data
return;
}
break;
case COPY_2_BYTE_OFFSET:
decodeWritten = decodeCopyWith2ByteOffset(tag, in, out, written);
if (decodeWritten != NOT_ENOUGH_INPUT) {
state = State.READING_TAG;
written += decodeWritten;
} else {
// Need to wait for more data
return;
}
break;
case COPY_4_BYTE_OFFSET:
decodeWritten = decodeCopyWith4ByteOffset(tag, in, out, written);
if (decodeWritten != NOT_ENOUGH_INPUT) {
state = State.READING_TAG;
written += decodeWritten;
} else {
// Need to wait for more data
return;
}
break;
}
}
}
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does decode() do?
decode() is a function in the netty codebase, defined in codec-compression/src/main/java/io/netty/handler/codec/compression/Snappy.java.
Where is decode() defined?
decode() is defined in codec-compression/src/main/java/io/netty/handler/codec/compression/Snappy.java at line 315.
What does decode() call?
decode() calls 5 function(s): decodeCopyWith1ByteOffset, decodeCopyWith2ByteOffset, decodeCopyWith4ByteOffset, decodeLiteral, readPreamble.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free