4#ifndef PROGRESS_TRACKER_HPP
5#define PROGRESS_TRACKER_HPP
8#include <condition_variable>
36 void advance(std::uint64_t step_count = 1u) noexcept
106 void reset(std::uint64_t total_steps)
noexcept
124 template <
typename RepresentationType,
typename PeriodType>
126 std::chrono::duration<RepresentationType, PeriodType> timeout
129 std::unique_lock lock{
m_mutex};
145 template <
typename ClockType,
typename DurationType>
147 std::chrono::time_point<ClockType, DurationType> deadline
150 std::unique_lock lock{
m_mutex};
161 std::unique_lock lock{
m_mutex};
189 std::uint64_t total_steps = 1u
192 return std::make_shared<progress_tracker>(total_steps);
243 std::uint64_t step_count = 1u
~advance_tracker()
Advance the tracker by the step count if it exists.
Definition progress_tracker.hpp:252
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:241
shared_progress_tracker_t m_shared_tracker
Definition progress_tracker.hpp:261
std::uint64_t m_step_count
Definition progress_tracker.hpp:262
shared_progress_tracker_t m_shared_tracker
Definition progress_tracker.hpp:225
~mark_tracker_as_completed()
Mark the tracker as completed if it exists.
Definition progress_tracker.hpp:216
mark_tracker_as_completed(shared_progress_tracker_t shared_tracker) noexcept
Construct mark_tracker_as_completed.
Definition progress_tracker.hpp:207
Represents a value in the range [0, 100].
Definition percentage.hpp:18
std::uint64_t m_completed_steps
Definition progress_tracker.hpp:171
void advance(std::uint64_t step_count=1u) noexcept
Increments the number of completed steps.
Definition progress_tracker.hpp:36
std::uint64_t m_total_steps
Definition progress_tracker.hpp:170
std::uint64_t get_total_steps() const noexcept
Definition progress_tracker.hpp:76
std::mutex m_mutex
Definition progress_tracker.hpp:168
bool is_completed() const noexcept
Definition progress_tracker.hpp:85
percentage get_completion_percentage() const noexcept
Definition progress_tracker.hpp:58
std::condition_variable m_condition_variable
Definition progress_tracker.hpp:169
std::uint64_t get_completed_steps() const noexcept
Definition progress_tracker.hpp:49
progress_tracker(std::uint64_t total_steps=1u) noexcept
Construct progress_tracker with a given total number of steps.
Definition progress_tracker.hpp:27
std::uint64_t get_incompleted_steps() const noexcept
Definition progress_tracker.hpp:67
void wait_for_completion() const
Wait until all steps are completed.
Definition progress_tracker.hpp:159
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:146
void reset(std::uint64_t total_steps) noexcept
Reset the tracker with a new total step count.
Definition progress_tracker.hpp:106
void mark_as_completed() noexcept
Marks the job as fully completed.
Definition progress_tracker.hpp:94
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:125
Definition percentage.hpp:12
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:188
std::shared_ptr< progress_tracker > shared_progress_tracker_t
Alias for a shared pointer to progress_tracker.
Definition progress_tracker.hpp:179