* Skeleton of the privileged worker program.
* Some refactoring: put the NAR archive integer/string serialisation code in a separate file so it can be reused by the worker protocol implementation.
This commit is contained in:
parent
9adc074dc3
commit
40b3f64b55
12 changed files with 255 additions and 126 deletions
63
src/nix-worker/main.cc
Normal file
63
src/nix-worker/main.cc
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
#include "shared.hh"
|
||||
#include "local-store.hh"
|
||||
#include "util.hh"
|
||||
|
||||
using namespace nix;
|
||||
|
||||
|
||||
/* !!! Mostly cut&pasted from util/archive.hh */
|
||||
/* Use buffered reads. */
|
||||
static unsigned int readInt(int fd)
|
||||
{
|
||||
unsigned char buf[8];
|
||||
readFull(fd, buf, sizeof(buf));
|
||||
if (buf[4] || buf[5] || buf[6] || buf[7])
|
||||
throw Error("implementation cannot deal with > 32-bit integers");
|
||||
return
|
||||
buf[0] |
|
||||
(buf[1] << 8) |
|
||||
(buf[2] << 16) |
|
||||
(buf[3] << 24);
|
||||
}
|
||||
|
||||
|
||||
void processConnection(int fdFrom, int fdTo)
|
||||
{
|
||||
store = openStore();
|
||||
|
||||
unsigned int magic = readInt(fdFrom);
|
||||
if (magic != 0x6e697864) throw Error("protocol mismatch");
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void run(Strings args)
|
||||
{
|
||||
bool slave = false;
|
||||
bool daemon = false;
|
||||
|
||||
for (Strings::iterator i = args.begin(); i != args.end(); ) {
|
||||
string arg = *i++;
|
||||
if (arg == "--slave") slave = true;
|
||||
}
|
||||
|
||||
if (slave)
|
||||
processConnection(STDIN_FILENO, STDOUT_FILENO);
|
||||
|
||||
else if (daemon)
|
||||
throw Error("daemon mode not implemented");
|
||||
|
||||
else
|
||||
throw Error("must be run in either --slave or --daemon mode");
|
||||
|
||||
}
|
||||
|
||||
|
||||
void printHelp()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
string programId = "nix-store";
|
||||
Loading…
Add table
Add a link
Reference in a new issue