53#ifndef PROGRESS_TRACKER_HPP
54#define PROGRESS_TRACKER_HPP
57#include <condition_variable>
149 void Advance(std::uint64_t step_count = 1u) noexcept
279 void Reset(std::uint64_t total_steps)
noexcept
311 template <
typename RepresentationT,
typename PeriodT>
313 std::chrono::duration<RepresentationT, PeriodT> timeout
316 std::unique_lock lock{
m_mutex};
345 template <
typename ClockT,
typename DurationT>
347 std::chrono::time_point<ClockT, DurationT> deadline
350 std::unique_lock lock{
m_mutex};
377 std::unique_lock lock{
m_mutex};
385 mutable std::condition_variable
441 std::uint64_t total_steps = 1u
444 return std::make_shared<ProgressTracker>(total_steps);
548 std::uint64_t step_count = 1u
~AdvanceTracker()
Destructor that advances the tracker.
Definition progress_tracker.hpp:561
std::uint64_t m_step_count
Definition progress_tracker.hpp:572
SharedProgressTrackerT m_shared_progress_tracker
Definition progress_tracker.hpp:571
AdvanceTracker(SharedProgressTrackerT shared_progress_tracker, std::uint64_t step_count=1u) noexcept
Construct with a shared progress tracker and step count.
Definition progress_tracker.hpp:546
~MarkTrackerAsCompleted()
Destructor that marks the tracker as completed.
Definition progress_tracker.hpp:496
SharedProgressTrackerT m_shared_progress_tracker
Definition progress_tracker.hpp:506
MarkTrackerAsCompleted(SharedProgressTrackerT shared_progress_tracker) noexcept
Construct with a shared progress tracker.
Definition progress_tracker.hpp:483
A type-safe percentage value in the range [0, 100].
Definition percentage.hpp:81
void Reset(std::uint64_t total_steps) noexcept
Reset the tracker for a new job.
Definition progress_tracker.hpp:279
std::uint64_t GetCompletedSteps() const noexcept
Get the number of completed steps.
Definition progress_tracker.hpp:168
void Advance(std::uint64_t step_count=1u) noexcept
Advance the progress by a number of completed steps.
Definition progress_tracker.hpp:149
void WaitForCompletion() const
Wait indefinitely for the job to complete.
Definition progress_tracker.hpp:375
ProgressTracker(std::uint64_t total_steps=1u) noexcept
Construct a ProgressTracker with a given number of total steps.
Definition progress_tracker.hpp:127
std::condition_variable m_condition_variable
Definition progress_tracker.hpp:386
bool IsCompleted() const noexcept
Check if the job is complete.
Definition progress_tracker.hpp:235
std::uint64_t m_completed_steps
Definition progress_tracker.hpp:388
bool TryWaitForCompletion(std::chrono::duration< RepresentationT, PeriodT > timeout) const
Wait for completion with a timeout.
Definition progress_tracker.hpp:312
std::uint64_t GetTotalSteps() const noexcept
Get the total number of steps.
Definition progress_tracker.hpp:220
std::mutex m_mutex
Definition progress_tracker.hpp:384
void MarkAsCompleted() noexcept
Mark the job as fully completed.
Definition progress_tracker.hpp:257
std::uint64_t GetIncompletedSteps() const noexcept
Get the number of remaining (incomplete) steps.
Definition progress_tracker.hpp:205
Percentage GetCompletionPercentage() const noexcept
Get the completion percentage.
Definition progress_tracker.hpp:190
bool TryWaitForCompletionUntil(std::chrono::time_point< ClockT, DurationT > deadline) const
Wait for completion until a deadline.
Definition progress_tracker.hpp:346
std::uint64_t m_total_steps
Definition progress_tracker.hpp:387
SharedProgressTrackerT MakeSharedProgressTracker(std::uint64_t total_steps=1u) noexcept
Factory function to create a shared ProgressTracker.
Definition progress_tracker.hpp:440
std::shared_ptr< ProgressTracker > SharedProgressTrackerT
Shared pointer type for ProgressTracker.
Definition progress_tracker.hpp:405
Utility components for the libmagicxx library.
Definition percentage.hpp:39
Root namespace for the libmagicxx library.
Percentage value type for progress tracking.