37 struct lws_threadpool;
38 struct lws_threadpool_task;
40 enum lws_threadpool_task_status {
42 LWS_TP_STATUS_RUNNING,
43 LWS_TP_STATUS_SYNCING,
44 LWS_TP_STATUS_STOPPING,
45 LWS_TP_STATUS_FINISHED,
46 LWS_TP_STATUS_STOPPED,
49 enum lws_threadpool_task_return {
51 LWS_TP_RETURN_CHECKING_IN,
59 LWS_TP_RETURN_FINISHED,
61 LWS_TP_RETURN_STOPPED,
64 LWS_TP_RETURN_FLAG_OUTLIVE = 64
79 enum lws_threadpool_task_return (*
task)(
void *
user,
80 enum lws_threadpool_task_status s);
107 LWS_VISIBLE LWS_EXTERN
struct lws_threadpool *
108 lws_threadpool_create(
struct lws_context *context,
110 const char *format, ...) LWS_FORMAT(3);
126 LWS_VISIBLE LWS_EXTERN
void
127 lws_threadpool_finish(struct lws_threadpool *tp);
136 LWS_VISIBLE LWS_EXTERN
void
137 lws_threadpool_destroy(struct lws_threadpool *tp);
159 LWS_VISIBLE LWS_EXTERN struct lws_threadpool_task *
160 lws_threadpool_enqueue(struct lws_threadpool *tp,
162 const
char *format, ...) LWS_FORMAT(3);
176 LWS_VISIBLE LWS_EXTERN
int
177 lws_threadpool_dequeue(struct lws *wsi);
196 LWS_VISIBLE LWS_EXTERN enum lws_threadpool_task_status
197 lws_threadpool_task_status_wsi(struct lws *wsi,
198 struct lws_threadpool_task **task,
void **user);
212 LWS_VISIBLE LWS_EXTERN
void
213 lws_threadpool_task_sync(struct lws_threadpool_task *task,
int stop);
229 LWS_VISIBLE LWS_EXTERN
void
230 lws_threadpool_dump(struct lws_threadpool *tp);