Base class for all the asynchronous tasks (engine::Task, engine::SharedTask, engine::SharedTaskWithResult, engine::TaskWithResult, dist_lock::DistLockedTask, ...). More...
#include <userver/engine/task/task_base.hpp>
Inheritance diagram for engine::TaskBase:Public Types | |
| enum class | Importance { kNormal , kCritical } |
| Task importance. More... | |
| enum class | State { kInvalid , kNew , kQueued , kRunning , kSuspended , kCancelled , kCompleted } |
| Task state. More... | |
| enum class | WaitMode { kSingleWaiter , kMultipleWaiters } |
| Task wait mode. More... | |
Public Member Functions | |
| bool | IsValid () const |
Checks whether this object owns an actual task (not State::kInvalid) | |
| State | GetState () const |
| Gets the task State. | |
| bool | IsFinished () const |
| Returns whether the task finished execution. | |
| void | Wait () const noexcept(false) |
| Suspends execution until the task finishes or caller is cancelled. Can be called from coroutine context only. For non-coroutine context use BlockingWait(). | |
| template<typename Rep , typename Period > | |
| void | WaitFor (const std::chrono::duration< Rep, Period > &) const noexcept(false) |
| Suspends execution until the task finishes or after the specified timeout or until caller is cancelled. | |
| template<typename Clock , typename Duration > | |
| void | WaitUntil (const std::chrono::time_point< Clock, Duration > &) const noexcept(false) |
| Suspends execution until the task finishes or until the specified time point is reached or until caller is cancelled. | |
| void | WaitUntil (Deadline) const |
| Suspends execution until the task finishes or until the specified deadline is reached or until caller is cancelled. | |
| void | RequestCancel () |
| Queues task cancellation request. | |
| void | SyncCancel () noexcept |
| Cancels the task and suspends execution until it is finished. Can be called from coroutine context only. For non-coroutine context use RequestCancel() + BlockingWait(). | |
| TaskCancellationReason | CancellationReason () const |
| Gets task cancellation reason. | |
| void | BlockingWait () const |
Static Public Member Functions | |
| static const std::string & | GetStateName (State state) |
Friends | |
| class | TaskCancellationToken |
Base class for all the asynchronous tasks (engine::Task, engine::SharedTask, engine::SharedTaskWithResult, engine::TaskWithResult, dist_lock::DistLockedTask, ...).
Definition at line 37 of file task_base.hpp.
|
strong |
Task importance.
Definition at line 40 of file task_base.hpp.
|
strong |
Task state.
Definition at line 52 of file task_base.hpp.
|
strong |
Task wait mode.
| Enumerator | |
|---|---|
| kSingleWaiter | Can be awaited by at most one task at a time. |
| kMultipleWaiters | Can be awaited by multiple tasks simultaneously. |
Definition at line 63 of file task_base.hpp.
| void engine::TaskBase::BlockingWait | ( | ) | const |
Waits for the task in non-coroutine context (e.g. non-TaskProcessor's std::thread).
| bool engine::TaskBase::IsValid | ( | ) | const |
Checks whether this object owns an actual task (not State::kInvalid)
An invalid task cannot be used. The task becomes invalid after each of the following calls:
Detach()Get() (see engine::TaskWithResult) | void engine::TaskBase::Wait | ( | ) | const |
Suspends execution until the task finishes or caller is cancelled. Can be called from coroutine context only. For non-coroutine context use BlockingWait().
| WaitInterruptedException | when current_task::IsCancelRequested() and no TaskCancellationBlockers are present. |
| void engine::TaskBase::WaitFor | ( | const std::chrono::duration< Rep, Period > & | duration | ) | const |
Suspends execution until the task finishes or after the specified timeout or until caller is cancelled.
| WaitInterruptedException | when current_task::IsCancelRequested() and no TaskCancellationBlockers are present. |
Definition at line 191 of file task_base.hpp.
| void engine::TaskBase::WaitUntil | ( | const std::chrono::time_point< Clock, Duration > & | until | ) | const |
Suspends execution until the task finishes or until the specified time point is reached or until caller is cancelled.
| WaitInterruptedException | when current_task::IsCancelRequested() and no TaskCancellationBlockers are present. |
Definition at line 197 of file task_base.hpp.
| void engine::TaskBase::WaitUntil | ( | Deadline | ) | const |
Suspends execution until the task finishes or until the specified deadline is reached or until caller is cancelled.
| WaitInterruptedException | when current_task::IsCancelRequested() and no TaskCancellationBlockers are present. |
|
friend |
Definition at line 165 of file task_base.hpp.