Mercurial > dovecot > core-2.2
view src/lib/aqueue.h @ 22664:fea53c2725c0
director: Fix director_max_parallel_moves/kicks type
Should be uint, not time.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 09 Nov 2017 12:24:16 +0200 |
parents | 81806d402514 |
children |
line wrap: on
line source
#ifndef AQUEUE_H #define AQUEUE_H /* Dynamically growing queue. Use the array directly to access the data, for example: count = queue_count(queue); for (i = 0; i < count; i++) { data = array[queue_idx(i)]; } */ struct aqueue { struct array *arr; unsigned int head, tail, area_size; bool full; }; struct aqueue *aqueue_init(struct array *array); void aqueue_deinit(struct aqueue **aqueue); /* Append item to head */ void aqueue_append(struct aqueue *aqueue, const void *data); /* Delete last item from tail */ void aqueue_delete_tail(struct aqueue *aqueue); /* Remove item from n'th position */ void aqueue_delete(struct aqueue *aqueue, unsigned int n); /* Clear the entire aqueue */ void aqueue_clear(struct aqueue *aqueue); /* Returns the number of items in aqueue. */ unsigned int aqueue_count(const struct aqueue *aqueue) ATTR_PURE; /* Returns array index of n'th element in aqueue. */ static inline unsigned int ATTR_PURE aqueue_idx(const struct aqueue *aqueue, unsigned int n) { return (aqueue->tail + n) % aqueue->area_size; } #endif