MqttEncoder Class — netty Architecture
Architecture documentation for the MqttEncoder class in MqttEncoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 13c11c97_f8b9_b829_dd75_63846e7fcd55["MqttEncoder"] 76d5884e_0dcc_2dd3_44c3_08605dddf23f["MqttEncoder.java"] 13c11c97_f8b9_b829_dd75_63846e7fcd55 -->|defined in| 76d5884e_0dcc_2dd3_44c3_08605dddf23f 249873ae_1763_d17a_a4f1_9f3cc05a260a["MqttEncoder()"] 13c11c97_f8b9_b829_dd75_63846e7fcd55 -->|method| 249873ae_1763_d17a_a4f1_9f3cc05a260a bf17f67c_e13b_2874_0f2c_42c452929255["encode()"] 13c11c97_f8b9_b829_dd75_63846e7fcd55 -->|method| bf17f67c_e13b_2874_0f2c_42c452929255 a7b9925d_5111_9e2c_2e13_04e1c42819fc["ByteBuf()"] 13c11c97_f8b9_b829_dd75_63846e7fcd55 -->|method| a7b9925d_5111_9e2c_2e13_04e1c42819fc ccba0eb6_25da_af9a_b7d6_926ed2ffd985["getConnVariableHeaderFlag()"] 13c11c97_f8b9_b829_dd75_63846e7fcd55 -->|method| ccba0eb6_25da_af9a_b7d6_926ed2ffd985 0c2943f5_5e56_9055_be1d_2258275f171e["getFixedHeaderByte1()"] 13c11c97_f8b9_b829_dd75_63846e7fcd55 -->|method| 0c2943f5_5e56_9055_be1d_2258275f171e 3def4f1c_67d0_f2da_6583_29577090a0e8["writeVariableLengthInt()"] 13c11c97_f8b9_b829_dd75_63846e7fcd55 -->|method| 3def4f1c_67d0_f2da_6583_29577090a0e8 cc9333fe_a8bc_cfd6_337e_a856ba011d3a["nullableUtf8Bytes()"] 13c11c97_f8b9_b829_dd75_63846e7fcd55 -->|method| cc9333fe_a8bc_cfd6_337e_a856ba011d3a 79dad782_f802_b810_8291_37a8e2fb6122["nullableMaxUtf8Bytes()"] 13c11c97_f8b9_b829_dd75_63846e7fcd55 -->|method| 79dad782_f802_b810_8291_37a8e2fb6122 a3c98376_ea30_7539_2753_8e79ba77e186["writeExactUTF8String()"] 13c11c97_f8b9_b829_dd75_63846e7fcd55 -->|method| a3c98376_ea30_7539_2753_8e79ba77e186 f74bb6b2_2564_0b6f_d854_438c7e723c1a["writeEagerUTF8String()"] 13c11c97_f8b9_b829_dd75_63846e7fcd55 -->|method| f74bb6b2_2564_0b6f_d854_438c7e723c1a dbd748c5_b782_d0cd_6ae1_be4b563dd617["getVariableLengthInt()"] 13c11c97_f8b9_b829_dd75_63846e7fcd55 -->|method| dbd748c5_b782_d0cd_6ae1_be4b563dd617
Relationship Graph
Source Code
codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttEncoder.java lines 69–765
@ChannelHandler.Sharable
public final class MqttEncoder extends MessageToMessageEncoder<MqttMessage> {
public static final MqttEncoder INSTANCE = new MqttEncoder();
private MqttEncoder() {
super(MqttMessage.class);
}
@Override
protected void encode(ChannelHandlerContext ctx, MqttMessage msg, List<Object> out) throws Exception {
out.add(doEncode(ctx, msg));
}
/**
* This is the main encoding method.
* It's only visible for testing.
*
* @param message MQTT message to encode
* @return ByteBuf with encoded bytes
*/
static ByteBuf doEncode(ChannelHandlerContext ctx,
MqttMessage message) {
switch (message.fixedHeader().messageType()) {
case CONNECT:
return encodeConnectMessage(ctx, (MqttConnectMessage) message);
case CONNACK:
return encodeConnAckMessage(ctx, (MqttConnAckMessage) message);
case PUBLISH:
return encodePublishMessage(ctx, (MqttPublishMessage) message);
case SUBSCRIBE:
return encodeSubscribeMessage(ctx, (MqttSubscribeMessage) message);
case UNSUBSCRIBE:
return encodeUnsubscribeMessage(ctx, (MqttUnsubscribeMessage) message);
case SUBACK:
return encodeSubAckMessage(ctx, (MqttSubAckMessage) message);
case UNSUBACK:
if (message instanceof MqttUnsubAckMessage) {
return encodeUnsubAckMessage(ctx, (MqttUnsubAckMessage) message);
}
return encodeMessageWithOnlySingleByteFixedHeaderAndMessageId(ctx.alloc(), message);
case PUBACK:
case PUBREC:
case PUBREL:
case PUBCOMP:
return encodePubReplyMessage(ctx, message);
case DISCONNECT:
case AUTH:
return encodeReasonCodePlusPropertiesMessage(ctx, message);
case PINGREQ:
case PINGRESP:
return encodeMessageWithOnlySingleByteFixedHeader(ctx.alloc(), message);
default:
throw new IllegalArgumentException(
"Unknown message type: " + message.fixedHeader().messageType().value());
}
}
private static ByteBuf encodeConnectMessage(
ChannelHandlerContext ctx,
MqttConnectMessage message) {
int payloadBufferSize = 0;
MqttFixedHeader mqttFixedHeader = message.fixedHeader();
MqttConnectVariableHeader variableHeader = message.variableHeader();
MqttConnectPayload payload = message.payload();
MqttVersion mqttVersion = MqttVersion.fromProtocolNameAndLevel(variableHeader.name(),
(byte) variableHeader.version());
setMqttVersion(ctx, mqttVersion);
Source
Frequently Asked Questions
What is the MqttEncoder class?
MqttEncoder is a class in the netty codebase, defined in codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttEncoder.java.
Where is MqttEncoder defined?
MqttEncoder is defined in codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttEncoder.java at line 69.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free