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

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

Introduction

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

Prototype

MqttMessageType UNSUBSCRIBE

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

Click Source Link

Usage

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

License:Apache License

/**
 * See {@link MqttClient#unsubscribe(String, Handler)} )} for more details
 *///from  ww w  . java 2 s. c o  m
@Override
public MqttClient unsubscribe(String topic, Handler<AsyncResult<Integer>> unsubscribeSentHandler) {

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

    MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(nextMessageId());

    MqttUnsubscribePayload payload = new MqttUnsubscribePayload(Stream.of(topic).collect(Collectors.toList()));

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

    this.write(unsubscribe);

    if (unsubscribeSentHandler != null) {
        unsubscribeSentHandler.handle(Future.succeededFuture(variableHeader.messageId()));
    }
    return this;
}

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

License:Apache License

private void checkSubscribtions(String topic, Promise<Void> promise) {
    if (!(this.subscriptions.containsKey(topic) && this.subscriptions.get(topic).size() != 0)
            && this.serverSubscriptions.contains(topic)) {
        MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.UNSUBSCRIBE, false,
                MqttQoS.AT_LEAST_ONCE, false, 0);
        MqttMessageIdVariableHeader variableHeader = getNewMessageId();
        MqttUnsubscribePayload payload = new MqttUnsubscribePayload(Collections.singletonList(topic));
        MqttUnsubscribeMessage message = new MqttUnsubscribeMessage(fixedHeader, variableHeader, payload);

        MqttPendingUnsubscription pendingUnsubscription = new MqttPendingUnsubscription(promise, topic,
                message);/*from w  ww. java 2 s .co m*/
        this.pendingServerUnsubscribes.put(variableHeader.messageId(), pendingUnsubscription);
        pendingUnsubscription.startRetransmissionTimer(this.eventLoop.next(), this::sendAndFlushPacket);

        this.sendAndFlushPacket(message);
    } else {
        promise.setSuccess(null);
    }
}