JabberWerxC  2015.1.1
workq.h
Go to the documentation of this file.
1 
13 #ifndef JABBERWERX_UTIL_WORKQ_H
14 #define JABBERWERX_UTIL_WORKQ_H
15 
16 #include "htable.h"
17 
18 
26 #define JW_WORKQ_CONFIG_SELECTOR "selector"
27 
28 
30 typedef struct jw_workq_t jw_workq;
31 
33 typedef struct jw_workq_item_t jw_workq_item;
34 
35 
43 typedef void (*jw_workq_func)(jw_workq_item *item, void *data);
44 
55 typedef void (*jw_workq_item_cleaner)(jw_workq_item *item, void *data);
56 
57 
58 #ifdef __cplusplus
59 extern "C"
60 {
61 #endif
62 
72  void *data);
73 
85 
106  jw_workq_func fn,
107  jw_workq_item **item,
108  jw_err *err);
109 
120 
135 
154 
172 
185  void *data,
186  jw_workq_item_cleaner cleaner);
187 
196 
218  uint64_t msecs,
219  jw_err *err);
220 
230 
239 
251 
279  jw_workq **q,
280  jw_err *err);
281 
295 
309 
322 
331 
340 
349 JABBERWERX_API struct event_base *jw_workq_get_selector(jw_workq *q);
350 
351 #ifdef __cplusplus
352 }
353 #endif
354 
355 #endif /* JABBERWERX_UTIL_WORKQ_H */
#define JABBERWERX_API
Definition: basics.h:32
JABBERWERX_API uint64_t jw_workq_item_get_delay(jw_workq_item *item)
JABBERWERX_API void jw_workq_destroy(jw_workq *q)
JABBERWERX_API void jw_workq_item_set_data(jw_workq_item *item, void *data, jw_workq_item_cleaner cleaner)
JABBERWERX_API void jw_workq_pause(jw_workq *q)
JABBERWERX_API void jw_workq_item_free_data_cleaner(jw_workq_item *item, void *data)
void(* jw_workq_func)(jw_workq_item *item, void *data)
Definition: workq.h:43
JABBERWERX_API bool jw_workq_item_create(jw_workq *q, jw_workq_func fn, jw_workq_item **item, jw_err *err)
JABBERWERX_API struct event_base * jw_workq_get_selector(jw_workq *q)
JABBERWERX_API void jw_workq_item_pool_cleaner(jw_workq_item *item, void *data)
void(* jw_workq_item_cleaner)(jw_workq_item *item, void *data)
Definition: workq.h:55
JABBERWERX_API jw_workq * jw_workq_item_get_workq(jw_workq_item *item)
JABBERWERX_API bool jw_workq_is_empty(jw_workq *q)
struct jw_workq_t jw_workq
Definition: workq.h:30
struct jw_workq_item_t jw_workq_item
Definition: workq.h:33
JABBERWERX_API size_t jw_workq_get_length(jw_workq *q)
JABBERWERX_API bool jw_workq_item_is_scheduled(jw_workq_item *item)
JABBERWERX_API void jw_workq_item_destroy(jw_workq_item *item)
JABBERWERX_API void jw_workq_item_cancel(jw_workq_item *item)
JABBERWERX_API void * jw_workq_item_get_data(jw_workq_item *item)
struct _jw_htable jw_htable
Definition: htable.h:27
Definition: basics.h:157
JABBERWERX_API bool jw_workq_item_set_delay(jw_workq_item *item, uint64_t msecs, jw_err *err)
JABBERWERX_API bool jw_workq_item_append(jw_workq_item *item, jw_err *err)
JABBERWERX_API bool jw_workq_create(jw_htable *config, jw_workq **q, jw_err *err)
JABBERWERX_API void jw_workq_resume(jw_workq *q)
JABBERWERX_API bool jw_workq_item_prepend(jw_workq_item *item, jw_err *err)
Datatypes and functions for hashtables.