forked from lix-project/lix
74033a844f
processes can register indirect roots. Of course, there is still the problem that the garbage collector can only read the targets of the indirect roots when it's running as root...
74 lines
1.3 KiB
C++
74 lines
1.3 KiB
C++
#ifndef __REMOTE_STORE_H
|
|
#define __REMOTE_STORE_H
|
|
|
|
#include <string>
|
|
|
|
#include "store-api.hh"
|
|
|
|
|
|
namespace nix {
|
|
|
|
|
|
class Pipe;
|
|
class Pid;
|
|
struct FdSink;
|
|
struct FdSource;
|
|
|
|
|
|
class RemoteStore : public StoreAPI
|
|
{
|
|
public:
|
|
|
|
RemoteStore();
|
|
|
|
~RemoteStore();
|
|
|
|
/* Implementations of abstract store API methods. */
|
|
|
|
bool isValidPath(const Path & path);
|
|
|
|
Substitutes querySubstitutes(const Path & path);
|
|
|
|
bool hasSubstitutes(const Path & path);
|
|
|
|
Hash queryPathHash(const Path & path);
|
|
|
|
void queryReferences(const Path & path, PathSet & references);
|
|
|
|
void queryReferrers(const Path & path, PathSet & referrers);
|
|
|
|
Path addToStore(const Path & srcPath, bool fixed = false,
|
|
bool recursive = false, string hashAlgo = "");
|
|
|
|
Path addTextToStore(const string & suffix, const string & s,
|
|
const PathSet & references);
|
|
|
|
void buildDerivations(const PathSet & drvPaths);
|
|
|
|
void ensurePath(const Path & path);
|
|
|
|
void addTempRoot(const Path & path);
|
|
|
|
void addIndirectRoot(const Path & path);
|
|
|
|
void syncWithGC();
|
|
|
|
private:
|
|
AutoCloseFD fdSocket;
|
|
FdSink to;
|
|
FdSource from;
|
|
Pid child;
|
|
|
|
void processStderr();
|
|
|
|
void forkSlave();
|
|
|
|
void connectToDaemon();
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
#endif /* !__REMOTE_STORE_H */
|