forked from lix-project/lix
libstore: remove Worker::{childStarted, goalFinished}
these two functions are now nearly trivial and much better inline into
makeGoalCommon. keeping them separate also separates information about
goal completion flows and how failure information ends up in `Worker`.
Change-Id: I6af86996e4a2346583371186595e3013c88fb082
This commit is contained in:
parent
649d8cd08f
commit
ed9b7f4f84
|
@ -94,7 +94,15 @@ std::pair<std::shared_ptr<G>, kj::Promise<Result<Goal::WorkResult>>> Worker::mak
|
|||
}(goal, map, it);
|
||||
};
|
||||
cachedGoal.promise = kj::evalLater(std::move(removeWhenDone)).fork();
|
||||
childStarted(goal, cachedGoal.promise.addBranch());
|
||||
children.add(cachedGoal.promise.addBranch().then([this](auto _result) {
|
||||
if (_result.has_value()) {
|
||||
auto & result = _result.value();
|
||||
permanentFailure |= result.permanentFailure;
|
||||
timedOut |= result.timedOut;
|
||||
hashMismatch |= result.hashMismatch;
|
||||
checkMismatch |= result.checkMismatch;
|
||||
}
|
||||
}));
|
||||
} else {
|
||||
if (!modify(*goal)) {
|
||||
cachedGoal = {};
|
||||
|
@ -195,26 +203,6 @@ std::pair<GoalPtr, kj::Promise<Result<Goal::WorkResult>>> Worker::makeGoal(const
|
|||
}, req.raw());
|
||||
}
|
||||
|
||||
|
||||
void Worker::goalFinished(GoalPtr goal, Goal::WorkResult & f)
|
||||
{
|
||||
permanentFailure |= f.permanentFailure;
|
||||
timedOut |= f.timedOut;
|
||||
hashMismatch |= f.hashMismatch;
|
||||
checkMismatch |= f.checkMismatch;
|
||||
}
|
||||
|
||||
void Worker::childStarted(GoalPtr goal, kj::Promise<Result<Goal::WorkResult>> promise)
|
||||
{
|
||||
children.add(promise
|
||||
.then([this, goal](auto result) {
|
||||
if (result.has_value()) {
|
||||
goalFinished(goal, result.assume_value());
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
kj::Promise<Result<Worker::Results>> Worker::updateStatistics()
|
||||
try {
|
||||
while (true) {
|
||||
|
|
|
@ -132,13 +132,6 @@ private:
|
|||
*/
|
||||
bool checkMismatch = false;
|
||||
|
||||
void goalFinished(GoalPtr goal, Goal::WorkResult & f);
|
||||
|
||||
/**
|
||||
* Registers a running child process.
|
||||
*/
|
||||
void childStarted(GoalPtr goal, kj::Promise<Result<Goal::WorkResult>> promise);
|
||||
|
||||
/**
|
||||
* Pass current stats counters to the logger for progress bar updates.
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue