Lines Matching defs:task
88 FutureObj_HEAD(task)
1879 TaskStepMethWrapper_new(TaskObj *task, PyObject *arg)
1887 Py_INCREF(task);
1888 o->sw_task = task;
1909 register_task(PyObject *task)
1914 &PyId_add, task);
1924 unregister_task(PyObject *task)
1929 &PyId_discard, task);
1939 enter_task(PyObject *loop, PyObject *task)
1952 "Cannot enter into task %R while another " \
1953 "task %R is being executed.",
1954 task, item, NULL);
1961 return _PyDict_SetItem_KnownHash(current_tasks, loop, task, hash);
1966 leave_task(PyObject *loop, PyObject *task)
1976 if (item != task) {
1983 "Leaving task %R does not match the current task %R.",
1984 task, item, NULL);
2061 TaskObj_clear(TaskObj *task)
2063 (void)FutureObj_clear((FutureObj*) task);
2064 Py_CLEAR(task->task_context);
2065 Py_CLEAR(task->task_coro);
2066 Py_CLEAR(task->task_name);
2067 Py_CLEAR(task->task_fut_waiter);
2072 TaskObj_traverse(TaskObj *task, visitproc visit, void *arg)
2074 Py_VISIT(task->task_context);
2075 Py_VISIT(task->task_coro);
2076 Py_VISIT(task->task_name);
2077 Py_VISIT(task->task_fut_waiter);
2078 (void)FutureObj_traverse((FutureObj*) task, visit, arg);
2083 TaskObj_get_log_destroy_pending(TaskObj *task, void *Py_UNUSED(ignored))
2085 if (task->task_log_destroy_pending) {
2094 TaskObj_set_log_destroy_pending(TaskObj *task, PyObject *val, void *Py_UNUSED(ignored))
2104 task->task_log_destroy_pending = is_true;
2109 TaskObj_get_must_cancel(TaskObj *task, void *Py_UNUSED(ignored))
2111 if (task->task_must_cancel) {
2120 TaskObj_get_coro(TaskObj *task, void *Py_UNUSED(ignored))
2122 if (task->task_coro) {
2123 Py_INCREF(task->task_coro);
2124 return task->task_coro;
2131 TaskObj_get_fut_waiter(TaskObj *task, void *Py_UNUSED(ignored))
2133 if (task->task_fut_waiter) {
2134 Py_INCREF(task->task_fut_waiter);
2135 return task->task_fut_waiter;
2142 TaskObj_repr(TaskObj *task)
2144 return PyObject_CallOneArg(asyncio_task_repr_func, (PyObject *)task);
2171 Request that this task cancel itself.
2179 task will be cancelled: the exception might be caught and
2180 acted upon, delaying cancellation of the task or preventing
2181 cancellation completely. The task may also return a value or
2185 not return True (unless the task was already cancelled). A
2186 task will be marked as cancelled when the wrapped coroutine
2190 This also increases the task's count of cancellation requests.
2242 Return the count of the task's cancellation requests.
2259 Decrement the task's count of cancellation requests.
2284 Return the list of stack frames for this task's coroutine.
2320 Print the stack or traceback for this task's coroutine.
2423 TaskObj_finalize(TaskObj *task)
2426 _Py_IDENTIFIER(task);
2435 if (task->task_state != STATE_PENDING || !task->task_log_destroy_pending) {
2453 _PyDict_SetItemId(context, &PyId_task, (PyObject*)task) < 0)
2458 if (task->task_source_tb != NULL) {
2460 task->task_source_tb) < 0)
2466 func = _PyObject_GetAttrId(task->task_loop, &PyId_call_exception_handler);
2486 FutureObj_finalize((FutureObj*)task);
2548 TaskObj *task = (TaskObj *)self;
2562 if (task->task_weakreflist != NULL) {
2566 (void)TaskObj_clear(task);
2567 Py_TYPE(task)->tp_free(task);
2571 task_call_step_soon(TaskObj *task, PyObject *arg)
2573 PyObject *cb = TaskStepMethWrapper_new(task, arg);
2578 int ret = call_soon(task->task_loop, cb, NULL, task->task_context);
2584 task_set_error_soon(TaskObj *task, PyObject *et, const char *format, ...)
2607 if (task_call_step_soon(task, e) == -1) {
2631 task_step_impl(TaskObj *task, PyObject *exc)
2639 if (task->task_state != STATE_PENDING) {
2642 task,
2647 if (task->task_must_cancel) {
2665 exc = create_cancelled_error((FutureObj*)task);
2673 task->task_must_cancel = 0;
2676 Py_CLEAR(task->task_fut_waiter);
2678 coro = task->task_coro;
2709 if (task->task_must_cancel) {
2711 task->task_must_cancel = 0;
2712 tmp = future_cancel((FutureObj*)task, task->task_cancel_msg);
2715 tmp = future_set_result((FutureObj*)task, result);
2738 FutureObj *fut = (FutureObj*)task;
2753 o = future_set_exception((FutureObj*)task, ev);
2779 if (result == (PyObject*)task) {
2780 /* We have a task that wants to await on itself */
2791 if (fut->fut_loop != task->task_loop) {
2801 /* result.add_done_callback(task._wakeup) */
2802 wrapper = PyCFunction_New(&TaskWakeupDef, (PyObject *)task);
2807 (FutureObj*)result, wrapper, task->task_context);
2814 /* task._fut_waiter = result */
2815 task->task_fut_waiter = result; /* no incref is necessary */
2817 if (task->task_must_cancel) {
2821 task->task_cancel_msg);
2831 task->task_must_cancel = 0;
2841 if (task_call_step_soon(task, NULL)) {
2867 if (oloop != task->task_loop) {
2883 wrapper = PyCFunction_New(&TaskWakeupDef, (PyObject *)task);
2888 /* result.add_done_callback(task._wakeup) */
2897 stack[1] = (PyObject *)task->task_context;
2906 /* task._fut_waiter = result */
2907 task->task_fut_waiter = result; /* no incref is necessary */
2909 if (task->task_must_cancel) {
2913 task->task_cancel_msg);
2923 task->task_must_cancel = 0;
2939 task, PyExc_RuntimeError,
2941 "generator in task %R with %R", task, result);
2948 task, PyExc_RuntimeError, "Task got bad yield: %R", result);
2954 task, PyExc_RuntimeError,
2955 "Task cannot await on itself: %R", task);
2961 task, PyExc_RuntimeError,
2963 "in task %R with %R",
2964 task, result);
2970 task, PyExc_RuntimeError,
2972 task, result);
2982 task_step(TaskObj *task, PyObject *exc)
2986 if (enter_task(task->task_loop, (PyObject*)task) < 0) {
2990 res = task_step_impl(task, exc);
2995 leave_task(task->task_loop, (PyObject*)task);
3000 if (leave_task(task->task_loop, (PyObject*)task) < 0) {
3011 task_wakeup(TaskObj *task, PyObject *o)
3027 return task_step(task, NULL);
3030 result = task_step(task, fut_result);
3039 return task_step(task, NULL);
3051 result = task_step(task, ev);
3174 task: object
3176 Register a new task in asyncio as executed by loop.
3182 _asyncio__register_task_impl(PyObject *module, PyObject *task)
3185 if (register_task(task) < 0) {
3195 task: object
3197 Unregister a task.
3203 _asyncio__unregister_task_impl(PyObject *module, PyObject *task)
3206 if (unregister_task(task) < 0) {
3217 task: object
3219 Enter into task execution or resume suspended task.
3227 _asyncio__enter_task_impl(PyObject *module, PyObject *loop, PyObject *task)
3230 if (enter_task(loop, task) < 0) {
3241 task: object
3243 Leave task execution or suspend a task.
3251 _asyncio__leave_task_impl(PyObject *module, PyObject *loop, PyObject *task)
3254 if (leave_task(loop, task) < 0) {