6#include <userver/engine/deadline.hpp>
7#include <userver/engine/impl/task_context_factory.hpp>
8#include <userver/engine/task/shared_task_with_result.hpp>
9#include <userver/engine/task/task_processor_fwd.hpp>
10#include <userver/engine/task/task_with_result.hpp>
11#include <userver/utils/impl/wrapped_call.hpp>
13USERVER_NAMESPACE_BEGIN
19template <
template <
typename>
typename TaskType,
typename Function,
typename... Args>
20[[nodiscard]]
auto MakeTaskWithResult(
21 TaskProcessor& task_processor,
27 using ResultType =
typename utils::impl::WrappedCallImplType<Function, Args...>::ResultType;
28 constexpr auto kWaitMode = TaskType<ResultType>::kWaitMode;
30 return TaskType<ResultType>{MakeTask(
31 {task_processor, importance, kWaitMode, deadline}, std::forward<Function>(f), std::forward<Args>(args)...
58template <
typename Function,
typename... Args>
59[[nodiscard]]
auto AsyncNoSpan(TaskProcessor& task_processor, Function&& f, Args&&... args) {
66template <
typename Function,
typename... Args>
67[[nodiscard]]
auto SharedAsyncNoSpan(TaskProcessor& task_processor, Function&& f, Args&&... args) {
74template <
typename Function,
typename... Args>
75[[nodiscard]]
auto AsyncNoSpan(TaskProcessor& task_processor, Deadline deadline, Function&& f, Args&&... args) {
82template <
typename Function,
typename... Args>
83[[nodiscard]]
auto SharedAsyncNoSpan(TaskProcessor& task_processor, Deadline deadline, Function&& f, Args&&... args) {
90template <
typename Function,
typename... Args>
96template <
typename Function,
typename... Args>
102template <
typename Function,
typename... Args>
103[[nodiscard]]
auto AsyncNoSpan(Deadline deadline, Function&& f, Args&&... args) {
110template <
typename Function,
typename... Args>
112 return SharedAsyncNoSpan(
119template <
typename Function,
typename... Args>
128template <
typename Function,
typename... Args>
137template <
typename Function,
typename... Args>
139 return CriticalAsyncNoSpan(
146template <
typename Function,
typename... Args>
148 return SharedCriticalAsyncNoSpan(
155template <
typename Function,
typename... Args>
161 std::forward<Function>(f),
162 std::forward<Args>(args)...