9 months ago |
37 |
1 |
#include <pthread.h> | ||
2 |
#include "coroutine.h" | ||||
3 |
|||||
4 |
|||||
5 |
struct Task { | ||||
6 |
Future base; | ||||
7 |
Coroutine *cor; | ||||
8 |
Task_Entry entry; | ||||
9 |
void *param; | ||||
10 |
Future *awaiting_future; | ||||
11 |
bool canceled; | ||||
12 |
void *cancel_value; | ||||
13 |
}; | ||||
14 |
|||||
15 |
|||||
16 |
static inline bool Task_IsCanceled( | ||||
17 |
Task *tsk | ||||
18 |
){ | ||||
19 |
return tsk->canceled; | ||||
20 |
} | ||||
21 |
|||||
22 |
|||||
23 |
static inline bool Task_Await( | ||||
24 |
Task *tsk, | ||||
25 |
void **res | ||||
26 |
){ | ||||
27 |
return Future_Await(&tsk->base, res); | ||||
28 |
} | ||||
29 |
|||||
30 |
|||||
31 |
static inline Future *Task_GetAwaitedFuture( | ||||
32 |
Task *tsk | ||||
33 |
){ | ||||
34 |
return tsk->awaiting_future; | ||||
35 |
} | ||||
36 |