diff --git a/include/neuron/utils/async_queue.h b/include/neuron/utils/async_queue.h index 0af55bc8..9a4c02c3 100644 --- a/include/neuron/utils/async_queue.h +++ b/include/neuron/utils/async_queue.h @@ -87,4 +87,6 @@ void neu_async_queue_remove(neu_async_queue_t *q, neu_async_queue_filter filter, */ void neu_async_queue_clean(neu_async_queue_t *q); +int neu_async_queue_len(neu_async_queue_t *q); + #endif \ No newline at end of file diff --git a/src/utils/async_queue.c b/src/utils/async_queue.c index 52e226c8..859bc8e9 100644 --- a/src/utils/async_queue.c +++ b/src/utils/async_queue.c @@ -159,4 +159,16 @@ void neu_async_queue_clean(neu_async_queue_t *q) free(el); } pthread_mutex_unlock(&q->mtx); +} + +int neu_async_queue_len(neu_async_queue_t *q) +{ + int count = 0; + element *elt = NULL; + + pthread_mutex_lock(&q->mtx); + DL_COUNT(q->list, elt, count); + pthread_mutex_unlock(&q->mtx); + + return count; } \ No newline at end of file