#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>

#include "queue.h"

void enqueue(Queue* queue, Packet* packet) {
    QueueNode* qn = calloc(1, sizeof(QueueNode));
    qn->packet = packet;

    if (queue->tail) {
        queue->tail->next = qn;
        queue->tail = qn;
    } else {
        queue->head = qn;
        queue->tail = qn;
    }
}

Packet* dequeue(Queue* queue) {
    if (!queue->head) {
        return NULL; // Report error
    }

    QueueNode* qn = queue->head;
    Packet* p = qn->packet;

    queue->head = queue->head->next;

    if (!queue->head) {
        queue->tail = NULL;
    }

    free(qn);

    return p;
}
