blob: 999435be20c30aed4719219c327bb68bd58a8097 [file] [log] [blame]
.TH "MQTTClientPersistence.h" 3 "Thu Sep 13 2018" "Paho Asynchronous MQTT C Client Library" \" -*- nroff -*-
.ad l
.nh
.SH NAME
MQTTClientPersistence.h \- This structure represents a persistent data store, used to store outbound and inbound messages, in order to achieve reliable messaging\&.
.SH SYNOPSIS
.br
.PP
.SS "Data Structures"
.in +1c
.ti -1c
.RI "struct \fBMQTTClient_persistence\fP"
.br
.RI "A structure containing the function pointers to a persistence implementation and the context or state that will be shared across all the persistence functions\&. "
.in -1c
.SS "Macros"
.in +1c
.ti -1c
.RI "#define \fBMQTTCLIENT_PERSISTENCE_DEFAULT\fP 0"
.br
.ti -1c
.RI "#define \fBMQTTCLIENT_PERSISTENCE_NONE\fP 1"
.br
.ti -1c
.RI "#define \fBMQTTCLIENT_PERSISTENCE_USER\fP 2"
.br
.ti -1c
.RI "#define \fBMQTTCLIENT_PERSISTENCE_ERROR\fP \-2"
.br
.in -1c
.SS "Typedefs"
.in +1c
.ti -1c
.RI "typedef int(* \fBPersistence_open\fP) (void **handle, const char *clientID, const char *serverURI, void *context)"
.br
.RI "Initialize the persistent store\&. "
.ti -1c
.RI "typedef int(* \fBPersistence_close\fP) (void *handle)"
.br
.RI "Close the persistent store referred to by the handle\&. "
.ti -1c
.RI "typedef int(* \fBPersistence_put\fP) (void *handle, char *key, int bufcount, char *buffers[], int buflens[])"
.br
.RI "Put the specified data into the persistent store\&. "
.ti -1c
.RI "typedef int(* \fBPersistence_get\fP) (void *handle, char *key, char **buffer, int *buflen)"
.br
.RI "Retrieve the specified data from the persistent store\&. "
.ti -1c
.RI "typedef int(* \fBPersistence_remove\fP) (void *handle, char *key)"
.br
.RI "Remove the data for the specified key from the store\&. "
.ti -1c
.RI "typedef int(* \fBPersistence_keys\fP) (void *handle, char ***keys, int *nkeys)"
.br
.RI "Returns the keys in this persistent data store\&. "
.ti -1c
.RI "typedef int(* \fBPersistence_clear\fP) (void *handle)"
.br
.RI "Clears the persistence store, so that it no longer contains any persisted data\&. "
.ti -1c
.RI "typedef int(* \fBPersistence_containskey\fP) (void *handle, char *key)"
.br
.RI "Returns whether any data has been persisted using the specified key\&. "
.in -1c
.SH "Detailed Description"
.PP
This structure represents a persistent data store, used to store outbound and inbound messages, in order to achieve reliable messaging\&.
The MQTT Client persists QoS1 and QoS2 messages in order to meet the assurances of delivery associated with these \fBQuality of service\fP levels\&. The messages are saved in persistent storage The type and context of the persistence implementation are specified when the MQTT client is created (see MQTTClient_create())\&. The default persistence type (\fBMQTTCLIENT_PERSISTENCE_DEFAULT\fP) uses a file system-based persistence mechanism\&. The \fIpersistence_context\fP argument passed to MQTTClient_create() when using the default peristence is a string representing the location of the persistence directory\&. If the context argument is NULL, the working directory will be used\&.
.PP
To use memory-based persistence, an application passes \fBMQTTCLIENT_PERSISTENCE_NONE\fP as the \fIpersistence_type\fP to MQTTClient_create()\&. This can lead to message loss in certain situations, but can be appropriate in some cases (see \fBQuality of service\fP)\&.
.PP
Client applications can provide their own persistence mechanism by passing \fBMQTTCLIENT_PERSISTENCE_USER\fP as the \fIpersistence_type\fP\&. To implement a custom persistence mechanism, the application must pass an initialized \fBMQTTClient_persistence\fP structure as the \fIpersistence_context\fP argument to MQTTClient_create()\&.
.PP
If the functions defined return an \fBMQTTCLIENT_PERSISTENCE_ERROR\fP then the state of the persisted data should remain as it was prior to the function being called\&. For example, if \fBPersistence_put()\fP returns \fBMQTTCLIENT_PERSISTENCE_ERROR\fP, then it is assumed tha tthe persistent store does not contain the data that was passed to the function\&. Similarly, if \fBPersistence_remove()\fP returns \fBMQTTCLIENT_PERSISTENCE_ERROR\fP then it is assumed that the data to be removed is still held in the persistent store\&.
.PP
It is up to the persistence implementation to log any error information that may be required to diagnose a persistence mechanism failure\&.
.SH "Macro Definition Documentation"
.PP
.SS "#define MQTTCLIENT_PERSISTENCE_DEFAULT 0"
This \fIpersistence_type\fP value specifies the default file system-based persistence mechanism (see MQTTClient_create())\&.
.SS "#define MQTTCLIENT_PERSISTENCE_NONE 1"
This \fIpersistence_type\fP value specifies a memory-based persistence mechanism (see MQTTClient_create())\&.
.SS "#define MQTTCLIENT_PERSISTENCE_USER 2"
This \fIpersistence_type\fP value specifies an application-specific persistence mechanism (see MQTTClient_create())\&.
.SS "#define MQTTCLIENT_PERSISTENCE_ERROR \-2"
Application-specific persistence functions must return this error code if there is a problem executing the function\&.
.SH "Typedef Documentation"
.PP
.SS "typedef int(* Persistence_open) (void **handle, const char *clientID, const char *serverURI, void *context)"
.PP
Initialize the persistent store\&. Either open the existing persistent store for this client ID or create a new one if one doesn't exist\&. If the persistent store is already open, return without taking any action\&.
.PP
An application can use the same client identifier to connect to many different servers\&. The \fIclientid\fP in conjunction with the \fIserverURI\fP uniquely identifies the persistence store required\&.
.PP
\fBParameters:\fP
.RS 4
\fIhandle\fP The address of a pointer to a handle for this persistence implementation\&. This function must set handle to a valid reference to the persistence following a successful return\&. The handle pointer is passed as an argument to all the other persistence functions\&. It may include the context parameter and/or any other data for use by the persistence functions\&.
.br
\fIclientID\fP The client identifier for which the persistent store should be opened\&.
.br
\fIserverURI\fP The connection string specified when the MQTT client was created (see MQTTClient_create())\&.
.br
\fIcontext\fP A pointer to any data required to initialize the persistent store (see \fBMQTTClient_persistence\fP)\&.
.RE
.PP
\fBReturns:\fP
.RS 4
Return 0 if the function completes successfully, otherwise return \fBMQTTCLIENT_PERSISTENCE_ERROR\fP\&.
.RE
.PP
.SS "typedef int(* Persistence_close) (void *handle)"
.PP
Close the persistent store referred to by the handle\&.
.PP
\fBParameters:\fP
.RS 4
\fIhandle\fP The handle pointer from a successful call to \fBPersistence_open()\fP\&.
.RE
.PP
\fBReturns:\fP
.RS 4
Return 0 if the function completes successfully, otherwise return \fBMQTTCLIENT_PERSISTENCE_ERROR\fP\&.
.RE
.PP
.SS "typedef int(* Persistence_put) (void *handle, char *key, int bufcount, char *buffers[], int buflens[])"
.PP
Put the specified data into the persistent store\&.
.PP
\fBParameters:\fP
.RS 4
\fIhandle\fP The handle pointer from a successful call to \fBPersistence_open()\fP\&.
.br
\fIkey\fP A string used as the key for the data to be put in the store\&. The key is later used to retrieve data from the store with \fBPersistence_get()\fP\&.
.br
\fIbufcount\fP The number of buffers to write to the persistence store\&.
.br
\fIbuffers\fP An array of pointers to the data buffers associated with this \fIkey\fP\&.
.br
\fIbuflens\fP An array of lengths of the data buffers\&. \fIbuflen[n]\fP gives the length of \fIbuffer[n]\fP\&.
.RE
.PP
\fBReturns:\fP
.RS 4
Return 0 if the function completes successfully, otherwise return \fBMQTTCLIENT_PERSISTENCE_ERROR\fP\&.
.RE
.PP
.SS "typedef int(* Persistence_get) (void *handle, char *key, char **buffer, int *buflen)"
.PP
Retrieve the specified data from the persistent store\&.
.PP
\fBParameters:\fP
.RS 4
\fIhandle\fP The handle pointer from a successful call to \fBPersistence_open()\fP\&.
.br
\fIkey\fP A string that is the key for the data to be retrieved\&. This is the same key used to save the data to the store with \fBPersistence_put()\fP\&.
.br
\fIbuffer\fP The address of a pointer to a buffer\&. This function sets the pointer to point at the retrieved data, if successful\&.
.br
\fIbuflen\fP The address of an int that is set to the length of \fIbuffer\fP by this function if successful\&.
.RE
.PP
\fBReturns:\fP
.RS 4
Return 0 if the function completes successfully, otherwise return \fBMQTTCLIENT_PERSISTENCE_ERROR\fP\&.
.RE
.PP
.SS "typedef int(* Persistence_remove) (void *handle, char *key)"
.PP
Remove the data for the specified key from the store\&.
.PP
\fBParameters:\fP
.RS 4
\fIhandle\fP The handle pointer from a successful call to \fBPersistence_open()\fP\&.
.br
\fIkey\fP A string that is the key for the data to be removed from the store\&. This is the same key used to save the data to the store with \fBPersistence_put()\fP\&.
.RE
.PP
\fBReturns:\fP
.RS 4
Return 0 if the function completes successfully, otherwise return \fBMQTTCLIENT_PERSISTENCE_ERROR\fP\&.
.RE
.PP
.SS "typedef int(* Persistence_keys) (void *handle, char ***keys, int *nkeys)"
.PP
Returns the keys in this persistent data store\&.
.PP
\fBParameters:\fP
.RS 4
\fIhandle\fP The handle pointer from a successful call to \fBPersistence_open()\fP\&.
.br
\fIkeys\fP The address of a pointer to pointers to strings\&. Assuming successful execution, this function allocates memory to hold the returned keys (strings used to store the data with \fBPersistence_put()\fP)\&. It also allocates memory to hold an array of pointers to these strings\&. \fIkeys\fP is set to point to the array of pointers to strings\&.
.br
\fInkeys\fP A pointer to the number of keys in this persistent data store\&. This function sets the number of keys, if successful\&.
.RE
.PP
\fBReturns:\fP
.RS 4
Return 0 if the function completes successfully, otherwise return \fBMQTTCLIENT_PERSISTENCE_ERROR\fP\&.
.RE
.PP
.SS "typedef int(* Persistence_clear) (void *handle)"
.PP
Clears the persistence store, so that it no longer contains any persisted data\&.
.PP
\fBParameters:\fP
.RS 4
\fIhandle\fP The handle pointer from a successful call to \fBPersistence_open()\fP\&.
.RE
.PP
\fBReturns:\fP
.RS 4
Return 0 if the function completes successfully, otherwise return \fBMQTTCLIENT_PERSISTENCE_ERROR\fP\&.
.RE
.PP
.SS "typedef int(* Persistence_containskey) (void *handle, char *key)"
.PP
Returns whether any data has been persisted using the specified key\&.
.PP
\fBParameters:\fP
.RS 4
\fIhandle\fP The handle pointer from a successful call to \fBPersistence_open()\fP\&.
.br
\fIkey\fP The string to be tested for existence in the store\&.
.RE
.PP
\fBReturns:\fP
.RS 4
Return 0 if the key was found in the store, otherwise return \fBMQTTCLIENT_PERSISTENCE_ERROR\fP\&.
.RE
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for Paho Asynchronous MQTT C Client Library from the source code\&.