Example usage for io.netty.handler.codec.mqtt MqttMessageType PUBREL

List of usage examples for io.netty.handler.codec.mqtt MqttMessageType PUBREL

Introduction

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

Prototype

MqttMessageType PUBREL

To view the source code for io.netty.handler.codec.mqtt MqttMessageType PUBREL.

Click 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  ava  2s .co m

        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.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);/* w  ww. ja v a2 s  . c  o  m*/
    MqttMessage pubRel = new MqttMessage(mqttFixedHeader, from(messageId));
    this.m_processor.processPubRel(channel, pubRel);

    verifyPubCompIsReceived(channel, messageId);
}

From source file:io.vertx.mqtt.impl.MqttClientImpl.java

License:Apache License

/**
 * Sends the PUBREL message to server// w  w w.jav a2s  .  co  m
 *
 * @param publishMessageId  identifier of the PUBLISH message to acknowledge
 */
void publishRelease(int publishMessageId) {

    MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PUBREL, false, MqttQoS.AT_LEAST_ONCE,
            false, 0);

    MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(publishMessageId);

    io.netty.handler.codec.mqtt.MqttMessage pubrel = MqttMessageFactory.newMessage(fixedHeader, variableHeader,
            null);

    qos2outbound.put(publishMessageId, pubrel);
    this.write(pubrel);
}

From source file:io.vertx.mqtt.impl.MqttEndpointImpl.java

License:Apache License

public MqttEndpointImpl publishRelease(int publishMessageId) {

    this.checkConnected();

    MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PUBREL, false, MqttQoS.AT_LEAST_ONCE,
            false, 0);//from ww w  .  ja v a  2  s. c om
    MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(publishMessageId);

    io.netty.handler.codec.mqtt.MqttMessage pubrel = MqttMessageFactory.newMessage(fixedHeader, variableHeader,
            null);

    this.write(pubrel);

    return this;
}

From source file:net.anyflow.lannister.message.MessageFactory.java

License:Apache License

public static MqttMessage pubrel(int messageId) {
    MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PUBREL, false, MqttQoS.AT_LEAST_ONCE,
            false, 2);/*  w  w w. j a v a 2  s .  co  m*/
    MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(messageId);

    return new MqttMessage(fixedHeader, variableHeader);
}

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

License:Apache License

void sendPubRel(int messageId) {
    sendPublishProtocolControlMessage(messageId, MqttMessageType.PUBREL);
}

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

License:Apache License

void sendPublishProtocolControlMessage(int messageId, MqttMessageType messageType) {
    MqttQoS qos = (messageType == MqttMessageType.PUBREL) ? MqttQoS.AT_LEAST_ONCE : MqttQoS.AT_MOST_ONCE;
    MqttFixedHeader fixedHeader = new MqttFixedHeader(messageType, false, qos, // Spec requires 01 in header for rel
            false, 0);//from  www  .j  ava  2s.c om
    MqttPubAckMessage rel = new MqttPubAckMessage(fixedHeader, MqttMessageIdVariableHeader.from(messageId));
    sendToClient(rel);
}

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

License:Apache License

public static Message createPubRelMessage(MQTTSession session, SimpleString address, int messageId) {
    Message message = createServerMessage(session, address, false, 1);
    message.putIntProperty(MQTTUtil.MQTT_MESSAGE_ID_KEY, messageId);
    message.putIntProperty(MQTTUtil.MQTT_MESSAGE_TYPE_KEY, MqttMessageType.PUBREL.value());
    return message;
}

From source file:org.thingsboard.mqtt.MqttChannelHandler.java

License:Apache License

private void handlePubrec(Channel channel, MqttMessage message) {
    MqttPendingPublish pendingPublish = this.client.getPendingPublishes()
            .get(((MqttMessageIdVariableHeader) message.variableHeader()).messageId());
    pendingPublish.onPubackReceived();/*from ww w . j a v a 2s.c  o m*/

    MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PUBREL, false, MqttQoS.AT_LEAST_ONCE,
            false, 0);
    MqttMessageIdVariableHeader variableHeader = (MqttMessageIdVariableHeader) message.variableHeader();
    MqttMessage pubrelMessage = new MqttMessage(fixedHeader, variableHeader);
    channel.writeAndFlush(pubrelMessage);

    pendingPublish.setPubrelMessage(pubrelMessage);
    pendingPublish.startPubrelRetransmissionTimer(this.client.getEventLoop().next(),
            this.client::sendAndFlushPacket);
}