Home / Class/ MqttEncoder Class — netty Architecture

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);

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