ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
queue.h File Reference

Go to the source code of this file.

Data Structures

struct  queued_packet_t
 Single packet ready to send (header already in network byte order) More...
 
struct  packet_node
 Node in the packet queue linked list. More...
 
struct  node_pool
 Memory pool for packet nodes to reduce malloc/free overhead. More...
 
struct  packet_queue_t
 Thread-safe packet queue for producer-consumer communication. More...
 

Typedefs

typedef struct packet_node packet_node_t
 Forward declaration for packet queue node.
 
typedef struct node_pool node_pool_t
 Memory pool for packet nodes to reduce malloc/free overhead.
 

Functions

Node Pool Functions
node_pool_t * node_pool_create (size_t pool_size)
 Create a memory pool for packet queue nodes.
 
void node_pool_destroy (node_pool_t *pool)
 Destroy a node pool and free all memory.
 
packet_node_t * node_pool_get (node_pool_t *pool)
 Get a free node from the pool.
 
void node_pool_put (node_pool_t *pool, packet_node_t *node)
 Return a node to the pool.
 
Queue Management Functions
packet_queue_t * packet_queue_create (size_t max_size)
 Create a new packet queue.
 
packet_queue_t * packet_queue_create_with_pool (size_t max_size, size_t pool_size)
 Create a packet queue with node pool.
 
packet_queue_t * packet_queue_create_with_pools (size_t max_size, size_t node_pool_size, bool use_buffer_pool)
 Create a packet queue with both node and buffer pools.
 
void packet_queue_stop (packet_queue_t *queue)
 Destroy a packet queue and free all resources.
 
Queue Operations
int packet_queue_enqueue (packet_queue_t *queue, packet_type_t type, const void *data, size_t data_len, uint32_t client_id, bool copy_data)
 Enqueue a packet into the queue.
 
int packet_queue_enqueue_packet (packet_queue_t *queue, const queued_packet_t *packet)
 Enqueue a pre-built packet (for special cases like compressed frames)
 
queued_packet_t * packet_queue_dequeue (packet_queue_t *queue)
 Dequeue a packet from the queue (non-blocking)
 
queued_packet_t * packet_queue_try_dequeue (packet_queue_t *queue)
 Try to dequeue a packet without blocking.
 
void packet_queue_free_packet (queued_packet_t *packet)
 Free a dequeued packet.
 
Queue Status Functions
size_t packet_queue_size (packet_queue_t *queue)
 Get current number of packets in queue.
 
bool packet_queue_is_empty (packet_queue_t *queue)
 Check if queue is empty.
 
bool packet_queue_is_full (packet_queue_t *queue)
 Check if queue is full.
 
Queue Control Functions
void packet_queue_destroy (packet_queue_t *queue)
 Signal queue shutdown (causes dequeue to return NULL)
 
void packet_queue_clear (packet_queue_t *queue)
 Clear all packets from queue.
 
Statistics Functions
void packet_queue_get_stats (packet_queue_t *queue, uint64_t *enqueued, uint64_t *dequeued, uint64_t *dropped)
 Get queue statistics.
 
bool packet_queue_validate_packet (const queued_packet_t *packet)
 Validate packet integrity.