mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-10 08:16:15 +02:00
* More operations.
This commit is contained in:
parent
a711689368
commit
0263279071
3 changed files with 50 additions and 9 deletions
|
@ -2,6 +2,7 @@
|
|||
#include "util.hh"
|
||||
#include "remote-store.hh"
|
||||
#include "worker-protocol.hh"
|
||||
#include "archive.hh"
|
||||
|
||||
#include <iostream>
|
||||
#include <unistd.h>
|
||||
|
@ -111,33 +112,45 @@ void RemoteStore::queryReferrers(const Path & storePath,
|
|||
|
||||
Path RemoteStore::addToStore(const Path & srcPath)
|
||||
{
|
||||
throw Error("not implemented");
|
||||
writeInt(wopAddToStore, to);
|
||||
writeString(baseNameOf(srcPath), to);
|
||||
dumpPath(srcPath, to);
|
||||
Path path = readString(from);
|
||||
return path;
|
||||
}
|
||||
|
||||
|
||||
Path RemoteStore::addToStoreFixed(bool recursive, string hashAlgo,
|
||||
const Path & srcPath)
|
||||
{
|
||||
throw Error("not implemented");
|
||||
throw Error("not implemented 4");
|
||||
}
|
||||
|
||||
|
||||
Path RemoteStore::addTextToStore(const string & suffix, const string & s,
|
||||
const PathSet & references)
|
||||
{
|
||||
throw Error("not implemented");
|
||||
writeInt(wopAddTextToStore, to);
|
||||
writeString(suffix, to);
|
||||
writeString(s, to);
|
||||
writeInt(references.size(), to);
|
||||
for (PathSet::iterator i = references.begin(); i != references.end(); ++i)
|
||||
writeString(*i, to);
|
||||
|
||||
Path path = readString(from);
|
||||
return path;
|
||||
}
|
||||
|
||||
|
||||
void RemoteStore::buildDerivations(const PathSet & drvPaths)
|
||||
{
|
||||
throw Error("not implemented");
|
||||
throw Error("not implemented 6");
|
||||
}
|
||||
|
||||
|
||||
void RemoteStore::ensurePath(const Path & storePath)
|
||||
{
|
||||
throw Error("not implemented");
|
||||
throw Error("not implemented 7");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -7,9 +7,11 @@
|
|||
|
||||
|
||||
typedef enum {
|
||||
wopQuit = 0,
|
||||
wopIsValidPath = 1,
|
||||
wopQuerySubstitutes = 2,
|
||||
wopQuit,
|
||||
wopIsValidPath,
|
||||
wopQuerySubstitutes,
|
||||
wopAddToStore,
|
||||
wopAddTextToStore,
|
||||
} WorkerOp;
|
||||
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "util.hh"
|
||||
#include "serialise.hh"
|
||||
#include "worker-protocol.hh"
|
||||
#include "archive.hh"
|
||||
|
||||
using namespace nix;
|
||||
|
||||
|
@ -40,8 +41,33 @@ void processConnection(Source & from, Sink & to)
|
|||
break;
|
||||
}
|
||||
|
||||
case wopAddToStore: {
|
||||
/* !!! uberquick hack */
|
||||
string baseName = readString(from);
|
||||
Path tmp = createTempDir();
|
||||
Path tmp2 = tmp + "/" + baseName;
|
||||
restorePath(tmp2, from);
|
||||
writeString(store->addToStore(tmp2), to);
|
||||
deletePath(tmp);
|
||||
break;
|
||||
}
|
||||
|
||||
case wopAddTextToStore: {
|
||||
string suffix = readString(from);
|
||||
string s = readString(from);
|
||||
unsigned int refCount = readInt(from);
|
||||
PathSet refs;
|
||||
while (refCount--) {
|
||||
Path ref = readString(from);
|
||||
assertStorePath(ref);
|
||||
refs.insert(ref);
|
||||
}
|
||||
writeString(store->addTextToStore(suffix, s, refs), to);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
throw Error("invalid operation");
|
||||
throw Error(format("invalid operation %1%") % op);
|
||||
}
|
||||
|
||||
} while (!quit);
|
||||
|
|
Loading…
Reference in a new issue