mirror of
https://github.com/eclipse/tinydtls.git
synced 2025-05-11 21:01:23 +08:00
124 lines
2.9 KiB
C
124 lines
2.9 KiB
C
#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;
|
|
}
|