diff options
author | Sascha Roloff <sascha.roloff@huawei.com> | 2023-02-23 14:54:54 +0100 |
---|---|---|
committer | Sascha Roloff <sascha.roloff@huawei.com> | 2023-02-27 13:27:57 +0100 |
commit | 5fae72fa842f2df805ccfcdee302debfee7a7b03 (patch) | |
tree | 27c516f595f8771ef68bb23c12c99f135f445188 /src/buildtool/progress_reporting/progress.hpp | |
parent | a16593272c497b60a3cccad7fe5b9c7b2eede11b (diff) | |
download | justbuild-5fae72fa842f2df805ccfcdee302debfee7a7b03.tar.gz |
Progress reporting: Extract generic logic from just progress class
Diffstat (limited to 'src/buildtool/progress_reporting/progress.hpp')
-rw-r--r-- | src/buildtool/progress_reporting/progress.hpp | 49 |
1 files changed, 10 insertions, 39 deletions
diff --git a/src/buildtool/progress_reporting/progress.hpp b/src/buildtool/progress_reporting/progress.hpp index 1e18a5ec..43cdc7cc 100644 --- a/src/buildtool/progress_reporting/progress.hpp +++ b/src/buildtool/progress_reporting/progress.hpp @@ -15,15 +15,14 @@ #ifndef INCLUDED_SRC_BUILDTOOL_PROGRESS_REPORTING_PROGRESS_HPP #define INCLUDED_SRC_BUILDTOOL_PROGRESS_REPORTING_PROGRESS_HPP -#include <cstdint> -#include <mutex> +#include <cstdlib> #include <string> #include <unordered_map> #include <utility> #include <vector> #include "src/buildtool/build_engine/target_map/configured_target.hpp" -#include "src/buildtool/logging/logger.hpp" +#include "src/buildtool/progress_reporting/task_tracker.hpp" class Progress { public: @@ -32,39 +31,13 @@ class Progress { return instance; } - void Start(const std::string& id) noexcept { - std::unique_lock lock(m_); - ++prio_; - try { - running_.emplace(id, prio_); - } catch (...) { - Logger::Log(LogLevel::Warning, - "Internal error in progress tracking; progress reports " - "might be incorrect."); - } - } - void Stop(const std::string& id) noexcept { - std::unique_lock lock(m_); - running_.erase(id); - } - - auto Sample() -> std::string { - std::unique_lock lock(m_); - std::string result; - uint64_t started = prio_ + 1; - for (auto const& it : running_) { - if (it.second < started) { - result = it.first; - started = it.second; - } - } - return result; + [[nodiscard]] auto TaskTracker() noexcept -> TaskTracker& { + return task_tracker_; } - // Return a reference to the origin map. It is the responsibility - // of the caller to ensure that access only happens in a - // single-threaded context. - auto OriginMap() -> std::unordered_map< + // Return a reference to the origin map. It is the responsibility of the + // caller to ensure that access only happens in a single-threaded context. + [[nodiscard]] auto OriginMap() noexcept -> std::unordered_map< std::string, std::vector< std::pair<BuildMaps::Target::ConfiguredTarget, std::size_t>>>& { @@ -72,14 +45,12 @@ class Progress { } private: - uint64_t prio_{}; - std::mutex m_{}; - std::unordered_map<std::string, uint64_t> running_{}; + ::TaskTracker task_tracker_{}; std::unordered_map< std::string, std::vector< std::pair<BuildMaps::Target::ConfiguredTarget, std::size_t>>> - origin_map_; + origin_map_{}; }; -#endif +#endif // INCLUDED_SRC_BUILDTOOL_PROGRESS_REPORTING_PROGRESS_HPP |