diff options
Diffstat (limited to 'src/mbgl/util/uv-worker.h')
-rw-r--r-- | src/mbgl/util/uv-worker.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/mbgl/util/uv-worker.h b/src/mbgl/util/uv-worker.h new file mode 100644 index 0000000000..cb2075d1c3 --- /dev/null +++ b/src/mbgl/util/uv-worker.h @@ -0,0 +1,41 @@ +#ifndef MBGL_UTIL_UV_WORKER +#define MBGL_UTIL_UV_WORKER + +#ifdef __cplusplus +extern "C" { +#endif + +#include <mbgl/util/uv-messenger.h> +#include <mbgl/util/uv-channel.h> + +#include <stdlib.h> + +typedef struct uv_worker_s uv_worker_t; + +typedef void (*uv_worker_cb)(void *data); +typedef void (*uv_worker_after_cb)(void *data); +typedef void (*uv_worker_close_cb)(uv_worker_t *worker); + +struct uv_worker_s { +#ifndef NDEBUG + unsigned long thread_id; +#endif + uv_loop_t *loop; + uv_messenger_t *msgr; + uv_chan_t chan; + const char *name; + int count; + uv_worker_close_cb close_cb; + unsigned int active_items; +}; + +int uv_worker_init(uv_worker_t *worker, uv_loop_t *loop, int count, const char *name); +void uv_worker_send(uv_worker_t *worker, void *data, uv_worker_cb work_cb, + uv_worker_after_cb after_work_cb); +void uv_worker_close(uv_worker_t *worker, uv_worker_close_cb close_cb); + +#ifdef __cplusplus +} +#endif + +#endif |