1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2024-09-20 23:28:26 -04:00
nix/src/libstore/remote-store.hh

80 lines
1.5 KiB
C++
Raw Normal View History

2006-11-30 13:35:50 -05:00
#ifndef __REMOTE_STORE_H
#define __REMOTE_STORE_H
#include <string>
#include "store-api.hh"
namespace nix {
class Pipe;
class Pid;
struct FdSink;
struct FdSource;
2006-11-30 13:35:50 -05:00
class RemoteStore : public StoreAPI
{
public:
RemoteStore();
~RemoteStore();
/* Implementations of abstract store API methods. */
bool isValidPath(const Path & path);
Substitutes querySubstitutes(const Path & path);
2006-11-30 13:35:50 -05:00
bool hasSubstitutes(const Path & path);
2006-11-30 13:35:50 -05:00
Hash queryPathHash(const Path & path);
void queryReferences(const Path & path, PathSet & references);
2006-11-30 13:35:50 -05:00
void queryReferrers(const Path & path, PathSet & referrers);
2006-11-30 13:35:50 -05:00
Path addToStore(const Path & srcPath, bool fixed = false,
bool recursive = false, string hashAlgo = "",
PathFilter & filter = defaultPathFilter);
2006-11-30 13:35:50 -05:00
Path addTextToStore(const string & suffix, const string & s,
const PathSet & references);
void buildDerivations(const PathSet & drvPaths);
void ensurePath(const Path & path);
2006-11-30 13:35:50 -05:00
void addTempRoot(const Path & path);
void addIndirectRoot(const Path & path);
void syncWithGC();
Roots findRoots();
void collectGarbage(GCAction action, const PathSet & pathsToDelete,
bool ignoreLiveness, PathSet & result, unsigned long long & bytesFreed);
2006-11-30 13:35:50 -05:00
private:
AutoCloseFD fdSocket;
FdSink to;
FdSource from;
Pid child;
void processStderr();
2006-12-04 08:28:14 -05:00
void forkSlave();
void connectToDaemon();
2006-11-30 13:35:50 -05:00
};
}
#endif /* !__REMOTE_STORE_H */