aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2016-10-07 19:20:47 +0200
committerEelco Dolstra <edolstra@gmail.com>2016-10-07 19:20:47 +0200
commitc663b84573edee2c5ece78f4ee269be73ac3ca35 (patch)
tree652d8fd54ab1dac920da95390a0727f147c53c7c /src
parent35db4f65a0f2ccbcaaef719e52b895fa78cad361 (diff)
Implement generic Store::queryValidPaths()
Diffstat (limited to 'src')
-rw-r--r--src/libstore/binary-cache-store.hh3
-rw-r--r--src/libstore/store-api.cc11
-rw-r--r--src/libstore/store-api.hh2
3 files changed, 12 insertions, 4 deletions
diff --git a/src/libstore/binary-cache-store.hh b/src/libstore/binary-cache-store.hh
index e369abe46..574696cf3 100644
--- a/src/libstore/binary-cache-store.hh
+++ b/src/libstore/binary-cache-store.hh
@@ -54,9 +54,6 @@ public:
bool isValidPathUncached(const Path & path) override;
- PathSet queryValidPaths(const PathSet & paths) override
- { notImpl(); }
-
PathSet queryAllValidPaths() override
{ notImpl(); }
diff --git a/src/libstore/store-api.cc b/src/libstore/store-api.cc
index 74014b47e..a830ae5bb 100644
--- a/src/libstore/store-api.cc
+++ b/src/libstore/store-api.cc
@@ -361,6 +361,17 @@ void Store::queryPathInfo(const Path & storePath,
}
+PathSet Store::queryValidPaths(const PathSet & paths)
+{
+ PathSet valid;
+
+ for (auto & path : paths)
+ if (isValidPath(path)) valid.insert(path);
+
+ return valid;
+}
+
+
/* Return a string accepted by decodeValidPathInfo() that
registers the specified paths as valid. Note: it's the
responsibility of the caller to provide a closure. */
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index b876ffbba..ce1583b0c 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -306,7 +306,7 @@ protected:
public:
/* Query which of the given paths is valid. */
- virtual PathSet queryValidPaths(const PathSet & paths) = 0;
+ virtual PathSet queryValidPaths(const PathSet & paths);
/* Query the set of all valid paths. Note that for some store
backends, the name part of store paths may be omitted