25 #include <citrusleaf/cf_types.h>
35 #ifndef CF_QUEUE_ALLOCSZ
36 #define CF_QUEUE_ALLOCSZ 64
40 #define CF_QUEUE_ERR -1
41 #define CF_QUEUE_EMPTY -2
42 #define CF_QUEUE_NOMATCH -3 // used in cf_queue_priority_reduce_pop
47 #define CF_QUEUE_FOREVER -1
48 #define CF_QUEUE_NOWAIT 0
153 #define CF_Q_SZ(__q) (__q->write_offset - __q->read_offset)
155 #define CF_Q_EMPTY(__q) (__q->write_offset == __q->read_offset)
161 #define CF_Q_ELEM_PTR(__q, __i) (&__q->queue[ (__i % __q->allocsz) * __q->elementsz ] )
int cf_queue_push(cf_queue *q, void *ptr)
bool cf_queue_push_limit(cf_queue *q, void *ptr, uint limit)
unsigned int write_offset
int cf_queue_reduce_reverse(cf_queue *q, cf_queue_reduce_fn cb, void *udata)
int cf_queue_delete(cf_queue *q, void *buf, bool only_one)
void cf_queue_destroy(cf_queue *q)
int(* cf_queue_reduce_fn)(void *buf, void *udata)
int cf_queue_delete_all(cf_queue *q)
int cf_queue_push_head(cf_queue *q, void *ptr)
int cf_queue_sz(cf_queue *q)
int cf_queue_pop(cf_queue *q, void *buf, int mswait)
cf_queue * cf_queue_create(size_t elementsz, bool threadsafe)
int cf_queue_reduce(cf_queue *q, cf_queue_reduce_fn cb, void *udata)
void cf_queue_delete_offset(cf_queue *q, uint index)
int cf_queue_push_unique(cf_queue *q, void *ptr)