diff options
author | alois31 <alois1@gmx-topmail.de> | 2024-06-26 16:05:44 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@localhost> | 2024-06-26 16:05:44 +0000 |
commit | 30da1b17d9b48028bfb3b94ed73733913d23b18a (patch) | |
tree | d345e0e07bad7143ffb0803f201e4b07735a51ce /src | |
parent | 4ac2c496d499a4a0e2d64edf32eb855268e7aa8d (diff) | |
parent | 206a5dbb8f4606a1a7b8d0179e018880b9b92575 (diff) |
Merge "libmain/progress-bar: move implementation out of the header" into main
Diffstat (limited to 'src')
-rw-r--r-- | src/libmain/progress-bar.cc | 20 | ||||
-rw-r--r-- | src/libmain/progress-bar.hh | 21 |
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(); |