Paho C++
1.0
The Paho MQTT C++ Client Library
|
Lightweight client for talking to an MQTT server using non-blocking methods that allow an operation to run in the background. More...
#include <async_client.h>
Public Types | |
using | ptr_t = std::shared_ptr< async_client > |
Smart/shared pointer for an object of this class. | |
using | consumer_queue_type = std::unique_ptr< thread_queue< const_message_ptr >> |
Type for a thread-safe queue to consume messages synchronously. | |
Public Types inherited from mqtt::iasync_client | |
using | qos_collection = std::vector< int > |
Type for a collection of QOS values. | |
Public Member Functions | |
async_client (const string &serverURI, const string &clientId, const string &persistDir) | |
Create an async_client that can be used to communicate with an MQTT server. More... | |
async_client (const string &serverURI, const string &clientId, iclient_persistence *persistence=nullptr) | |
Create an async_client that can be used to communicate with an MQTT server. More... | |
async_client (const string &serverURI, const string &clientId, int maxBufferedMessages, const string &persistDir) | |
Create an async_client that can be used to communicate with an MQTT server, which allows for off-line message buffering. More... | |
async_client (const string &serverURI, const string &clientId, int maxBufferedMessages, iclient_persistence *persistence=nullptr) | |
Create an async_client that can be used to communicate with an MQTT server, which allows for off-line message buffering. More... | |
~async_client () override | |
Destructor. | |
token_ptr | connect () override |
Connects to an MQTT server using the default options. More... | |
token_ptr | connect (connect_options options) override |
Connects to an MQTT server using the provided connect options. More... | |
token_ptr | connect (connect_options options, void *userContext, iaction_listener &cb) override |
Connects to an MQTT server using the specified options. More... | |
token_ptr | connect (void *userContext, iaction_listener &cb) override |
token_ptr | reconnect () override |
Reconnects the client using options from the previous connect. More... | |
token_ptr | disconnect () override |
Disconnects from the server. More... | |
token_ptr | disconnect (disconnect_options opts) override |
Disconnects from the server. More... | |
token_ptr | disconnect (int timeout) override |
Disconnects from the server. More... | |
template<class Rep , class Period > | |
token_ptr | disconnect (const std::chrono::duration< Rep, Period > &timeout) |
Disconnects from the server. More... | |
token_ptr | disconnect (int timeout, void *userContext, iaction_listener &cb) override |
Disconnects from the server. More... | |
template<class Rep , class Period > | |
token_ptr | disconnect (const std::chrono::duration< Rep, Period > &timeout, void *userContext, iaction_listener &cb) |
Disconnects from the server. More... | |
token_ptr | disconnect (void *userContext, iaction_listener &cb) override |
Disconnects from the server. More... | |
delivery_token_ptr | get_pending_delivery_token (int msgID) const override |
Returns the delivery token for the specified message ID. More... | |
std::vector< delivery_token_ptr > | get_pending_delivery_tokens () const override |
Returns the delivery tokens for any outstanding publish operations. More... | |
string | get_client_id () const override |
Returns the client ID used by this client. More... | |
string | get_server_uri () const override |
Returns the address of the server used by this client. More... | |
bool | is_connected () const override |
Determines if this client is currently connected to the server. More... | |
delivery_token_ptr | publish (string_ref topic, const void *payload, size_t n, int qos, bool retained) override |
Publishes a message to a topic on the server. More... | |
delivery_token_ptr | publish (string_ref topic, const void *payload, size_t n) override |
Publishes a message to a topic on the server. More... | |
delivery_token_ptr | publish (string_ref topic, binary_ref payload, int qos, bool retained) override |
Publishes a message to a topic on the server. More... | |
delivery_token_ptr | publish (string_ref topic, binary_ref payload) override |
Publishes a message to a topic on the server. More... | |
delivery_token_ptr | publish (string_ref topic, const void *payload, size_t n, int qos, bool retained, void *userContext, iaction_listener &cb) override |
Publishes a message to a topic on the server. More... | |
delivery_token_ptr | publish (const_message_ptr msg) override |
Publishes a message to a topic on the server Takes an Message message and delivers it to the server at the requested quality of service. More... | |
delivery_token_ptr | publish (const_message_ptr msg, void *userContext, iaction_listener &cb) override |
Publishes a message to a topic on the server. More... | |
void | set_callback (callback &cb) override |
Sets a callback listener to use for events that happen asynchronously. More... | |
void | disable_callbacks () override |
Stops callbacks. More... | |
token_ptr | subscribe (const_string_collection_ptr topicFilters, const qos_collection &qos) override |
Subscribe to multiple topics, each of which may include wildcards. More... | |
token_ptr | subscribe (const_string_collection_ptr topicFilters, const qos_collection &qos, void *userContext, iaction_listener &cb) override |
Subscribes to multiple topics, each of which may include wildcards. More... | |
token_ptr | subscribe (const string &topicFilter, int qos) override |
Subscribe to a topic, which may include wildcards. More... | |
token_ptr | subscribe (const string &topicFilter, int qos, void *userContext, iaction_listener &cb) override |
Subscribe to a topic, which may include wildcards. More... | |
token_ptr | unsubscribe (const string &topicFilter) override |
Requests the server unsubscribe the client from a topic. More... | |
token_ptr | unsubscribe (const_string_collection_ptr topicFilters) override |
Requests the server unsubscribe the client from one or more topics. More... | |
token_ptr | unsubscribe (const_string_collection_ptr topicFilters, void *userContext, iaction_listener &cb) override |
Requests the server unsubscribe the client from one or more topics. More... | |
token_ptr | unsubscribe (const string &topicFilter, void *userContext, iaction_listener &cb) override |
Requests the server unsubscribe the client from a topics. More... | |
void | start_consuming () |
Start consuming messages. More... | |
void | stop_consuming () |
Stop consuming messages. More... | |
const_message_ptr | consume_message () |
Read the next message from the queue. More... | |
bool | try_consume_message (const_message_ptr *msg) |
Try to read the next message from the queue without blocking. More... | |
template<typename Rep , class Period > | |
bool | try_consume_message_for (const_message_ptr *msg, const std::chrono::duration< Rep, Period > &relTime) |
Waits a limited time for a message to arrive. More... | |
template<class Clock , class Duration > | |
bool | try_consume_message_until (const_message_ptr *msg, const std::chrono::time_point< Clock, Duration > &absTime) |
Waits until a specific time for a message to occur. More... | |
Public Member Functions inherited from mqtt::iasync_client | |
virtual | ~iasync_client () |
Virtual destructor. | |
Friends | |
class | token |
Manage internal list of active tokens. | |
Lightweight client for talking to an MQTT server using non-blocking methods that allow an operation to run in the background.
mqtt::async_client::async_client | ( | const string & | serverURI, |
const string & | clientId, | ||
const string & | persistDir | ||
) |
Create an async_client that can be used to communicate with an MQTT server.
This uses file-based persistence in the specified directory.
serverURI | the address of the server to connect to, specified as a URI. |
clientId | a client identifier that is unique on the server being connected to |
persistDir | The directory to use for persistence data |
mqtt::async_client::async_client | ( | const string & | serverURI, |
const string & | clientId, | ||
iclient_persistence * | persistence = nullptr |
||
) |
Create an async_client that can be used to communicate with an MQTT server.
This allows the caller to specify a user-defined persistence object, or use no persistence.
serverURI | the address of the server to connect to, specified as a URI. |
clientId | a client identifier that is unique on the server being connected to |
persistence | The user persistence structure. If this is null, then no persistence is used. |
mqtt::async_client::async_client | ( | const string & | serverURI, |
const string & | clientId, | ||
int | maxBufferedMessages, | ||
const string & | persistDir | ||
) |
Create an async_client that can be used to communicate with an MQTT server, which allows for off-line message buffering.
This uses file-based persistence in the specified directory.
serverURI | the address of the server to connect to, specified as a URI. |
clientId | a client identifier that is unique on the server being connected to |
maxBufferedMessages | the maximum number of messages allowed to be buffered while not connected |
persistDir | The directory to use for persistence data |
mqtt::async_client::async_client | ( | const string & | serverURI, |
const string & | clientId, | ||
int | maxBufferedMessages, | ||
iclient_persistence * | persistence = nullptr |
||
) |
Create an async_client that can be used to communicate with an MQTT server, which allows for off-line message buffering.
This allows the caller to specify a user-defined persistence object, or use no persistence.
serverURI | the address of the server to connect to, specified as a URI. |
clientId | a client identifier that is unique on the server being connected to |
maxBufferedMessages | the maximum number of messages allowed to be buffered while not connected |
persistence | The user persistence structure. If this is null, then no persistence is used. |
|
overridevirtual |
Connects to an MQTT server using the default options.
exception | for non security related problems |
security_exception | for security related problems |
Implements mqtt::iasync_client.
|
overridevirtual |
Connects to an MQTT server using the provided connect options.
options | a set of connection parameters that override the defaults. |
exception | for non security related problems |
security_exception | for security related problems |
Implements mqtt::iasync_client.
|
overridevirtual |
Connects to an MQTT server using the specified options.
options | a set of connection parameters that override the defaults. |
userContext | optional object used to pass context to the callback. Use nullptr if not required. |
cb | callback listener that will be notified when the connect completes. |
exception | for non security related problems |
security_exception | for security related problems |
Implements mqtt::iasync_client.
|
inlineoverridevirtual |
userContext | optional object used to pass context to the callback. Use nullptr if not required. |
cb | callback listener that will be notified when the connect completes. |
exception | for non security related problems |
security_exception | for security related problems |
Implements mqtt::iasync_client.
|
inline |
Read the next message from the queue.
This blocks until a new message arrives.
|
overridevirtual |
Stops callbacks.
This is not normally called by the application. It should be used cautiously as it may cause the application to lose messages.
Implements mqtt::iasync_client.
|
inlineoverridevirtual |
Disconnects from the server.
exception | for problems encountered while disconnecting |
Implements mqtt::iasync_client.
|
overridevirtual |
Disconnects from the server.
opts | Options for disconnecting. |
exception | for problems encountered while disconnecting |
Implements mqtt::iasync_client.
|
overridevirtual |
Disconnects from the server.
timeout | the amount of time in milliseconds to allow for existing work to finish before disconnecting. A value of zero or less means the client will not quiesce. |
exception | for problems encountered while disconnecting |
Implements mqtt::iasync_client.
|
inline |
Disconnects from the server.
timeout | the amount of time in milliseconds to allow for existing work to finish before disconnecting. A value of zero or less means the client will not quiesce. |
exception | for problems encountered while disconnecting |
|
overridevirtual |
Disconnects from the server.
timeout | the amount of time in milliseconds to allow for existing work to finish before disconnecting. A value of zero or less means the client will not quiesce. |
userContext | optional object used to pass context to the callback. Use nullptr if not required. |
cb | callback listener that will be notified when the disconnect completes. |
exception | for problems encountered while disconnecting |
Implements mqtt::iasync_client.
|
inline |
Disconnects from the server.
timeout | the amount of time in milliseconds to allow for existing work to finish before disconnecting. A value of zero or less means the client will not quiesce. |
userContext | optional object used to pass context to the callback. Use nullptr if not required. |
cb | callback listener that will be notified when the disconnect completes. |
exception | for problems encountered while disconnecting |
|
inlineoverridevirtual |
Disconnects from the server.
userContext | optional object used to pass context to the callback. Use nullptr if not required. |
cb | callback listener that will be notified when the disconnect completes. |
exception | for problems encountered while disconnecting |
Implements mqtt::iasync_client.
|
inlineoverridevirtual |
Returns the client ID used by this client.
Implements mqtt::iasync_client.
|
overridevirtual |
Returns the delivery token for the specified message ID.
Implements mqtt::iasync_client.
|
overridevirtual |
Returns the delivery tokens for any outstanding publish operations.
Implements mqtt::iasync_client.
|
inlineoverridevirtual |
Returns the address of the server used by this client.
Implements mqtt::iasync_client.
|
inlineoverridevirtual |
Determines if this client is currently connected to the server.
Implements mqtt::iasync_client.
|
overridevirtual |
Publishes a message to a topic on the server.
topic | The topic to deliver the message to |
payload | the bytes to use as the message payload |
n | the number of bytes in the payload |
qos | the Quality of Service to deliver the message at. Valid values are 0, 1 or 2. |
retained | whether or not this message should be retained by the server. |
Implements mqtt::iasync_client.
|
inlineoverridevirtual |
Publishes a message to a topic on the server.
topic | The topic to deliver the message to |
payload | the bytes to use as the message payload |
n | the number of bytes in the payload |
Implements mqtt::iasync_client.
|
overridevirtual |
Publishes a message to a topic on the server.
topic | The topic to deliver the message to |
payload | the bytes to use as the message payload |
qos | the Quality of Service to deliver the message at. Valid values are 0, 1 or 2. |
retained | whether or not this message should be retained by the server. |
Implements mqtt::iasync_client.
|
inlineoverridevirtual |
Publishes a message to a topic on the server.
topic | The topic to deliver the message to |
payload | the bytes to use as the message payload |
Implements mqtt::iasync_client.
|
overridevirtual |
Publishes a message to a topic on the server.
topic | The topic to deliver the message to |
payload | the bytes to use as the message payload |
n | the number of bytes in the payload |
qos | the Quality of Service to deliver the message at. Valid values are 0, 1 or 2. |
retained | whether or not this message should be retained by the server. |
userContext | optional object used to pass context to the callback. Use nullptr if not required. |
cb |
Implements mqtt::iasync_client.
|
overridevirtual |
Publishes a message to a topic on the server Takes an Message message and delivers it to the server at the requested quality of service.
msg | the message to deliver to the server |
Implements mqtt::iasync_client.
|
overridevirtual |
Publishes a message to a topic on the server.
msg | the message to deliver to the server |
userContext | optional object used to pass context to the callback. Use nullptr if not required. |
cb | callback optional listener that will be notified when message delivery has completed to the requested quality of service |
Implements mqtt::iasync_client.
|
overridevirtual |
Reconnects the client using options from the previous connect.
The client must have previously called connect() for this to work.
Implements mqtt::iasync_client.
|
overridevirtual |
Sets a callback listener to use for events that happen asynchronously.
cb | callback receiver which will be invoked for certain asynchronous events |
Implements mqtt::iasync_client.
void mqtt::async_client::start_consuming | ( | ) |
Start consuming messages.
This initializes the client to receive messages through a queue that can be read synchronously.
void mqtt::async_client::stop_consuming | ( | ) |
Stop consuming messages.
This shuts down the internal callback and discards any unread messages.
|
overridevirtual |
Subscribe to multiple topics, each of which may include wildcards.
topicFilters | |
qos | the maximum quality of service at which to subscribe. Messages published at a lower quality of service will be received at the published QoS. Messages published at a higher quality of service will be received using the QoS specified on the subscribe. |
Implements mqtt::iasync_client.
|
overridevirtual |
Subscribes to multiple topics, each of which may include wildcards.
topicFilters | |
qos | the maximum quality of service at which to subscribe. Messages published at a lower quality of service will be received at the published QoS. Messages published at a higher quality of service will be received using the QoS specified on the subscribe. |
userContext | optional object used to pass context to the callback. Use nullptr if not required. |
cb | listener that will be notified when subscribe has completed |
Implements mqtt::iasync_client.
|
overridevirtual |
Subscribe to a topic, which may include wildcards.
topicFilter | the topic to subscribe to, which can include wildcards. |
qos |
Implements mqtt::iasync_client.
|
overridevirtual |
Subscribe to a topic, which may include wildcards.
topicFilter | the topic to subscribe to, which can include wildcards. |
qos | the maximum quality of service at which to subscribe. Messages published at a lower quality of service will be received at the published QoS. Messages published at a higher quality of service will be received using the QoS specified on the subscribe. |
userContext | optional object used to pass context to the callback. Use nullptr if not required. |
cb | listener that will be notified when subscribe has completed |
Implements mqtt::iasync_client.
|
inline |
Try to read the next message from the queue without blocking.
msg | Pointer to the value to receive the message |
|
inline |
Waits a limited time for a message to arrive.
msg | Pointer to the value to receive the message |
relTime | The maximum amount of time to wait for a message. |
|
inline |
Waits until a specific time for a message to occur.
msg | Pointer to the value to receive the message |
absTime | The time point to wait until, before timing out. |
|
overridevirtual |
Requests the server unsubscribe the client from a topic.
topicFilter | the topic to unsubscribe from. It must match a topicFilter specified on an earlier subscribe. |
Implements mqtt::iasync_client.
|
overridevirtual |
Requests the server unsubscribe the client from one or more topics.
topicFilters | one or more topics to unsubscribe from. Each topicFilter must match one specified on an earlier subscribe. |
Implements mqtt::iasync_client.
|
overridevirtual |
Requests the server unsubscribe the client from one or more topics.
topicFilters | |
userContext | optional object used to pass context to the callback. Use nullptr if not required. |
cb | listener that will be notified when unsubscribe has completed |
Implements mqtt::iasync_client.
|
overridevirtual |
Requests the server unsubscribe the client from a topics.
topicFilter | the topic to unsubscribe from. It must match a topicFilter specified on an earlier subscribe. |
userContext | optional object used to pass context to the callback. Use nullptr if not required. |
cb | listener that will be notified when unsubscribe has completed |
Implements mqtt::iasync_client.