summaryrefslogtreecommitdiff
path: root/src/buildtool/progress_reporting/progress.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/progress_reporting/progress.hpp')
-rw-r--r--src/buildtool/progress_reporting/progress.hpp49
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