8 months ago |
37 |
1 |
#ifndef TASK_H | ||
2 |
#define TASK_H | ||||
3 |
#include <stdbool.h> | ||||
4 |
#include "future.h" | ||||
7 months ago |
5 |
#include "cor_platform.h" | |||
8 months ago |
37 |
6 |
|||
7 |
typedef struct Task Task; | ||||
8 |
|||||
9 |
extern _Cor_thread_local Task *current_task; | ||||
10 |
|||||
11 |
typedef bool (*Task_Entry)(void *param, void **res); | ||||
12 |
|||||
13 |
void Task_ctor(Task *tsk, Task_Entry entry, void *param); | ||||
14 |
Task *Task_New(Task_Entry entry, void *param); | ||||
15 |
void Task_dtor(Task *tsk); | ||||
16 |
void Task_Delete(Task *tsk); | ||||
17 |
static inline bool Task_Await(Task *tsk, void **res); | ||||
18 |
void Task_Cancel(Task *tsk, void *cancel_value); | ||||
19 |
static inline bool Task_IsCanceled(Task *tsk); | ||||
20 |
static inline Future *Task_GetAwaitedFuture(Task *tsk); | ||||
21 |
bool Task_Run(Task_Entry start, void *value, void **res); | ||||
22 |
|||||
23 |
#include "task.def.h" | ||||
24 |
#endif | ||||
25 |