#ifndef ASYNC_QUEUE_H #define ASYNC_QUEUE_H #include typedef struct _GList GList; struct _GList { void* data; GList *next; GList *prev; }; typedef struct AsyncQueue { pthread_mutex_t mutex; pthread_cond_t condition; GList *head; GList *tail; unsigned int length; int enabled; } AsyncQueue; AsyncQueue *async_queue_new (void); void async_queue_free (AsyncQueue * queue); void async_queue_push (AsyncQueue * queue, void* data); void* async_queue_pop (AsyncQueue * queue); int async_queue_empty(AsyncQueue *queue); void* async_queue_pop_forced (AsyncQueue * queue); void async_queue_disable (AsyncQueue * queue); void async_queue_enable (AsyncQueue * queue); void async_queue_flush (AsyncQueue * queue); #endif /* ASYNC_QUEUE_H */