Home / Class/ MqttMessageFactory Class — netty Architecture

MqttMessageFactory Class — netty Architecture

Architecture documentation for the MqttMessageFactory class in MqttMessageFactory.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  f4602419_6c44_76e1_38c7_f5e899b7ad8d["MqttMessageFactory"]
  45c2d0ab_e021_26dc_1e69_4c5e356c8d1a["MqttMessageFactory.java"]
  f4602419_6c44_76e1_38c7_f5e899b7ad8d -->|defined in| 45c2d0ab_e021_26dc_1e69_4c5e356c8d1a
  e7dfb2d9_eef5_1e66_5af7_5277f383a468["MqttMessage()"]
  f4602419_6c44_76e1_38c7_f5e899b7ad8d -->|method| e7dfb2d9_eef5_1e66_5af7_5277f383a468
  f1960606_4bdd_d0e8_eb07_95d2a96af38c["MqttMessageFactory()"]
  f4602419_6c44_76e1_38c7_f5e899b7ad8d -->|method| f1960606_4bdd_d0e8_eb07_95d2a96af38c

Relationship Graph

Source Code

codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttMessageFactory.java lines 25–102

public final class MqttMessageFactory {

    public static MqttMessage newMessage(MqttFixedHeader mqttFixedHeader, Object variableHeader, Object payload) {
        switch (mqttFixedHeader.messageType()) {
            case CONNECT :
                return new MqttConnectMessage(
                        mqttFixedHeader,
                        (MqttConnectVariableHeader) variableHeader,
                        (MqttConnectPayload) payload);

            case CONNACK:
                return new MqttConnAckMessage(mqttFixedHeader, (MqttConnAckVariableHeader) variableHeader);

            case SUBSCRIBE:
                return new MqttSubscribeMessage(
                        mqttFixedHeader,
                        (MqttMessageIdVariableHeader) variableHeader,
                        (MqttSubscribePayload) payload);

            case SUBACK:
                return new MqttSubAckMessage(
                        mqttFixedHeader,
                        (MqttMessageIdVariableHeader) variableHeader,
                        (MqttSubAckPayload) payload);

            case UNSUBACK:
                return new MqttUnsubAckMessage(
                        mqttFixedHeader,
                        (MqttMessageIdVariableHeader) variableHeader,
                        (MqttUnsubAckPayload) payload);

            case UNSUBSCRIBE:
                return new MqttUnsubscribeMessage(
                        mqttFixedHeader,
                        (MqttMessageIdVariableHeader) variableHeader,
                        (MqttUnsubscribePayload) payload);

            case PUBLISH:
                return new MqttPublishMessage(
                        mqttFixedHeader,
                        (MqttPublishVariableHeader) variableHeader,
                        (ByteBuf) payload);

            case PUBACK:
                //Having MqttPubReplyMessageVariableHeader or MqttMessageIdVariableHeader
                return new MqttPubAckMessage(mqttFixedHeader, (MqttMessageIdVariableHeader) variableHeader);
            case PUBREC:
            case PUBREL:
            case PUBCOMP:
                //Having MqttPubReplyMessageVariableHeader or MqttMessageIdVariableHeader
                return new MqttMessage(mqttFixedHeader, variableHeader);

            case PINGREQ:
            case PINGRESP:
                return new MqttMessage(mqttFixedHeader);

            case DISCONNECT:
            case AUTH:
                //Having MqttReasonCodeAndPropertiesVariableHeader
                return new MqttMessage(mqttFixedHeader,
                        variableHeader);

            default:
                throw new IllegalArgumentException("unknown message type: " + mqttFixedHeader.messageType());
        }
    }

    public static MqttMessage newInvalidMessage(Throwable cause) {
        return new MqttMessage(null, null, null, DecoderResult.failure(cause));
    }

    public static MqttMessage newInvalidMessage(MqttFixedHeader mqttFixedHeader, Object variableHeader,
                                                Throwable cause) {
        return new MqttMessage(mqttFixedHeader, variableHeader, null, DecoderResult.failure(cause));
    }

    private MqttMessageFactory() { }
}

Frequently Asked Questions

What is the MqttMessageFactory class?
MqttMessageFactory is a class in the netty codebase, defined in codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttMessageFactory.java.
Where is MqttMessageFactory defined?
MqttMessageFactory is defined in codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttMessageFactory.java at line 25.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free