19#include <commons/display_info.hpp>
39 std::optional<std::string>
name;
42 std::chrono::steady_clock::time_point
created_at{std::chrono::steady_clock::now()};
43 std::optional<std::chrono::steady_clock::time_point>
started_at;
44 std::optional<std::chrono::steady_clock::time_point>
finished_at;
46 mutable std::mutex
mtx;
52 std::optional<std::string>
name = std::nullopt)
53 : state_(std::make_shared<
State>()) {
56 state_->name = std::move(
name);
67 [[nodiscard]]
bool valid() const noexcept {
68 return static_cast<bool>(state_);
71 [[nodiscard]] std::uint64_t
id() const noexcept {
72 return state_ ? state_->id : 0;
74 [[nodiscard]] std::uint64_t
pool_id() const noexcept {
75 return state_ ? state_->pool_id : 0;
80 [[nodiscard]] std::optional<std::string>
name()
const {
84 std::scoped_lock guard(state_->mtx);
89 [[nodiscard]] std::shared_ptr<State>
raw() const noexcept {
99 const auto now = std::chrono::steady_clock::now();
100 std::scoped_lock guard(state_->mtx);
101 state_->started_at = now;
112 const auto now = std::chrono::steady_clock::now();
113 std::scoped_lock guard(state_->mtx);
114 state_->finished_at = now;
127 const auto now = std::chrono::steady_clock::now();
128 std::scoped_lock guard(state_->mtx);
129 state_->finished_at = now;
130 state_->exception = ex;
141 const auto now = std::chrono::steady_clock::now();
142 std::scoped_lock guard(state_->mtx);
143 state_->finished_at = now;
145 state_->exception = ex;
157 snap.
id = state_->id;
158 snap.
pool_id = state_->pool_id;
159 snap.
state = state_->state.load(std::memory_order_acquire);
161 std::scoped_lock guard(state_->mtx);
162 snap.
name = state_->name;
170 static const comms::DisplayInfo info{
171 .name =
"TaskHandle",
172 .description =
"Handle to a single task submitted to a ThreadPool.",
173 .icon = comms::Icon::from(
"mdi:format-list-checks"),
179 std::shared_ptr<State> state_;
void mark_completed() const
Transition Running → Completed and stamp finished_at = now.
Definition task.hpp:107
TaskHandle(const TaskHandle &)=default
void mark_running() const
Transition Queued → Running and stamp started_at = now.
Definition task.hpp:94
std::uint64_t id() const noexcept
Definition task.hpp:71
TaskSnapshot snapshot() const
Consistent snapshot of the task's state.
Definition task.hpp:152
TaskHandle(TaskHandle &&) noexcept=default
TaskState state() const noexcept
Definition task.hpp:77
static const comms::DisplayInfo & display_info()
Definition task.hpp:169
void mark_failed(const std::exception_ptr &ex) const
Transition Running → Failed and stamp finished_at = now.
Definition task.hpp:122
std::shared_ptr< State > raw() const noexcept
Direct access to the shared state; used by the pool/future internals.
Definition task.hpp:89
std::optional< std::string > name() const
Definition task.hpp:80
std::uint64_t pool_id() const noexcept
Definition task.hpp:74
void mark_cancelled(const std::exception_ptr &ex=nullptr) const
Transition any non-terminal state → Cancelled and stamp finished_at.
Definition task.hpp:136
TaskHandle(const std::uint64_t id, const std::uint64_t pool_id, std::optional< std::string > name=std::nullopt)
Construct a handle owning a freshly-allocated State.
Definition task.hpp:50
bool valid() const noexcept
True iff this handle owns a state.
Definition task.hpp:67
Re-export <commons/display_info.hpp> and attach non-intrusive comms::HasDisplayInfo<> specializations...
Definition exceptions.hpp:22
TaskState
Lifecycle state of a TaskHandle.
Definition stats.hpp:31
@ Completed
Body returned normally.
@ Running
Picked up by a worker; body executing.
@ Queued
Submitted, waiting for a worker.
@ Cancelled
Discarded before running (shutdown_now, etc.).
Plain value snapshots of the live state of the ThreadMan world — threads, pools, tasks,...
Heap-resident bookkeeping for a single task.
Definition task.hpp:37
std::mutex mtx
Definition task.hpp:46
std::exception_ptr exception
Definition task.hpp:45
std::optional< std::chrono::steady_clock::time_point > finished_at
Definition task.hpp:44
std::chrono::steady_clock::time_point created_at
Definition task.hpp:42
std::optional< std::string > name
Definition task.hpp:39
std::uint64_t pool_id
Definition task.hpp:40
std::optional< std::chrono::steady_clock::time_point > started_at
Definition task.hpp:43
std::atomic< TaskState > state
Definition task.hpp:41
A snapshot of a single task's lifecycle.
Definition stats.hpp:79
std::chrono::steady_clock::time_point created_at
Definition stats.hpp:84
std::optional< std::chrono::steady_clock::time_point > finished_at
Definition stats.hpp:86
std::uint64_t pool_id
Definition stats.hpp:82
std::optional< std::string > name
Definition stats.hpp:81
TaskState state
Definition stats.hpp:83
std::uint64_t id
Definition stats.hpp:80
std::optional< std::chrono::steady_clock::time_point > started_at
Definition stats.hpp:85
bool failed
Definition stats.hpp:87