MQTTProtocolClient.c File Reference

Functions dealing with the MQTT protocol exchanges. More...

#include <stdlib.h>
#include "MQTTProtocolClient.h"
#include "MQTTPersistence.h"
#include "SocketBuffer.h"
#include "StackTrace.h"
#include "Heap.h"
Include dependency graph for MQTTProtocolClient.c:

Functions

static void MQTTProtocol_storeQoS0 (Clients *pubclient, Publish *publish)
static int MQTTProtocol_startPublishCommon (Clients *pubclient, Publish *publish, int qos, int retained)
 Utility function to start a new publish exchange.
static void MQTTProtocol_retries (time_t now, Clients *client, int regardless)
 MQTT retry processing per client.
int messageIDCompare (void *a, void *b)
 List callback function for comparing Message structures by message id.
int MQTTProtocol_assignMsgId (Clients *client)
 Assign a new message id for a client.
int MQTTProtocol_startPublish (Clients *pubclient, Publish *publish, int qos, int retained, Messages **mm)
 Start a new publish exchange.
MessagesMQTTProtocol_createMessage (Publish *publish, Messages **mm, int qos, int retained)
 Copy and store message data for retries.
PublicationsMQTTProtocol_storePublication (Publish *publish, int *len)
 Store message data for possible retry.
void MQTTProtocol_removePublication (Publications *p)
 Remove stored message data.
int MQTTProtocol_handlePublishes (void *pack, int sock)
 Process an incoming publish packet for a socket.
int MQTTProtocol_handlePubacks (void *pack, int sock)
 Process an incoming puback packet for a socket.
int MQTTProtocol_handlePubrecs (void *pack, int sock)
 Process an incoming pubrec packet for a socket.
int MQTTProtocol_handlePubrels (void *pack, int sock)
 Process an incoming pubrel packet for a socket.
int MQTTProtocol_handlePubcomps (void *pack, int sock)
 Process an incoming pubcomp packet for a socket.
void MQTTProtocol_keepalive (time_t now)
 MQTT protocol keepAlive processing.
void MQTTProtocol_retry (time_t now, int doRetry, int regardless)
 MQTT retry protocol and socket pending writes processing.
void MQTTProtocol_freeClient (Clients *client)
 Free a client structure.
void MQTTProtocol_emptyMessageList (List *msgList)
 Empty a message list, leaving it able to accept new messages.
void MQTTProtocol_freeMessageList (List *msgList)
 Empty and free up all storage used by a message list.
char * MQTTStrncpy (char *dest, const char *src, size_t dest_size)
 Copy no more than dest_size -1 characters from the string pointed to by src to the array pointed to by dest.
char * MQTTStrdup (const char *src)
 Duplicate a string, safely, allocating space on the heap.

Variables

MQTTProtocol state
ClientStatesbstate

Detailed Description

Functions dealing with the MQTT protocol exchanges.

Some other related functions are in the MQTTProtocolOut module


Function Documentation

int messageIDCompare ( void *  a,
void *  b 
)

List callback function for comparing Message structures by message id.

Parameters:
a first integer value
b second integer value
Returns:
boolean indicating whether a and b are equal
int MQTTProtocol_assignMsgId ( Clients client  ) 

Assign a new message id for a client.

Make sure it isn't already being used and does not exceed the maximum.

Parameters:
client a client structure
Returns:
the next message id to use, or 0 if none available

Here is the call graph for this function:

Messages* MQTTProtocol_createMessage ( Publish publish,
Messages **  mm,
int  qos,
int  retained 
)

Copy and store message data for retries.

Parameters:
publish the publication data
mm - pointer to the message data to store
qos the MQTT QoS to use
retained boolean - whether to set the MQTT retained flag
Returns:
pointer to the message data stored

Here is the call graph for this function:

void MQTTProtocol_emptyMessageList ( List msgList  ) 

Empty a message list, leaving it able to accept new messages.

Parameters:
msgList the message list to empty

Here is the call graph for this function:

void MQTTProtocol_freeClient ( Clients client  ) 

Free a client structure.

Parameters:
client the client data to free

Here is the call graph for this function:

void MQTTProtocol_freeMessageList ( List msgList  ) 

Empty and free up all storage used by a message list.

