aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2010-02-26 12:05:01 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2010-02-26 12:05:01 +0000
commit24035b98b155dd2d35414bdf015b3d7ab9a57af7 (patch)
tree435c165e44b41d6c6ebc58aac8499bffe2f10c62
parente42401ee7b0c0b166677595d4fd1255176ba33c2 (diff)
* Implement RemoteStore::queryValidPaths().
-rw-r--r--src/libstore/remote-store.cc4
-rw-r--r--src/libstore/worker-protocol.hh1
-rw-r--r--src/nix-worker/nix-worker.cc8
3 files changed, 12 insertions, 1 deletions
diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc
index b438c074f..c5d7975b5 100644
--- a/src/libstore/remote-store.cc
+++ b/src/libstore/remote-store.cc
@@ -214,7 +214,9 @@ bool RemoteStore::isValidPath(const Path & path)
PathSet RemoteStore::queryValidPaths()
{
openConnection();
- throw Error("not implemented");
+ writeInt(wopQueryValidPaths, to);
+ processStderr();
+ return readStorePaths(from);
}
diff --git a/src/libstore/worker-protocol.hh b/src/libstore/worker-protocol.hh
index 9e36aab0f..c3096010b 100644
--- a/src/libstore/worker-protocol.hh
+++ b/src/libstore/worker-protocol.hh
@@ -35,6 +35,7 @@ typedef enum {
wopCollectGarbage = 20,
wopQuerySubstitutablePathInfo = 21,
wopQueryDerivationOutputs = 22,
+ wopQueryValidPaths = 23,
} WorkerOp;
diff --git a/src/nix-worker/nix-worker.cc b/src/nix-worker/nix-worker.cc
index 59ab48776..a41fb2e15 100644
--- a/src/nix-worker/nix-worker.cc
+++ b/src/nix-worker/nix-worker.cc
@@ -520,6 +520,14 @@ static void performOp(unsigned int clientVersion,
break;
}
+ case wopQueryValidPaths: {
+ startWork();
+ PathSet paths = store->queryValidPaths();
+ stopWork();
+ writeStringSet(paths, to);
+ break;
+ }
+
default:
throw Error(format("invalid operation %1%") % op);
}