65 #include "gw-config.h" 87 int (*
cmp)(
const void*,
const void *);
108 if (
size >= new_size)
112 queue->size = new_size;
159 while (index <= queue->len / 2) {
180 ret = gw_malloc(
sizeof(*ret));
182 pthread_cond_init(&ret->
nonempty, NULL);
192 ret->
tab[0] = gw_malloc(
sizeof(**ret->
tab));
311 queue->mutex->owner = -1;
312 pthread_cleanup_push((
void(*)(
void*))pthread_mutex_unlock, &
queue->mutex->mutex);
314 pthread_cleanup_pop(0);
360 ret =
queue->producers;
gw_assert(wtls_machine->packet_to_send !=NULL)
int(* cmp)(const void *, const void *)
static void make_bigger(gw_prioqueue_t *queue, long items)
static void downheap(gw_prioqueue_t *queue, register long index)
void gw_prioqueue_foreach(gw_prioqueue_t *queue, void(*fn)(const void *, long))
void * gw_prioqueue_consume(gw_prioqueue_t *queue)
void * gw_prioqueue_get(gw_prioqueue_t *queue)
void gw_prioqueue_insert(gw_prioqueue_t *queue, void *item)
static void queue_lock(gw_prioqueue_t *queue)
void * gw_prioqueue_remove(gw_prioqueue_t *queue)
long gw_prioqueue_len(gw_prioqueue_t *queue)
gw_prioqueue_t * gw_prioqueue_create(int(*cmp)(const void *, const void *))
void mutex_destroy(Mutex *mutex)
void gw_prioqueue_destroy(gw_prioqueue_t *queue, void(*item_destroy)(void *))
void gw_prioqueue_remove_producer(gw_prioqueue_t *queue)
static int compare(struct element *a, struct element *b, int(*cmp)(const void *, const void *))
static void upheap(gw_prioqueue_t *queue, register long index)
static void item_destroy(void *item)
static void queue_unlock(gw_prioqueue_t *queue)
long gw_prioqueue_producer_count(gw_prioqueue_t *queue)
void gw_prioqueue_add_producer(gw_prioqueue_t *queue)