diff options
author | eldritch horrors <pennae@lix.systems> | 2024-08-02 17:00:57 +0200 |
---|---|---|
committer | eldritch horrors <pennae@lix.systems> | 2024-08-08 12:02:17 +0000 |
commit | 4c3010a1be60937ed6287ea613de403c36ce1396 (patch) | |
tree | 651559f055822b912849d25cbcc3b4008964ae0b /src | |
parent | 3ecb46e3e79e4fb69d9d973bbf83437f165cb3e8 (diff) |
libstore: make Worker::wakeUp private
Change-Id: Iffa55272fe6ef4adaf3e9d4d25e5339792c2e460
Diffstat (limited to 'src')
-rw-r--r-- | src/libstore/build/derivation-goal.cc | 6 | ||||
-rw-r--r-- | src/libstore/build/goal.hh | 4 | ||||
-rw-r--r-- | src/libstore/build/substitution-goal.cc | 6 | ||||
-rw-r--r-- | src/libstore/build/worker.cc | 3 | ||||
-rw-r--r-- | src/libstore/build/worker.hh | 10 |
5 files changed, 14 insertions, 15 deletions
diff --git a/src/libstore/build/derivation-goal.cc b/src/libstore/build/derivation-goal.cc index bcef9807b..b7df98472 100644 --- a/src/libstore/build/derivation-goal.cc +++ b/src/libstore/build/derivation-goal.cc @@ -648,8 +648,7 @@ Goal::WorkResult DerivationGoal::inputsRealised() slot to become available, since we don't need one if there is a build hook. */ state = &DerivationGoal::tryToBuild; - worker.wakeUp(shared_from_this()); - return StillAlive{}; + return ContinueImmediately{}; } Goal::WorkResult DerivationGoal::started() @@ -763,8 +762,7 @@ Goal::WorkResult DerivationGoal::tryToBuild() actLock.reset(); state = &DerivationGoal::tryLocalBuild; - worker.wakeUp(shared_from_this()); - return StillAlive{}; + return ContinueImmediately{}; } Goal::WorkResult DerivationGoal::tryLocalBuild() { diff --git a/src/libstore/build/goal.hh b/src/libstore/build/goal.hh index f41fbea2f..3d487f6da 100644 --- a/src/libstore/build/goal.hh +++ b/src/libstore/build/goal.hh @@ -108,12 +108,14 @@ public: struct [[nodiscard]] StillAlive {}; struct [[nodiscard]] WaitForSlot {}; struct [[nodiscard]] WaitForAWhile {}; + struct [[nodiscard]] ContinueImmediately {}; struct [[nodiscard]] Finished { ExitCode result; std::unique_ptr<Error> ex; }; - struct [[nodiscard]] WorkResult : std::variant<StillAlive, WaitForSlot, WaitForAWhile, Finished> + struct [[nodiscard]] WorkResult + : std::variant<StillAlive, WaitForSlot, WaitForAWhile, ContinueImmediately, Finished> { WorkResult() = delete; using variant::variant; diff --git a/src/libstore/build/substitution-goal.cc b/src/libstore/build/substitution-goal.cc index 192ddc572..77b003612 100644 --- a/src/libstore/build/substitution-goal.cc +++ b/src/libstore/build/substitution-goal.cc @@ -181,8 +181,7 @@ Goal::WorkResult PathSubstitutionGoal::referencesValid() assert(worker.store.isValidPath(i)); state = &PathSubstitutionGoal::tryToRun; - worker.wakeUp(shared_from_this()); - return StillAlive{}; + return ContinueImmediately{}; } @@ -255,8 +254,7 @@ Goal::WorkResult PathSubstitutionGoal::finished() /* Try the next substitute. */ state = &PathSubstitutionGoal::tryNext; - worker.wakeUp(shared_from_this()); - return StillAlive{}; + return ContinueImmediately{}; } worker.markContentsGood(storePath); diff --git a/src/libstore/build/worker.cc b/src/libstore/build/worker.cc index 722956e0d..32ac27483 100644 --- a/src/libstore/build/worker.cc +++ b/src/libstore/build/worker.cc @@ -189,6 +189,7 @@ void Worker::handleWorkResult(GoalPtr goal, Goal::WorkResult how) [&](Goal::StillAlive) {}, [&](Goal::WaitForSlot) { waitForBuildSlot(goal); }, [&](Goal::WaitForAWhile) { waitForAWhile(goal); }, + [&](Goal::ContinueImmediately) { wakeUp(goal); }, [&](Goal::Finished & f) { goalFinished(goal, f); }, }, how @@ -523,7 +524,7 @@ void Worker::waitForInput() if (rd == 0 || (rd == -1 && errno == EIO)) { debug("%1%: got EOF", goal->getName()); goal->handleEOF(k); - wakeUp(goal); + handleWorkResult(goal, Goal::ContinueImmediately{}); j->fds.erase(k); } else if (rd == -1) { if (errno != EINTR) diff --git a/src/libstore/build/worker.hh b/src/libstore/build/worker.hh index 3644039fb..20aa34e74 100644 --- a/src/libstore/build/worker.hh +++ b/src/libstore/build/worker.hh @@ -122,6 +122,11 @@ private: */ void waitForAWhile(GoalPtr goal); + /** + * Wake up a goal (i.e., there is something for it to do). + */ + void wakeUp(GoalPtr goal); + public: const Activity act; @@ -220,11 +225,6 @@ public: void removeGoal(GoalPtr goal); /** - * Wake up a goal (i.e., there is something for it to do). - */ - void wakeUp(GoalPtr goal); - - /** * Return the number of local build processes currently running (but not * remote builds via the build hook). */ |