Parameters:
msgList the message list to empty and free

Here is the call graph for this function:

int MQTTProtocol_handlePubacks ( void *  pack,
int  sock 
)

Process an incoming puback packet for a socket.

Parameters:
pack pointer to the publish packet
sock the socket on which the packet was received
Returns:
completion code

Here is the call graph for this function:

int MQTTProtocol_handlePubcomps ( void *  pack,
int  sock 
)

Process an incoming pubcomp packet for a socket.

Parameters:
pack pointer to the publish packet
sock the socket on which the packet was received
Returns:
completion code

Here is the call graph for this function:

int MQTTProtocol_handlePublishes ( void *  pack,
int  sock 
)

Process an incoming publish packet for a socket.

Parameters:
pack pointer to the publish packet
sock the socket on which the packet was received
Returns:
completion code

Here is the call graph for this function:

int MQTTProtocol_handlePubrecs ( void *  pack,
int  sock 
)

Process an incoming pubrec packet for a socket.

Parameters:
pack pointer to the publish packet
sock the socket on which the packet was received
Returns:
completion code

Here is the call graph for this function:

int MQTTProtocol_handlePubrels ( void *  pack,
int  sock 
)

Process an incoming pubrel packet for a socket.

Parameters:
pack pointer to the publish packet
sock the socket on which the packet was received
Returns:
completion code

Here is the call graph for this function:

void MQTTProtocol_keepalive ( time_t  now  ) 

MQTT protocol keepAlive processing.

Sends PINGREQ packets as required.

Parameters:
now current time

Here is the call graph for this function:

void MQTTProtocol_removePublication ( Publications p  ) 

Remove stored message data.

Opposite of storePublication

Parameters:
p stored publication to remove

Here is the call graph for this function:

static void MQTTProtocol_retries ( time_t  now,
Clients client,
int  regardless 
) [static]

MQTT retry processing per client.

Parameters:
now current time
client - the client to which to apply the retry processing
regardless boolean - retry packets regardless of retry interval (used on reconnect)

Here is the call graph for this function:

void MQTTProtocol_retry ( time_t  now,
int  doRetry,
int  regardless 
)

MQTT retry protocol and socket pending writes processing.

Parameters:
now current time
doRetry boolean - retries as well as pending writes?
regardless boolean - retry packets regardless of retry interval (used on reconnect)

Here is the call graph for this function:

int MQTTProtocol_startPublish ( Clients pubclient,
Publish publish,
int  qos,
int  retained,
Messages **  mm 
)

Start a new publish exchange.

Store any state necessary and try to send the packet

Parameters:
pubclient the client to send the publication to
publish the publication data
qos the MQTT QoS to use
retained boolean - whether to set the MQTT retained flag
mm - pointer to the message to send
Returns:
the completion code

Here is the call graph for this function:

static int MQTTProtocol_startPublishCommon ( Clients pubclient,
Publish publish,
int  qos,
int  retained 
) [static]

Utility function to start a new publish exchange.

Parameters:
pubclient the client to send the publication to
publish the publication data
qos the MQTT QoS to use
retained boolean - whether to set the MQTT retained flag
Returns:
the completion code

Here is the call graph for this function:

Publications* MQTTProtocol_storePublication ( Publish publish,
int *  len 
)

Store message data for possible retry.

Parameters:
publish the publication data
len returned length of the data stored
Returns:
the publication stored

Here is the call graph for this function:

char* MQTTStrdup ( const char *  src  ) 

Duplicate a string, safely, allocating space on the heap.

Parameters:
src the source string which characters copy from
Returns:
the duplicated, allocated string

Here is the call graph for this function:

char* MQTTStrncpy ( char *  dest,
const char *  src,
size_t  dest_size 
)

Copy no more than dest_size -1 characters from the string pointed to by src to the array pointed to by dest.

The destination string will always be null-terminated.

Parameters:
dest the array which characters copy to
src the source string which characters copy from
dest_size the size of the memory pointed to by dest: copy no more than this -1 (allow for null). Must be >= 1
Returns:
the destination string pointer

Here is the call graph for this function:

 All Data Structures Files Functions Variables Typedefs Defines

Generated on 30 Jul 2017 for MQTT C Client Libraries Internals by  doxygen 1.6.1