Example usage for io.netty.handler.codec.mqtt MqttFixedHeader MqttFixedHeader

List of usage examples for io.netty.handler.codec.mqtt MqttFixedHeader MqttFixedHeader

Introduction

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

Prototype

public MqttFixedHeader(MqttMessageType messageType, boolean isDup, MqttQoS qosLevel, boolean isRetain,
            int remainingLength) 

Source Link

Usage

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

License:Apache License

@Override
public MqttMessage toServerMessage(IOTMessage internalMessage) {

    switch (internalMessage.getMessageType()) {

    case PublishMessage.MESSAGE_TYPE:

        PublishMessage pubMsg = (PublishMessage) internalMessage;
        //We generate a publish message.
        MqttPublishVariableHeader respVariableHeader = new MqttPublishVariableHeader(pubMsg.getTopic(),
                pubMsg.getMessageId());//from   w w  w. j a  v a2 s. c  om

        MqttFixedHeader respFixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, pubMsg.getIsDuplicate(),
                MqttQoS.valueOf(pubMsg.getQos()), pubMsg.getIsRetain(), 0);
        ByteBuf content = Unpooled.wrappedBuffer((byte[]) pubMsg.getPayload());

        return MqttMessageFactory.newMessage(respFixedHeader, respVariableHeader, content);

    case AcknowledgeMessage.MESSAGE_TYPE:

        //Generate a PUBACK for qos 1 messages.
        AcknowledgeMessage ackMsg = (AcknowledgeMessage) internalMessage;
        MqttFixedHeader ackFixedHeader = new MqttFixedHeader(MqttMessageType.PUBACK, ackMsg.isDup(),
                MqttQoS.valueOf(ackMsg.getQos()), ackMsg.isRetain(), 0);
        MqttMessageIdVariableHeader msgIdVariableHeader = MqttMessageIdVariableHeader
                .from(ackMsg.getMessageId());
        return MqttMessageFactory.newMessage(ackFixedHeader, msgIdVariableHeader, null);

    case PublishReceivedMessage.MESSAGE_TYPE:

        //We need to generate a PUBREC message to acknowledge reception of message.
        PublishReceivedMessage pubrec = (PublishReceivedMessage) internalMessage;
        MqttFixedHeader recFixedHeader = new MqttFixedHeader(MqttMessageType.PUBREC, false,
                MqttQoS.valueOf(pubrec.getQos()), false, 0);
        msgIdVariableHeader = MqttMessageIdVariableHeader.from(pubrec.getMessageId());
        return MqttMessageFactory.newMessage(recFixedHeader, msgIdVariableHeader, null);

    case ReleaseMessage.MESSAGE_TYPE:

        //We need to generate a PUBREL message to release cached message.
        ReleaseMessage pubrel = (ReleaseMessage) internalMessage;
        MqttFixedHeader relFixedHeader = new MqttFixedHeader(MqttMessageType.PUBREL, pubrel.isDup(),
                MqttQoS.valueOf(pubrel.getQos()), false, 0);
        msgIdVariableHeader = MqttMessageIdVariableHeader.from(pubrel.getMessageId());
        return MqttMessageFactory.newMessage(relFixedHeader, msgIdVariableHeader, null);

    case CompleteMessage.MESSAGE_TYPE:

        //We need to generate a PUBCOMP message to acknowledge finalization of transmission of qos 2 message.
        CompleteMessage destroyMessage = (CompleteMessage) internalMessage;
        MqttFixedHeader compFixedHeader = new MqttFixedHeader(MqttMessageType.PUBCOMP, false,
                MqttQoS.valueOf(destroyMessage.getQos()), false, 0);
        msgIdVariableHeader = MqttMessageIdVariableHeader.from(destroyMessage.getMessageId());
        return MqttMessageFactory.newMessage(compFixedHeader, msgIdVariableHeader, null);

    case Ping.MESSAGE_TYPE:

        Ping ping = (Ping) internalMessage;
        //We need to generate a PINGRESP message to respond to a PINGREQ.
        recFixedHeader = new MqttFixedHeader(MqttMessageType.PINGRESP, ping.isDup(),
                MqttQoS.valueOf(ping.getQos()), ping.isRetain(), 0);
        return MqttMessageFactory.newMessage(recFixedHeader, null, null);

    case ConnectAcknowledgeMessage.MESSAGE_TYPE:

        ConnectAcknowledgeMessage connAck = (ConnectAcknowledgeMessage) internalMessage;
        MqttFixedHeader connAckFixedHeader = new MqttFixedHeader(MqttMessageType.CONNACK, connAck.isDup(),
                MqttQoS.valueOf(connAck.getQos()), connAck.isRetain(), 0);
        MqttConnAckVariableHeader conAckVariableHeader = new MqttConnAckVariableHeader(connAck.getReturnCode());
        //Todo: Raise netty codec issue for lack of codec 3.2.2.2 Session Present flag.

        return MqttMessageFactory.newMessage(connAckFixedHeader, conAckVariableHeader, null);

    case SubscribeAcknowledgeMessage.MESSAGE_TYPE:

        SubscribeAcknowledgeMessage subAckMsg = (SubscribeAcknowledgeMessage) internalMessage;
        MqttSubAckPayload payload = new MqttSubAckPayload(subAckMsg.getGrantedQos());

        MqttFixedHeader subAckFixedHeader = new MqttFixedHeader(MqttMessageType.SUBACK, subAckMsg.isDup(),
                MqttQoS.valueOf(subAckMsg.getQos()), subAckMsg.isRetain(), 0);
        MqttMessageIdVariableHeader subAckVariableHeader = MqttMessageIdVariableHeader
                .from(subAckMsg.getMessageId());
        return MqttMessageFactory.newMessage(subAckFixedHeader, subAckVariableHeader, payload);

    case UnSubscribeAcknowledgeMessage.MESSAGE_TYPE:

        UnSubscribeAcknowledgeMessage unSubAckMsg = (UnSubscribeAcknowledgeMessage) internalMessage;
        respFixedHeader = new MqttFixedHeader(MqttMessageType.UNSUBACK, unSubAckMsg.isDup(),
                MqttQoS.valueOf(unSubAckMsg.getQos()), unSubAckMsg.isRetain(), 0);
        MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader
                .from(unSubAckMsg.getMessageId());
        return MqttMessageFactory.newMessage(respFixedHeader, variableHeader, null);

    default:
        /**
         *
         * Internally these are not expected to get here.
         * In such cases we just return a null
         * and log this anomaly as a gross error.
         *
         *
         * if(internalMessage instanceof ConnectMessage ||
         * internalMessage instanceof SubscribeMessage ||
         * internalMessage instanceof UnSubscribeMessage ||
         * internalMessage instanceof DisconnectMessage ||
         * internalMessage instanceof WillMessage ){
         * }
         **/

        return null;
    }

}

