aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoralois31 <alois1@gmx-topmail.de>2024-06-26 16:05:44 +0000
committerGerrit Code Review <gerrit@localhost>2024-06-26 16:05:44 +0000
commit30da1b17d9b48028bfb3b94ed73733913d23b18a (patch)
treed345e0e07bad7143ffb0803f201e4b07735a51ce /src
parent4ac2c496d499a4a0e2d64edf32eb855268e7aa8d (diff)
parent206a5dbb8f4606a1a7b8d0179e018880b9b92575 (diff)
Merge "libmain/progress-bar: move implementation out of the header" into main
Diffstat (limited to 'src')
-rw-r--r--src/libmain/progress-bar.cc20
-rw-r--r--src/libmain/progress-bar.hh21
2 files changed, 21 insertions, 20 deletions
diff --git a/src/libmain/progress-bar.cc b/src/libmain/progress-bar.cc
index 28bb14863..e36bc0b01 100644
--- a/src/libmain/progress-bar.cc
+++ b/src/libmain/progress-bar.cc
@@ -13,6 +13,11 @@
namespace nix {
+// 100 years ought to be enough for anyone (yet sufficiently smaller than max() to not cause signed integer overflow).
+constexpr const auto A_LONG_TIME = std::chrono::duration_cast<std::chrono::milliseconds>(
+ 100 * 365 * std::chrono::seconds(86400)
+);
+
using namespace std::literals::chrono_literals;
static std::string_view getS(const std::vector<Logger::Field> & fields, size_t n)
@@ -36,6 +41,21 @@ static std::string_view storePathToName(std::string_view path)
return i == std::string::npos ? base.substr(0, 0) : base.substr(i + 1);
}
+ProgressBar::ProgressBar(bool isTTY)
+ : isTTY(isTTY)
+{
+ state_.lock()->active = isTTY;
+ updateThread = std::thread([&]() {
+ auto state(state_.lock());
+ auto nextWakeup = A_LONG_TIME;
+ while (state->active) {
+ if (!state->haveUpdate)
+ state.wait_for(updateCV, nextWakeup);
+ nextWakeup = draw(*state, {});
+ state.wait_for(quitCV, std::chrono::milliseconds(50));
+ }
+ });
+}
ProgressBar::~ProgressBar()
{
diff --git a/src/libmain/progress-bar.hh b/src/libmain/progress-bar.hh
index 176e941e8..e682d75fe 100644
--- a/src/libmain/progress-bar.hh
+++ b/src/libmain/progress-bar.hh
@@ -8,11 +8,6 @@
namespace nix {
-// 100 years ought to be enough for anyone (yet sufficiently smaller than max() to not cause signed integer overflow).
-constexpr const auto A_LONG_TIME = std::chrono::duration_cast<std::chrono::milliseconds>(
- 100 * 365 * std::chrono::seconds(86400)
-);
-
struct ProgressBar : public Logger
{
struct ActInfo
@@ -68,21 +63,7 @@ struct ProgressBar : public Logger
bool printMultiline = false;
bool isTTY;
- ProgressBar(bool isTTY)
- : isTTY(isTTY)
- {
- state_.lock()->active = isTTY;
- updateThread = std::thread([&]() {
- auto state(state_.lock());
- auto nextWakeup = A_LONG_TIME;
- while (state->active) {
- if (!state->haveUpdate)
- state.wait_for(updateCV, nextWakeup);
- nextWakeup = draw(*state, {});
- state.wait_for(quitCV, std::chrono::milliseconds(50));
- }
- });
- }
+ ProgressBar(bool isTTY);
~ProgressBar();