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

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

Introduction

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

Prototype

public MqttPublishMessage(MqttFixedHeader mqttFixedHeader, MqttPublishVariableHeader variableHeader,
            ByteBuf payload) 

Source Link

Usage

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

License:Open Source License

@Override
public void onMessage(Message<HazelcastMsg> msg) {
    try {//from w  w  w.j  a  v  a  2 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.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);
}

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

License:Open Source License

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

From source file:io.vertx.mqtt.test.MqttBadClientTest.java

License:Apache License

private MqttPublishMessage createPublishMessage() {

    MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.AT_LEAST_ONCE,
            true, 0);//from w w  w .  jav a 2s  . co  m

    MqttPublishVariableHeader mqttPublishVariableHeader = new MqttPublishVariableHeader(MQTT_TOPIC, 1);

    ByteBuf payload = ALLOCATOR.buffer();
    payload.writeBytes(MQTT_MESSAGE.getBytes(CharsetUtil.UTF_8));

    return new MqttPublishMessage(mqttFixedHeader, mqttPublishVariableHeader, payload);
}

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

License:Apache License

public static MqttPublishMessage publish(IMessage message, boolean isDup) {
    MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, isDup, message.qos(),
            message.isRetain(), 7 + message.message().length);

    MqttPublishVariableHeader variableHeader = new MqttPublishVariableHeader(message.topicName(), message.id());

    return new MqttPublishMessage(fixedHeader, variableHeader, Unpooled.wrappedBuffer(message.message()));
}

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

License:Apache License

protected void send(int messageId, String topicName, int qosLevel, boolean isRetain, ByteBuf payload,
        int deliveryCount) {
    boolean redelivery = qosLevel == 0 ? false : (deliveryCount > 0);
    MqttFixedHeader header = new MqttFixedHeader(MqttMessageType.PUBLISH, redelivery, MqttQoS.valueOf(qosLevel),
            isRetain, 0);/* w w w  .ja v  a  2  s .  c o m*/
    MqttPublishVariableHeader varHeader = new MqttPublishVariableHeader(topicName, messageId);
    MqttMessage publish = new MqttPublishMessage(header, varHeader, payload);
    sendToClient(publish);
}

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

License:Apache License

/**
 * Publish a message to the given payload, using the given qos and optional retain
 *
 * @param topic   The topic to publish to
 * @param payload The payload to send//from   ww  w.  j  a v a2 s.  c om
 * @param qos     The qos to use while publishing
 * @param retain  true if you want to retain the message on the server, false otherwise
 * @return A future which will be completed when the message is delivered to the server
 */
@Override
public Future<Void> publish(String topic, ByteBuf payload, MqttQoS qos, boolean retain) {
    Promise<Void> future = new DefaultPromise<>(this.eventLoop.next());
    MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, false, qos, retain, 0);
    MqttPublishVariableHeader variableHeader = new MqttPublishVariableHeader(topic,
            getNewMessageId().messageId());
    MqttPublishMessage message = new MqttPublishMessage(fixedHeader, variableHeader, payload);
    MqttPendingPublish pendingPublish = new MqttPendingPublish(variableHeader.messageId(), future,
            payload.retain(), message, qos);
    ChannelFuture channelFuture = this.sendAndFlushPacket(message);

    if (channelFuture != null) {
        pendingPublish.setSent(true);
        if (channelFuture.cause() != null) {
            future.setFailure(channelFuture.cause());
            return future;
        }
    }
    if (pendingPublish.isSent() && pendingPublish.getQos() == MqttQoS.AT_MOST_ONCE) {
        pendingPublish.getFuture().setSuccess(null); //We don't get an ACK for QOS 0
    } else if (pendingPublish.isSent()) {
        this.pendingPublishes.put(pendingPublish.getMessageId(), pendingPublish);
        pendingPublish.startPublishRetransmissionTimer(this.eventLoop.next(), this::sendAndFlushPacket);
    }
    return future;
}

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

License:Apache License

void startPublishRetransmissionTimer(EventLoop eventLoop, Consumer<Object> sendPacket) {
    this.publishRetransmissionHandler.setHandle(((fixedHeader, originalMessage) -> sendPacket.accept(
            new MqttPublishMessage(fixedHeader, originalMessage.variableHeader(), this.payload.retain()))));
    this.publishRetransmissionHandler.start(eventLoop);
}

From source file:org.thingsboard.server.transport.mqtt.adaptors.JsonMqttAdaptor.java

License:Apache License

private MqttPublishMessage createMqttPublishMsg(MqttDeviceAwareSessionContext ctx, String topic,
        JsonElement json) {/*  w  w w .  jav a2  s.  c om*/
    MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, false,
            ctx.getQoSForTopic(topic), false, 0);
    MqttPublishVariableHeader header = new MqttPublishVariableHeader(topic, ctx.nextMsgId());
    ByteBuf payload = ALLOCATOR.buffer();
    payload.writeBytes(GSON.toJson(json).getBytes(UTF8));
    return new MqttPublishMessage(mqttFixedHeader, header, payload);
}

From source file:org.thingsboard.server.transport.mqtt.session.GatewayDeviceSessionCtx.java

License:Apache License

private MqttPublishMessage createMqttPublishMsg(String topic, JsonElement json) {
    MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.AT_LEAST_ONCE,
            false, 0);/*from  w ww  .  ja v a2 s  . c om*/
    MqttPublishVariableHeader header = new MqttPublishVariableHeader(topic, msgIdSeq.incrementAndGet());
    ByteBuf payload = ALLOCATOR.buffer();
    payload.writeBytes(GSON.toJson(json).getBytes(UTF8));
    return new MqttPublishMessage(mqttFixedHeader, header, payload);
}