From source file:io.crate.mqtt.netty.MqttMessages.java

License:Apache License

public static MqttMessage newPingRequest(MqttQoS qos) {
    MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PINGREQ, false, qos, false, 0);
    return new MqttMessage(mqttFixedHeader);
}

From source file:io.crate.mqtt.netty.MqttMessages.java

License:Apache License

static MqttMessage newDisconnectMessage(MqttQoS qos) {
    MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.DISCONNECT, false, qos, false, 0);
    return new MqttMessage(mqttFixedHeader);
}

From source file:io.crate.mqtt.protocol.MqttMessageFactory.java

static MqttMessage newPingResponse(MqttQoS qos) {
    MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PINGRESP, false, qos, false, 0);
    return new MqttMessage(mqttFixedHeader);
}

From source file:io.crate.mqtt.protocol.MqttMessageFactory.java

static MqttMessage newPubAckMessage(MqttQoS qos, boolean isDup, int packetId) {
    MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PUBACK, isDup, qos, false, 0);
    MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(packetId);
    return new MqttMessage(mqttFixedHeader, variableHeader);
}

From source file:io.crate.mqtt.protocol.MqttProcessorTest.java

@Test
public void testConnectWithWrongMqttVersion() throws Exception {
    EmbeddedChannel ch = new EmbeddedChannel();

    MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.CONNECT, false, MqttQoS.AT_LEAST_ONCE,
            false, 0);/*from www  .  ja  v  a2 s.  com*/
    MqttConnectVariableHeader variableHeader = new MqttConnectVariableHeader("connect", (byte) 1, false, false,
            false, (byte) 1, false, false, 60);
    MqttConnectPayload payload = new MqttConnectPayload("mqttClient", "someTopic", new byte[0], null, null);
    processor.handleConnect(ch, (MqttConnectMessage) io.netty.handler.codec.mqtt.MqttMessageFactory
            .newMessage(fixedHeader, variableHeader, payload));

    MqttConnAckMessage response = ch.readOutbound();
    assertThat(response.variableHeader().connectReturnCode(),
            is(MqttConnectReturnCode.CONNECTION_REFUSED_UNACCEPTABLE_PROTOCOL_VERSION));
    assertFalse(response.variableHeader().isSessionPresent());
}

