26class TaskBuilder
final {
28 TaskBuilder() =
default;
30 TaskBuilder(
const TaskBuilder&) =
default;
32 TaskBuilder(TaskBuilder&&) =
default;
34 TaskBuilder& operator=(
const TaskBuilder&) =
default;
36 TaskBuilder& operator=(TaskBuilder&&) =
default;
40 TaskBuilder&
Critical() USERVER_IMPL_LIFETIME_BOUND;
44 TaskBuilder&
SpanName(std::string&& name) USERVER_IMPL_LIFETIME_BOUND;
50 TaskBuilder&
HideSpan() USERVER_IMPL_LIFETIME_BOUND;
55 TaskBuilder&
NoSpan() USERVER_IMPL_LIFETIME_BOUND;
60 TaskBuilder&
TaskProcessor(engine::TaskProcessor& tp) USERVER_IMPL_LIFETIME_BOUND;
65 TaskBuilder&
Deadline(engine::Deadline deadline) USERVER_IMPL_LIFETIME_BOUND;
79 template <
typename Function,
typename... Args>
80 auto Build(Function&& f, Args&&... args);
89 template <
typename Function,
typename... Args>
93 template <
typename Task>
94 engine::
impl::TaskConfig MakeConfig()
const;
98 utils::impl::SpanWrapCall::HideSpan hide_span,
99 const utils::impl::SourceLocation& location =
utils::impl::SourceLocation::Current()
102 template <
typename Task,
typename Function,
typename... Args>
103 Task BuildTask(Function&& f, Args&&... args);
107 struct HideSpanTag {};
110 engine::TaskProcessor* tp_{
nullptr};
112 engine::Deadline deadline_;
113 std::optional<std::variant<std::string, NoSpanTag, HideSpanTag>> span_;
114 utils::impl::SpanWrapCall::InheritVariables inherit_variables_{
utils::impl::SpanWrapCall::InheritVariables::kYes};
122 return utils::impl::SpanLazyPrvalue(std::move(name), inherit_variables_, hide_span, location);
128 return {tp, importance_, Task::kWaitMode, deadline_};