MQTT C Client Libraries Internals: SocketBuffer.c File Reference

| MQTT C Client Libraries Internals

Functions | Variables
SocketBuffer.c File Reference

Socket buffering related functions. More...

`#include "SocketBuffer.h"`
`#include "LinkedList.h"`
`#include "Log.h"`
`#include "Messages.h"`
`#include "StackTrace.h"`
`#include <stdlib.h>`
`#include <stdio.h>`
`#include <string.h>`
`#include "Heap.h"`
Include dependency graph for SocketBuffer.c:

## Functions
int | socketcompare (void *a, void *b)
| List callback function for comparing socket_queues by socket. More...
int | SocketBuffer_newDefQ (void)
| Create a new default queue when one has just been used.
void | SocketBuffer_freeDefQ (void)
| Free the default queue memory.
int | pending_socketcompare (void *a, void *b)
| List callback function for comparing pending_writes by socket. More...
int | SocketBuffer_initialize (void)
| Initialize the socketBuffer module.
void | SocketBuffer_terminate (void)
| Terminate the socketBuffer module.
void | SocketBuffer_cleanup (SOCKET socket)
| Cleanup any buffers for a specific socket. More...
char * | SocketBuffer_getQueuedData (SOCKET socket, size_t bytes, size_t *actual_len)
| Get any queued data for a specific socket. More...
int | SocketBuffer_getQueuedChar (SOCKET socket, char *c)
| Get any queued character for a specific socket. More...
void | SocketBuffer_interrupted (SOCKET socket, size_t actual_len)
| A socket read was interrupted so we need to queue data. More...
char * | SocketBuffer_complete (SOCKET socket)
| A socket read has now completed so we can get rid of the queue. More...
void | SocketBuffer_queueChar (SOCKET socket, char c)
| Queued a Charactor to a specific socket. More...
int | SocketBuffer_pendingWrite (SOCKET socket, int count, iobuf *iovecs, int *frees, size_t total, size_t bytes)
| A socket write was interrupted so store the remaining data. More...
pending_writes * | SocketBuffer_getWrite (SOCKET socket)
| Get any queued write data for a specific socket. More...
int | SocketBuffer_writeComplete (SOCKET socket)
| A socket write has now completed so we can get rid of the queue. More...
pending_writes * | SocketBuffer_updateWrite (SOCKET socket, char *topic, char *payload)
| Update the queued write data for a socket in the case of QoS 0 messages. More...

## Variables
static socket_queue * | def_queue
| Default input queue buffer.
static List * | queues
| List of queued input buffers.
static List | writes
| List of queued write buffers.

## Detailed Description

Socket buffering related functions.

Some other related functions are in the Socket module

## Function Documentation

## ◆ pending_socketcompare()

int pending_socketcompare | ( | void * | a,
|  | void * | b
| ) |  |

List callback function for comparing pending_writes by socket.

Parameters

  a | first integer value
  b | second integer value

Returns
  boolean indicating whether a and b are equal

## ◆ SocketBuffer_cleanup()

void SocketBuffer_cleanup | ( | SOCKET | socket | ) |

Cleanup any buffers for a specific socket.

Parameters

  socket | the socket to clean up

Here is the call graph for this function:

## ◆ SocketBuffer_complete()

char* SocketBuffer_complete | ( | SOCKET | socket | ) |

A socket read has now completed so we can get rid of the queue.

Parameters

  socket | the socket for which the operation is now complete

Returns
  pointer to the default queue data

Here is the call graph for this function:

## ◆ SocketBuffer_getQueuedChar()

int SocketBuffer_getQueuedChar | ( | SOCKET | socket,
|  | char * | c
| ) |  |

Get any queued character for a specific socket.

Parameters

  socket | the socket to get queued data for
  c | the character returned if any

Returns
  completion code

Here is the call graph for this function:

## ◆ SocketBuffer_getQueuedData()

char* SocketBuffer_getQueuedData | ( | SOCKET | socket,
|  | size_t | bytes,
|  | size_t * | actual_len
| ) |  |

Get any queued data for a specific socket.

Parameters

  socket | the socket to get queued data for
  bytes | the number of bytes of data to retrieve
  actual_len | the actual length returned

Returns
  the actual data

Here is the call graph for this function:

## ◆ SocketBuffer_getWrite()

pending_writes* SocketBuffer_getWrite | ( | SOCKET | socket | ) |

Get any queued write data for a specific socket.

Parameters

  socket | the socket to get queued data for

Returns
  pointer to the queued data or NULL

Here is the call graph for this function:

## ◆ SocketBuffer_interrupted()

void SocketBuffer_interrupted | ( | SOCKET | socket,
|  | size_t | actual_len
| ) |  |

A socket read was interrupted so we need to queue data.

Parameters

  socket | the socket to get queued data for
  actual_len | the actual length of data that was read

Here is the call graph for this function:

## ◆ SocketBuffer_pendingWrite()

int SocketBuffer_pendingWrite | ( | SOCKET | socket,
|  | int | count,
|  | iobuf * | iovecs,
|  | int * | frees,
|  | size_t | total,
|  | size_t | bytes
| ) |  |

A socket write was interrupted so store the remaining data.

Parameters

  socket | the socket for which the write was interrupted
  count | the number of iovec buffers
  iovecs | buffer array
  frees | a set of flags indicating which of the iovecs array should be freed
  total | total data length to be written
  bytes | actual data length that was written

Here is the call graph for this function:

## ◆ SocketBuffer_queueChar()

void SocketBuffer_queueChar | ( | SOCKET | socket,
|  | char | c
| ) |  |

Queued a Charactor to a specific socket.

Parameters

  socket | the socket for which to queue char for
  c | the character to queue

Here is the call graph for this function:

## ◆ SocketBuffer_updateWrite()

pending_writes* SocketBuffer_updateWrite | ( | SOCKET | socket,
|  | char * | topic,
|  | char * | payload
| ) |  |

Update the queued write data for a socket in the case of QoS 0 messages.

Parameters

  socket | the socket for which the operation is now complete
  topic | the topic of the QoS 0 write
  payload | the payload of the QoS 0 write

Returns
  pointer to the updated queued data structure, or NULL

Here is the call graph for this function:

## ◆ SocketBuffer_writeComplete()

int SocketBuffer_writeComplete | ( | SOCKET | socket | ) |

A socket write has now completed so we can get rid of the queue.

Parameters

  socket | the socket for which the operation is now complete

Returns
  completion code, boolean - was the queue removed?

Here is the call graph for this function:

## ◆ socketcompare()

int socketcompare | ( | void * | a,
|  | void * | b
| ) |  |

List callback function for comparing socket_queues by socket.

Parameters

  a | first integer value
  b | second integer value

Returns
  boolean indicating whether a and b are equal