From 0f5da8a83c227879566ed87623617fe195bc6f88 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 21 Feb 2007 16:34:00 +0000 Subject: * Support exportPath() in remote mode. --- src/nix-worker/nix-worker.cc | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/nix-worker/nix-worker.cc') diff --git a/src/nix-worker/nix-worker.cc b/src/nix-worker/nix-worker.cc index 17fbbf264693..04578a8b8794 100644 --- a/src/nix-worker/nix-worker.cc +++ b/src/nix-worker/nix-worker.cc @@ -178,6 +178,21 @@ static void stopWork(bool success = true, const string & msg = "") } +struct TunnelSink : Sink +{ + Sink & to; + TunnelSink(Sink & to) : to(to) + { + } + virtual void operator () + (const unsigned char * data, unsigned int len) + { + writeInt(STDERR_DATA, to); + writeString(string((const char *) data, len), to); + } +}; + + static void performOp(Source & from, Sink & to, unsigned int op) { switch (op) { @@ -263,6 +278,17 @@ static void performOp(Source & from, Sink & to, unsigned int op) break; } + case wopExportPath: { + Path path = readStorePath(from); + bool sign = readInt(from) == 1; + startWork(); + TunnelSink sink(to); + store->exportPath(path, sign, sink); + stopWork(); + writeInt(1, to); + break; + } + case wopBuildDerivations: { PathSet drvs = readStorePaths(from); startWork(); -- cgit 1.4.1