From source file:io.moquette.server.HazelcastListener.java

License:Open Source License

@Override
public void onMessage(Message<HazelcastMsg> msg) {
    try {/*from   ww  w . j  a v a2 s. c  o  m*/
        if (!msg.getPublishingMember().equals(server.getHazelcastInstance().getCluster().getLocalMember())) {
            HazelcastMsg hzMsg = msg.getMessageObject();
            LOG.info("{} received from hazelcast for topic {} message: {}", hzMsg.getClientId(),
                    hzMsg.getTopic(), hzMsg.getPayload());
            // TODO pass forward this information in somehow publishMessage.setLocal(false);

            MqttQoS qos = MqttQoS.valueOf(hzMsg.getQos());
            MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, false, qos, false, 0);
            MqttPublishVariableHeader varHeader = new MqttPublishVariableHeader(hzMsg.getTopic(), 0);
            ByteBuf payload = Unpooled.wrappedBuffer(hzMsg.getPayload());
            MqttPublishMessage publishMessage = new MqttPublishMessage(fixedHeader, varHeader, payload);
            server.internalPublish(publishMessage, hzMsg.getClientId());
        }
    } catch (Exception ex) {
        LOG.error("error polling hazelcast msg queue", ex);
    }
}

From source file:io.moquette.server.ServerLowlevelMessagesIntegrationTests.java

License:Open Source License

private static MqttConnectMessage createConnectMessage(String clientID, int keepAlive) {
    MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.CONNECT, false, MqttQoS.AT_MOST_ONCE,
            false, 0);/*from w  w w.  j  ava2 s . c  om*/
    MqttConnectVariableHeader mqttConnectVariableHeader = new MqttConnectVariableHeader(
            MqttVersion.MQTT_3_1.protocolName(), MqttVersion.MQTT_3_1.protocolLevel(), false, false, false, 1,
            false, true, keepAlive);
    MqttConnectPayload mqttConnectPayload = new MqttConnectPayload(clientID, null, null, null, null);
    return new MqttConnectMessage(mqttFixedHeader, mqttConnectVariableHeader, mqttConnectPayload);
}

From source file:io.moquette.spi.impl.AbstractProtocolProcessorCommonUtils.java

License:Open Source License

protected void publishQoS2ToAs(EmbeddedChannel channel, String clientId, String topic, String payload,
        int messageId, boolean retained) {
    NettyUtils.userName(channel, clientId);
    MqttPublishMessage publish = MqttMessageBuilders.publish().topicName(topic).retained(retained)
            .messageId(messageId).qos(MqttQoS.EXACTLY_ONCE)
            .payload(Unpooled.copiedBuffer(payload.getBytes(UTF_8))).build();
    this.m_processor.processPublish(channel, publish);

    verifyPubrecIsReceived(channel, messageId);

    MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PUBREL, false, AT_LEAST_ONCE, false,
            0);//from   w  w w.  j  a v a 2 s  .c  om
    MqttMessage pubRel = new MqttMessage(mqttFixedHeader, from(messageId));
    this.m_processor.processPubRel(channel, pubRel);

    verifyPubCompIsReceived(channel, messageId);
}

From source file:io.moquette.spi.impl.InternalRepublisher.java

License:Open Source License

public static MqttPublishMessage createPublishForQos(String topic, MqttQoS qos, ByteBuf message,
        boolean retained, int messageId) {
    MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, false, qos, retained, 0);
    MqttPublishVariableHeader varHeader = new MqttPublishVariableHeader(topic, messageId);
    return new MqttPublishMessage(fixedHeader, varHeader, message);
}