Example usage for io.netty.handler.codec.mqtt MqttConnAckVariableHeader isSessionPresent

List of usage examples for io.netty.handler.codec.mqtt MqttConnAckVariableHeader isSessionPresent

Introduction

In this page you can find the example usage for io.netty.handler.codec.mqtt MqttConnAckVariableHeader isSessionPresent.

Prototype

public boolean isSessionPresent() 

Source Link

Usage

From source file:org.apache.activemq.artemis.core.protocol.mqtt.MQTTUtil.java

License:Apache License

public static void traceMessage(MQTTSessionState state, MqttMessage message, boolean inbound) {
    StringBuilder log = new StringBuilder("MQTT(");

    if (state != null) {
        log.append(state.getClientId());
    }/*from   w  w  w. jav  a  2 s  .  c  om*/

    if (inbound) {
        log.append("): IN << ");
    } else {
        log.append("): OUT >> ");
    }

    if (message.fixedHeader() != null) {
        log.append(message.fixedHeader().messageType().toString());

        if (message.variableHeader() instanceof MqttMessageIdVariableHeader) {
            log.append("(" + ((MqttMessageIdVariableHeader) message.variableHeader()).messageId() + ")");
        }

        switch (message.fixedHeader().messageType()) {
        case PUBLISH:
            MqttPublishVariableHeader publishHeader = (MqttPublishVariableHeader) message.variableHeader();
            String publishPayload = ((MqttPublishMessage) message).payload().toString(StandardCharsets.UTF_8);
            final int maxPayloadLogSize = 256;
            log.append("(" + publishHeader.packetId() + ")").append(" topic=" + publishHeader.topicName())
                    .append(", qos=" + message.fixedHeader().qosLevel())
                    .append(", retain=" + message.fixedHeader().isRetain())
                    .append(", dup=" + message.fixedHeader().isDup())
                    .append(", payload=" + (publishPayload.length() > maxPayloadLogSize
                            ? publishPayload.substring(0, maxPayloadLogSize)
                            : publishPayload));
            break;
        case CONNECT:
            MqttConnectVariableHeader connectHeader = (MqttConnectVariableHeader) message.variableHeader();
            MqttConnectPayload payload = ((MqttConnectMessage) message).payload();
            log.append(" protocol=(").append(connectHeader.name()).append(", ").append(connectHeader.version())
                    .append(")").append(", hasPassword=").append(connectHeader.hasPassword())
                    .append(", isCleanSession=").append(connectHeader.isCleanSession())
                    .append(", keepAliveTimeSeconds=").append(connectHeader.keepAliveTimeSeconds())
                    .append(", clientIdentifier=").append(payload.clientIdentifier()).append(", hasUserName=")
                    .append(connectHeader.hasUserName());
            if (connectHeader.hasUserName()) {
                log.append(", userName=").append(payload.userName());
            }
            log.append(", isWillFlag=").append(connectHeader.isWillFlag());
            if (connectHeader.isWillFlag()) {
                log.append(", willQos=").append(connectHeader.willQos()).append(", isWillRetain=")
                        .append(connectHeader.isWillRetain()).append(", willTopic=")
                        .append(payload.willTopic());
            }
            break;
        case CONNACK:
            MqttConnAckVariableHeader connackHeader = (MqttConnAckVariableHeader) message.variableHeader();
            log.append(" connectReturnCode=").append(connackHeader.connectReturnCode().byteValue())
                    .append(", sessionPresent=").append(connackHeader.isSessionPresent());
            break;
        case SUBSCRIBE:
            for (MqttTopicSubscription sub : ((MqttSubscribeMessage) message).payload().topicSubscriptions()) {
                log.append("\n\t" + sub.topicName() + " : " + sub.qualityOfService());
            }
            break;
        case SUBACK:
            for (Integer qos : ((MqttSubAckMessage) message).payload().grantedQoSLevels()) {
                log.append("\n\t" + qos);
            }
            break;
        case UNSUBSCRIBE:
            for (String topic : ((MqttUnsubscribeMessage) message).payload().topics()) {
                log.append("\n\t" + topic);
            }
            break;
        }

        logger.trace(log.toString());
    }
}