4#ifndef PROGRESS_TRACKER_HPP
5#define PROGRESS_TRACKER_HPP
8#include <condition_variable>
38 void advance(std::uint64_t step_count = 1u) noexcept
108 void reset(std::uint64_t total_steps)
noexcept
126 template <
typename RepresentationType,
typename PeriodType>
128 std::chrono::duration<RepresentationType, PeriodType> timeout
131 std::unique_lock lock{
m_mutex};
147 template <
typename ClockType,
typename DurationType>
149 std::chrono::time_point<ClockType, DurationType> deadline
152 std::unique_lock lock{
m_mutex};
163 std::unique_lock lock{
m_mutex};
191 std::uint64_t total_steps = 1u
194 return std::make_shared<progress_tracker>(total_steps);
244 std::uint64_t step_count = 1u
RAII helper that advances a shared progress_tracker by a given step count upon destruction.
Definition progress_tracker.hpp:234
~advance_tracker()
Advance the tracker by the step count if it exists.
Definition progress_tracker.hpp:253
advance_tracker(shared_progress_tracker_t shared_tracker, std::uint64_t step_count=1u) noexcept
Construct advance_tracker with a shared tracker and step count.
Definition progress_tracker.hpp:242
shared_progress_tracker_t m_shared_tracker
Definition progress_tracker.hpp:262
std::uint64_t m_step_count
Definition progress_tracker.hpp:263
RAII helper that marks a shared progress_tracker as completed upon destruction.
Definition progress_tracker.hpp:202
shared_progress_tracker_t m_shared_tracker
Definition progress_tracker.hpp:226
~mark_tracker_as_completed()
Mark the tracker as completed if it exists.
Definition progress_tracker.hpp:217
mark_tracker_as_completed(shared_progress_tracker_t shared_tracker) noexcept
Construct mark_tracker_as_completed.
Definition progress_tracker.hpp:209
Represents a value in the range [0, 100].
Definition percentage.hpp:20
Thread-safe tracker for monitoring the progress of a job composed of multiple steps.
Definition progress_tracker.hpp:22
std::uint64_t m_completed_steps
Definition progress_tracker.hpp:173
void advance(std::uint64_t step_count=1u) noexcept
Increments the number of completed steps.
Definition progress_tracker.hpp:38
std::uint64_t m_total_steps
Definition progress_tracker.hpp:172
std::uint64_t get_total_steps() const noexcept
Definition progress_tracker.hpp:78
std::mutex m_mutex
Definition progress_tracker.hpp:170
bool is_completed() const noexcept
Definition progress_tracker.hpp:87
percentage get_completion_percentage() const noexcept
Definition progress_tracker.hpp:60
std::condition_variable m_condition_variable
Definition progress_tracker.hpp:171
std::uint64_t get_completed_steps() const noexcept
Definition progress_tracker.hpp:51
progress_tracker(std::uint64_t total_steps=1u) noexcept
Construct progress_tracker with a given total number of steps.
Definition progress_tracker.hpp:29
std::uint64_t get_incompleted_steps() const noexcept
Definition progress_tracker.hpp:69
void wait_for_completion() const
Wait until all steps are completed.
Definition progress_tracker.hpp:161
bool try_wait_for_completion_until(std::chrono::time_point< ClockType, DurationType > deadline) const
Wait until the job is complete or the specified deadline is reached.
Definition progress_tracker.hpp:148
void reset(std::uint64_t total_steps) noexcept
Reset the tracker with a new total step count.
Definition progress_tracker.hpp:108
void mark_as_completed() noexcept
Marks the job as fully completed.
Definition progress_tracker.hpp:96
bool try_wait_for_completion(std::chrono::duration< RepresentationType, PeriodType > timeout) const
Wait for the job to complete, or until the specified timeout duration elapses.
Definition progress_tracker.hpp:127
shared_progress_tracker_t make_shared_progress_tracker(std::uint64_t total_steps=1u) noexcept
Create a shared pointer to a progress_tracker.
Definition progress_tracker.hpp:190
std::shared_ptr< progress_tracker > shared_progress_tracker_t
Alias for a shared pointer to progress_tracker.
Definition progress_tracker.hpp:181