8#include <boost/smart_ptr/intrusive_ptr.hpp>
10#include <userver/engine/deadline.hpp>
12USERVER_NAMESPACE_BEGIN
31class TaskCancellationToken;
77class TaskCancellationBlocker
final {
79 TaskCancellationBlocker();
80 ~TaskCancellationBlocker();
82 TaskCancellationBlocker(
const TaskCancellationBlocker&) =
delete;
83 TaskCancellationBlocker(TaskCancellationBlocker&&) =
delete;
84 TaskCancellationBlocker& operator=(
const TaskCancellationBlocker&) =
delete;
85 TaskCancellationBlocker& operator=(TaskCancellationBlocker&&) =
delete;
88 impl::TaskContext& context_;
89 const bool was_allowed_;
103class TaskCancellationToken
final {
112 TaskCancellationToken(
const TaskCancellationToken&)
noexcept;
113 TaskCancellationToken(TaskCancellationToken&&)
noexcept;
114 TaskCancellationToken& operator=(
const TaskCancellationToken&)
noexcept;
115 TaskCancellationToken& operator=(TaskCancellationToken&&)
noexcept;
116 ~TaskCancellationToken();
137 explicit TaskCancellationToken(impl::TaskContext& context)
noexcept;
139 boost::intrusive_ptr<impl::TaskContext> context_;