decode() — netty Function Reference
Architecture documentation for the decode() function in MqttDecoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD a35298c8_9a5c_3e14_ccb3_e2c50cd85c73["decode()"] c4faa729_e212_a3dd_9d90_3e8fd908d755["MqttDecoder"] a35298c8_9a5c_3e14_ccb3_e2c50cd85c73 -->|defined in| c4faa729_e212_a3dd_9d90_3e8fd908d755 style a35298c8_9a5c_3e14_ccb3_e2c50cd85c73 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttDecoder.java lines 111–168
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf buffer, List<Object> out) throws Exception {
switch (state()) {
case READ_FIXED_HEADER: try {
mqttFixedHeader = decodeFixedHeader(ctx, buffer);
bytesRemainingInVariablePart = mqttFixedHeader.remainingLength();
checkpoint(DecoderState.READ_VARIABLE_HEADER);
// fall through
} catch (Exception cause) {
out.add(invalidMessage(cause));
return;
}
case READ_VARIABLE_HEADER: try {
int bytesRemainingBeforeVariableHeader = bytesRemainingInVariablePart;
variableHeader = decodeVariableHeader(ctx, buffer, mqttFixedHeader);
if (bytesRemainingBeforeVariableHeader > maxBytesInMessage) {
buffer.skipBytes(actualReadableBytes());
throw new TooLongFrameException("message length exceeds " + maxBytesInMessage + ": "
+ bytesRemainingBeforeVariableHeader);
}
checkpoint(DecoderState.READ_PAYLOAD);
// fall through
} catch (Exception cause) {
out.add(invalidMessage(cause));
return;
}
case READ_PAYLOAD: try {
final Object decodedPayload =
decodePayload(
ctx,
buffer,
mqttFixedHeader.messageType(),
maxClientIdLength,
variableHeader);
checkpoint(DecoderState.READ_FIXED_HEADER);
MqttMessage message = MqttMessageFactory.newMessage(
mqttFixedHeader, variableHeader, decodedPayload);
mqttFixedHeader = null;
variableHeader = null;
out.add(message);
break;
} catch (Exception cause) {
out.add(invalidMessage(cause));
return;
}
case BAD_MESSAGE:
// Keep discarding until disconnection.
buffer.skipBytes(actualReadableBytes());
break;
default:
// Shouldn't reach here.
throw new Error("Unexpected mqtt decoder state: " + state());
}
}
Domain
Subdomains
Source
Frequently Asked Questions
What does decode() do?
decode() is a function in the netty codebase, defined in codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttDecoder.java.
Where is decode() defined?
decode() is defined in codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttDecoder.java at line 111.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free