blob: 901a3424ab861473b10492d6deccf58e67c4f494 [file] [log] [blame]
#include <string.h>
#include <stdio.h>
#include "utlist.h"
#include "netq.h"
void
dump_queue(struct netq_t *queue) {
struct netq_t *p;
int i = 0;
if (!queue) {
printf("(null)\n");
} else {
LL_FOREACH(queue, p) {
printf("node #%d, timeout: %d\n", i++, p->t);
}
}
}
int main(int argc, char **argv) {
struct netq_t *nq = NULL, *node;
int i;
clock_time_t timestamps[] = { 300, 100, 200, 400, 500 };
for (i = 0; i < sizeof(timestamps)/sizeof(clock_time_t); i++) {
node = netq_node_new(0);
if (!node) {
fprintf(stderr, "E: cannot create node #%d\n", i);
exit(EXIT_FAILURE);
}
node->t = timestamps[i];
if (!netq_insert_node(&nq, node)) {
fprintf(stderr, "E: cannot add node to nodelist #%d\n", i);
exit(EXIT_FAILURE);
}
}
printf("------------------------------------------------------------------------\n");
printf("initial queue:\n");
dump_queue(nq);
printf("------------------------------------------------------------------------\n");
printf("pop first element:\n");
node = netq_pop_first(&nq);
assert(node);
printf("first node's timeout is %d\n", node->t);
dump_queue(nq);
netq_node_free(node);
printf("------------------------------------------------------------------------\n");
printf("queue head:\n");
node = netq_head(&nq);
printf("head's timeout is %d\n", node->t);
dump_queue(nq);
printf("------------------------------------------------------------------------\n");
printf("next timeout:\n");
node = netq_next(node);
printf("next node's timeout is %d\n", node->t);
printf("------------------------------------------------------------------------\n");
printf("remove next:\n");
netq_remove(&nq, node);
dump_queue(nq);
netq_node_free(node);
printf("------------------------------------------------------------------------\n");
printf("insert new item (timeout 50):\n");
node = netq_node_new(0);
assert(node);
node->t = 50;
netq_insert_node(&nq, node);
dump_queue(nq);
printf("------------------------------------------------------------------------\n");
printf("insert new item (timeout 350):\n");
node = netq_node_new(0);
assert(node);
node->t = 350;
netq_insert_node(&nq, node);
dump_queue(nq);
printf("------------------------------------------------------------------------\n");
printf("insert new item (timeout 1000):\n");
node = netq_node_new(0);
assert(node);
node->t = 1000;
netq_insert_node(&nq, node);
dump_queue(nq);
printf("------------------------------------------------------------------------\n");
printf("remove all:\n");
netq_delete_all(&nq);
dump_queue(nq);
printf("------------------------------------------------------------------------\n");
printf("pop first element of empty queue:\n");
node = netq_pop_first(&nq);
assert(node == NULL);
dump_queue(nq);
return 0;
}