1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-27 16:51:15 +02:00

Simplify the callback mechanism

This commit is contained in:
Eelco Dolstra 2018-03-27 22:16:01 +02:00
parent 1672bcd230
commit 81ea8bd5ce
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
16 changed files with 152 additions and 180 deletions

View file

@ -84,10 +84,9 @@ struct LegacySSHStore : public Store
}
void queryPathInfoUncached(const Path & path,
std::function<void(std::shared_ptr<ValidPathInfo>)> success,
std::function<void(std::exception_ptr exc)> failure) override
Callback<std::shared_ptr<ValidPathInfo>> callback) override
{
sync2async<std::shared_ptr<ValidPathInfo>>(success, failure, [&]() -> std::shared_ptr<ValidPathInfo> {
try {
auto conn(connections->get());
debug("querying remote host '%s' for info on '%s'", host, path);
@ -97,7 +96,7 @@ struct LegacySSHStore : public Store
auto info = std::make_shared<ValidPathInfo>();
conn->from >> info->path;
if (info->path.empty()) return nullptr;
if (info->path.empty()) return callback(nullptr);
assert(path == info->path);
PathSet references;
@ -116,8 +115,8 @@ struct LegacySSHStore : public Store
auto s = readString(conn->from);
assert(s == "");
return info;
});
callback(std::move(info));
} catch (...) { callback.rethrow(); }
}
void addToStore(const ValidPathInfo & info, Source & source,