queue.c File Reference
`#include <stdio.h>`
`#include <string.h>`
`#include <time.h>`
`#include <ctype.h>`
`#include <stdlib.h>`
`#include <inttypes.h>`
`#include <sys/types.h>`
`#include "spandsp/telephony.h"`
`#include "spandsp/queue.h"`
`#include "spandsp/private/queue.h"`

## Functions

int | queue_empty (queue_state_t *s)
| Check if a queue is empty.
int | queue_free_space (queue_state_t *s)
| Check available free space.
int | queue_contents (queue_state_t *s)
| Check the contents of a queue.
void | queue_flush (queue_state_t *s)
| Flush the contents of a queue.
int | queue_view (queue_state_t *s, uint8_t *buf, int len)
| Copy bytes from a queue.
int | queue_read (queue_state_t *s, uint8_t *buf, int len)
| Read bytes from a queue.
int | queue_read_byte (queue_state_t *s)
| Read a byte from a queue.
int | queue_write (queue_state_t *s, const uint8_t *buf, int len)
| Write bytes to a queue.
int | queue_write_byte (queue_state_t *s, uint8_t byte)
| Write a byte to a queue.
int | queue_state_test_msg (queue_state_t *s)
| Test message length.
int | queue_read_msg (queue_state_t *s, uint8_t *buf, int len)
| Read a message from a queue.
int | queue_write_msg (queue_state_t *s, const uint8_t *buf, int len)
| Write a message to a queue.
queue_state_t * | queue_init (queue_state_t *s, int len, int flags)
| Initialise a queue.
int | queue_release (queue_state_t *s)
| Release a queue.
int | queue_free (queue_state_t *s)
| Delete a queue.

## Function Documentation

## queue_contents()

int queue_contents | ( | queue_state_t * | s | ) |

Check the contents of a queue.

Check the contents of a queue.

Parameters

  s | The queue context.

Returns
  The number of bytes in the queue.

References queue_state_s::iptr, queue_state_s::len, and queue_state_s::optr.

## queue_empty()

int queue_empty | ( | queue_state_t * | s | ) |

Check if a queue is empty.

Check if a queue is empty.

Parameters

  s | The queue context.

Returns
  TRUE if empty, else FALSE.

References queue_state_s::iptr, and queue_state_s::optr.

## queue_flush()

void queue_flush | ( | queue_state_t * | s | ) |

Flush the contents of a queue.

Flush the contents of a queue.

Parameters

  s | The queue context.

References queue_state_s::iptr, and queue_state_s::optr.

## queue_free()

int queue_free | ( | queue_state_t * | s | ) |

Delete a queue.

Free a queue.

Parameters

  s | The queue context.

Returns
  0 if OK, else -1.

Referenced by v8_free(), and v8_release().

## queue_free_space()

int queue_free_space | ( | queue_state_t * | s | ) |

Check available free space.

Check the available free space in a queue's buffer.

Parameters

  s | The queue context.

Returns
  The number of bytes of free space.

References queue_state_s::iptr, queue_state_s::len, and queue_state_s::optr.

Referenced by bell_mf_tx_put(), and dtmf_tx_put().

## queue_init()

queue_state_t * queue_init | ( | queue_state_t * | s,
|  | int | len,
|  | int | flags )

Initialise a queue.

Initialise a queue.

Parameters

  s | The queue context. If is imperative that the context this points to is immediately followed by a buffer of the required size + 1 octet.
  len | The length of the queue's buffer.
  flags | Flags controlling the operation of the queue. Valid flags are QUEUE_READ_ATOMIC and QUEUE_WRITE_ATOMIC.

Returns
  A pointer to the context if OK, else NULL.

References queue_state_s::flags, queue_state_s::iptr, queue_state_s::len, and queue_state_s::optr.

Referenced by bell_mf_tx_init(), dtmf_tx_init(), t31_init(), and v18_init().

