diff --git a/include/lighttpd/waitqueue.h b/include/lighttpd/waitqueue.h index 5fc73d4..cbc3129 100644 --- a/include/lighttpd/waitqueue.h +++ b/include/lighttpd/waitqueue.h @@ -45,4 +45,7 @@ LI_API waitqueue_elem *waitqueue_pop(waitqueue *queue); /* removes an element from the queue */ LI_API void waitqueue_remove(waitqueue *queue, waitqueue_elem *elem); +/* returns the length of the queue */ +LI_API guint waitqueue_length(waitqueue *queue); + #endif diff --git a/src/waitqueue.c b/src/waitqueue.c index 5f7bc14..a2b551f 100644 --- a/src/waitqueue.c +++ b/src/waitqueue.c @@ -103,4 +103,18 @@ void waitqueue_remove(waitqueue *queue, waitqueue_elem *elem) { elem->next->prev = elem->prev; elem->queued = FALSE; + elem->ts = 0; +} + + +guint waitqueue_length(waitqueue *queue) { + guint i = 0; + waitqueue_elem *elem = queue->head; + + while (elem) { + i++; + elem = elem->next; + } + + return i; }