Example usage for io.netty.handler.codec.mqtt MqttConnectVariableHeader keepAliveTimeSeconds

List of usage examples for io.netty.handler.codec.mqtt MqttConnectVariableHeader keepAliveTimeSeconds

Introduction

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

Prototype

int keepAliveTimeSeconds

To view the source code for io.netty.handler.codec.mqtt MqttConnectVariableHeader keepAliveTimeSeconds.

Click Source Link

Usage

From source file:com.caricah.iotracah.server.mqttserver.transform.MqttIOTTransformerImpl.java

License:Apache License

@Override
public IOTMessage toIOTMessage(MqttMessage serverMessage) {

    MqttFixedHeader fxH = serverMessage.fixedHeader();

    if (null == fxH) {
        return null;
    }//from   www.j a  va2  s.c  o  m

    switch (fxH.messageType()) {

    case PUBLISH:

        MqttPublishMessage publishMessage = (MqttPublishMessage) serverMessage;

        MqttPublishVariableHeader pubVH = publishMessage.variableHeader();

        ByteBuffer byteBuffer = publishMessage.payload().nioBuffer();

        return PublishMessage.from(pubVH.messageId(), fxH.isDup(), fxH.qosLevel().value(), fxH.isRetain(),
                pubVH.topicName(), byteBuffer, true);

    case PUBACK:

        MqttPubAckMessage pubAckMessage = (MqttPubAckMessage) serverMessage;

        MqttMessageIdVariableHeader msgIdVH = pubAckMessage.variableHeader();
        return AcknowledgeMessage.from(msgIdVH.messageId());

    case PUBREC:

        msgIdVH = (MqttMessageIdVariableHeader) serverMessage.variableHeader();
        return PublishReceivedMessage.from(msgIdVH.messageId());

    case PUBREL:

        msgIdVH = (MqttMessageIdVariableHeader) serverMessage.variableHeader();
        return ReleaseMessage.from(msgIdVH.messageId(), fxH.isDup());

    case PUBCOMP:

        msgIdVH = (MqttMessageIdVariableHeader) serverMessage.variableHeader();

        return CompleteMessage.from(msgIdVH.messageId());
    case PINGREQ:
    case PINGRESP:
        return Ping.from(fxH.isDup(), fxH.qosLevel().value(), fxH.isRetain());

    case CONNECT:

        MqttConnectMessage mqttConnectMessage = (MqttConnectMessage) serverMessage;
        MqttConnectVariableHeader conVH = mqttConnectMessage.variableHeader();
        MqttConnectPayload conPayload = mqttConnectMessage.payload();

        boolean isAnnonymousConnect = (!conVH.hasPassword() && !conVH.hasUserName());

        ConnectMessage connectionMessage = ConnectMessage.from(fxH.isDup(), fxH.qosLevel().value(),
                fxH.isRetain(), conVH.name(), conVH.version(), conVH.isCleanSession(), isAnnonymousConnect,
                conPayload.clientIdentifier(), conPayload.userName(), conPayload.password(),
                conVH.keepAliveTimeSeconds(), "");

        connectionMessage.setHasWill(conVH.isWillFlag());
        connectionMessage.setRetainWill(conVH.isWillRetain());
        connectionMessage.setWillQos(conVH.willQos());
        connectionMessage.setWillTopic(conPayload.willTopic());
        connectionMessage.setWillMessage(conPayload.willMessage());
        return connectionMessage;

    case CONNACK:

        MqttConnAckMessage connAckMessage = (MqttConnAckMessage) serverMessage;
        MqttConnAckVariableHeader connAckVH = connAckMessage.variableHeader();

        return ConnectAcknowledgeMessage.from(fxH.isDup(), fxH.qosLevel().value(), fxH.isRetain(), 20,
                connAckVH.connectReturnCode());

    case SUBSCRIBE:

        MqttSubscribeMessage subMsg = (MqttSubscribeMessage) serverMessage;
        msgIdVH = subMsg.variableHeader();
        MqttSubscribePayload subPayload = subMsg.payload();

        SubscribeMessage subscribeMessage = SubscribeMessage.from(msgIdVH.messageId(), fxH.isDup(),
                fxH.qosLevel().value(), fxH.isRetain());

        subPayload.topicSubscriptions().forEach(tSub -> {
            subscribeMessage.getTopicFilterList()
                    .add(new AbstractMap.SimpleEntry<>(tSub.topicName(), tSub.qualityOfService().value()));
        });

        return subscribeMessage;

    case UNSUBSCRIBE:

        MqttUnsubscribeMessage unSubMsg = (MqttUnsubscribeMessage) serverMessage;

        msgIdVH = unSubMsg.variableHeader();
        MqttUnsubscribePayload unsubscribePayload = unSubMsg.payload();

        return UnSubscribeMessage.from(msgIdVH.messageId(), fxH.isDup(), fxH.qosLevel().value(), fxH.isRetain(),
                unsubscribePayload.topics());

    case DISCONNECT:
        return DisconnectMessage.from(false);

    default:
        return null;
    }
}

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());
    }//w  ww .  j ava2 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());
    }
}