## queue_read()

int queue_read | ( | queue_state_t * | s,
|  | uint8_t * | buf,
|  | int | len )

Read bytes from a queue.

Read bytes from a queue.

Parameters

  s | The queue context.
  buf | The buffer into which the bytes will be read.
  len | The length of the buffer.

Returns
  the number of bytes returned.

References queue_state_s::flags, queue_state_s::iptr, queue_state_s::len, queue_state_s::optr, and QUEUE_READ_ATOMIC.

Referenced by queue_read_msg().

## queue_read_byte()

int queue_read_byte | ( | queue_state_t * | s | ) |

Read a byte from a queue.

Read a byte from a queue.

Parameters

  s | The queue context.

Returns
  the byte, or -1 if the queue is empty.

References queue_state_s::iptr, queue_state_s::len, and queue_state_s::optr.

Referenced by bell_mf_tx(), and dtmf_tx().

## queue_read_msg()

int queue_read_msg | ( | queue_state_t * | s,
|  | uint8_t * | buf,
|  | int | len )

Read a message from a queue.

Read a message from a queue. If the message is longer than the buffer provided, only the first len bytes of the message will be returned. The remainder of the message will be discarded.

Parameters

  s | The queue context.
  buf | The buffer into which the message will be read.
  len | The length of the buffer.

Returns
  The number of bytes returned. If there are no messages in the queue, -1 is returned.

References queue_read().

## queue_release()

int queue_release | ( | queue_state_t * | s | ) |

Release a queue.

Release a queue.

Parameters

  s | The queue context.

Returns
  0 if OK, else -1.

## queue_state_test_msg()

int queue_state_test_msg | ( | queue_state_t * | s | ) |

Test message length.

Test the length of the message at the head of a queue.

Parameters

  s | The queue context.

Returns
  The length of the next message, in byte. If there are no messages in the queue, -1 is returned.

References queue_view().

## queue_view()

int queue_view | ( | queue_state_t * | s,
|  | uint8_t * | buf,
|  | int | len )

Copy bytes from a queue.

Copy bytes from a queue. This is similar to queue_read, but the data remains in the queue.

Parameters

  s | The queue context.
  buf | The buffer into which the bytes will be read.
  len | The length of the buffer.

Returns
  the number of bytes returned.

References queue_state_s::flags, queue_state_s::iptr, queue_state_s::len, queue_state_s::optr, and QUEUE_READ_ATOMIC.

Referenced by queue_state_test_msg().

## queue_write()

int queue_write | ( | queue_state_t * | s,
|  | const uint8_t * | buf,
|  | int | len )

Write bytes to a queue.

Write bytes to a queue.

Parameters

  s | The queue context.
  buf | The buffer containing the bytes to be written.
  len | The length of the buffer.

Returns
  the number of bytes actually written.

References queue_state_s::flags, queue_state_s::iptr, queue_state_s::len, queue_state_s::optr, and QUEUE_WRITE_ATOMIC.

Referenced by bell_mf_tx_put(), dtmf_tx_put(), and v18_put().

## queue_write_byte()

int queue_write_byte | ( | queue_state_t * | s,
|  | uint8_t | byte )

Write a byte to a queue.

Write a byte to a queue.

Parameters

  s | The queue context.
  byte | The byte to be written.

Returns
  the number of bytes actually written.

References queue_state_s::flags, queue_state_s::iptr, queue_state_s::len, queue_state_s::optr, and QUEUE_WRITE_ATOMIC.

## queue_write_msg()

int queue_write_msg | ( | queue_state_t * | s,
|  | const uint8_t * | buf,
|  | int | len )

Write a message to a queue.

Write a message to a queue.

Parameters

  s | The queue context.
  buf | The buffer from which the message will be written.
  len | The length of the message.

Returns
  The number of bytes actually written.

References queue_state_s::iptr, queue_state_s::len, and queue_state_s::optr.