1.2.12.4.6 SRV_QUEUE_Read_Or_Remove Function

C

SRV_QUEUE_ELEMENT *SRV_QUEUE_Read_Or_Remove(
    SRV_QUEUE *queue, 
    SRV_QUEUE_MODE accessMode, 
    SRV_QUEUE_POSITION position
);

Summary

Reads or removes an element from a queue.

Description

This function reads or removes an element from a queue.

Precondition

The queue must have been initialized previously with function SRV_QUEUE_Init.

Parameters

ParamDescription
queuePointer to the queue from which the element must be read or removed
accessModeAccess mode (read or remove)
positionPosition in the queue to read or remove (head or tail)

Returns

  • In case of remove, the element will be removed from queue and returned.

  • In case of read, the element will be returned without removing it from the queue.

  • If the queue is empty, NULL is returned.

Example

#define NUM_MAX_NODES    750
typedef struct _node_info_tag
{
    struct _node_info_tag *prev;
    struct _node_info_tag *next;
    uint8_t macAddress[8]
} NODE_INFO;

static SRV_QUEUE nodeQueue;
static NODE_INFO nodeInfo;
NODE_INFO *removedNode;

SRV_QUEUE_Init(&nodeQueue, NUM_MAX_NODES, SRV_QUEUE_TYPE_SINGLE);
memset(nodeInfo.macAddress, 0xFF, 8);
SRV_QUEUE_Append(&nodeQueue, (SRV_QUEUE_ELEMENT *)&nodeInfo);
removedNode = SRV_QUEUE_Read_Or_Remove(&nodeQueue, SRV_QUEUE_MODE_REMOVE, 
                                        SRV_QUEUE_POSITION_HEAD);

Remarks

None.