diff options
Diffstat (limited to 'src/buildtool/progress_reporting')
-rw-r--r-- | src/buildtool/progress_reporting/TARGETS | 10 | ||||
-rw-r--r-- | src/buildtool/progress_reporting/progress.hpp | 5 | ||||
-rw-r--r-- | src/buildtool/progress_reporting/progress_reporter.cpp | 22 | ||||
-rw-r--r-- | src/buildtool/progress_reporting/progress_reporter.hpp | 8 |
4 files changed, 22 insertions, 23 deletions
diff --git a/src/buildtool/progress_reporting/TARGETS b/src/buildtool/progress_reporting/TARGETS index 45c3db1c..6a00bcdc 100644 --- a/src/buildtool/progress_reporting/TARGETS +++ b/src/buildtool/progress_reporting/TARGETS @@ -24,14 +24,14 @@ , "hdrs": ["progress_reporter.hpp"] , "srcs": ["progress_reporter.cpp"] , "stage": ["src", "buildtool", "progress_reporting"] - , "deps": ["base_progress_reporter"] - , "private-deps": - [ "progress" - , ["@", "fmt", "", "fmt"] + , "deps": + [ "base_progress_reporter" + , "progress" , ["@", "gsl", "", "gsl"] , ["src/buildtool/common", "common"] - , ["src/buildtool/logging", "logging"] ] + , "private-deps": + [["@", "fmt", "", "fmt"], ["src/buildtool/logging", "logging"]] } , "base_progress_reporter": { "type": ["@", "rules", "CC", "library"] diff --git a/src/buildtool/progress_reporting/progress.hpp b/src/buildtool/progress_reporting/progress.hpp index 43cdc7cc..d9b3aa8e 100644 --- a/src/buildtool/progress_reporting/progress.hpp +++ b/src/buildtool/progress_reporting/progress.hpp @@ -26,11 +26,6 @@ class Progress { public: - [[nodiscard]] static auto Instance() noexcept -> Progress& { - static Progress instance{}; - return instance; - } - [[nodiscard]] auto TaskTracker() noexcept -> TaskTracker& { return task_tracker_; } diff --git a/src/buildtool/progress_reporting/progress_reporter.cpp b/src/buildtool/progress_reporting/progress_reporter.cpp index 86ec0c0e..27960172 100644 --- a/src/buildtool/progress_reporting/progress_reporter.cpp +++ b/src/buildtool/progress_reporting/progress_reporter.cpp @@ -17,25 +17,23 @@ #include <string> #include "fmt/core.h" -#include "gsl/gsl" -#include "src/buildtool/common/statistics.hpp" #include "src/buildtool/logging/log_level.hpp" #include "src/buildtool/logging/logger.hpp" -#include "src/buildtool/progress_reporting/progress.hpp" -auto ProgressReporter::Reporter() noexcept -> progress_reporter_t { - return BaseProgressReporter::Reporter([]() { - int total = gsl::narrow<int>(Progress::Instance().OriginMap().size()); +auto ProgressReporter::Reporter( + gsl::not_null<Statistics*> const& stats, + gsl::not_null<Progress*> const& progress) noexcept -> progress_reporter_t { + return BaseProgressReporter::Reporter([stats, progress]() { + int total = gsl::narrow<int>(progress->OriginMap().size()); // Note: order matters; queued has to be queried last - auto const& sample = Progress::Instance().TaskTracker().Sample(); - auto const& stats = Statistics::Instance(); - int cached = stats.ActionsCachedCounter(); - int run = stats.ActionsExecutedCounter(); - int queued = stats.ActionsQueuedCounter(); + auto const& sample = progress->TaskTracker().Sample(); + int cached = stats->ActionsCachedCounter(); + int run = stats->ActionsExecutedCounter(); + int queued = stats->ActionsQueuedCounter(); int active = queued - run - cached; std::string now_msg; if (active > 0 and !sample.empty()) { - auto const& origin_map = Progress::Instance().OriginMap(); + auto const& origin_map = progress->OriginMap(); auto origins = origin_map.find(sample); if (origins != origin_map.end() and !origins->second.empty()) { auto const& origin = origins->second[0]; diff --git a/src/buildtool/progress_reporting/progress_reporter.hpp b/src/buildtool/progress_reporting/progress_reporter.hpp index 5323578f..1c4206de 100644 --- a/src/buildtool/progress_reporting/progress_reporter.hpp +++ b/src/buildtool/progress_reporting/progress_reporter.hpp @@ -15,11 +15,17 @@ #ifndef INCLUDED_SRC_BUILDTOOL_PROGRESS_REPORTING_PROGRESS_REPORTER_HPP #define INCLUDED_SRC_BUILDTOOL_PROGRESS_REPORTING_PROGRESS_REPORTER_HPP +#include "gsl/gsl" +#include "src/buildtool/common/statistics.hpp" #include "src/buildtool/progress_reporting/base_progress_reporter.hpp" +#include "src/buildtool/progress_reporting/progress.hpp" class ProgressReporter { public: - [[nodiscard]] static auto Reporter() noexcept -> progress_reporter_t; + [[nodiscard]] static auto Reporter( + gsl::not_null<Statistics*> const& stats, + gsl::not_null<Progress*> const& progress) noexcept + -> progress_reporter_t; }; #endif // INCLUDED_SRC_BUILDTOOL_PROGRESS_REPORTING_PROGRESS_REPORTER_HPP |