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

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

Introduction

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

Prototype

public MqttUnsubscribePayload(List<String> topics) 

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  www .  ja v  a 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 ww w.j av  a 2 s.c  o m
        this.pendingServerUnsubscribes.put(variableHeader.messageId(), pendingUnsubscription);
        pendingUnsubscription.startRetransmissionTimer(this.eventLoop.next(), this::sendAndFlushPacket);

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