* Support exportPath() in remote mode.

This commit is contained in:
Eelco Dolstra 2007-02-21 16:34:00 +00:00
parent dc7d594776
commit 0f5da8a83c
4 changed files with 42 additions and 5 deletions

View file

@ -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();