| Home | Libraries | People | FAQ | More

###### boost::mqtt5::mqtt_client::async_unsubscribe (2 of 2 overloads)

Send an `UNSUBSCRIBE` packet to Broker to unsubscribe from one Topic.

###### Synopsis

    template<
        typename CompletionToken = typename asio::default_completion_token<boost::mqtt5::mqtt_client::executor_type>::type>
    decltype(auto)
    async_unsubscribe(
        const std::string& topic,
        const unsubscribe_props& props,
        CompletionToken&& token = {});

###### Remarks

The Client may still receive residual Application Messages through the `mqtt_client::async_receive` function from Topics the Client just unsubscribed to.

###### Parameters

Name | Description
--- | ---
`topic` | Topic to unsubscribe from.
`props` | An instance of `boost::mqtt5::unsubscribe_props`.
`token` | Completion token that will be used to produce a completion handler. The handler will be invoked when the operation completes. On immediate completion, invocation of the handler will be performed in a manner equivalent to using `boost::asio::async_immediate`.

###### Handler signature

The handler signature for this operation:

    void (
        boost::mqtt5::error_code, // Result of operation.
        std::vector<boost::mqtt5::reason_code>,  // Vector of Reason Codes containing
                                       // the result of unsubscribe operation
                                       // for the Topic in the UNSUBSCRIBE packet.
        boost::mqtt5::unsuback_props, // Properties received in the UNSUBACK packet.
    )

###### Completion condition

The asynchronous operation will complete when one of the following conditions is true:

- The Client has successfully sent an `UNSUBSCRIBE` packet and has received an `UNSUBACK` response from the Broker.
- An error occurred. This is indicated by an associated ``boost::mqtt5::error_code`` in the handler.

###### Error codes

The list of all possible error codes that this operation can finish with:

- `boost::system::errc::errc_t::success`
- `boost::asio::error::no_recovery`
- `boost::asio::error::operation_aborted`
- `boost::mqtt5::client::error::malformed_packet`
- `boost::mqtt5::client::error::packet_too_large`
- `boost::mqtt5::client::error::pid_overrun`
- `boost::mqtt5::client::error::invalid_topic`

Refer to the section on `Error handling` to find the underlying causes for each error code.

###### Per-Operation Cancellation

This asynchronous operation supports cancellation for the following `boost::asio::cancellation_type` values:

- `cancellation_type::terminal` - invokes `mqtt_client::cancel`
- `cancellation_type::partial` & `cancellation_type::total` - prevents potential resending of the `UNSUBSCRIBE` packet