1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-21 09:49:36 +01:00

Factor out the unix domain socket-specific code from RemoteStore

This commit is contained in:
Shea Levy 2016-09-02 14:15:04 -04:00
parent 7d4ccd9b17
commit 0f39633290
5 changed files with 69 additions and 36 deletions

View file

@ -18,7 +18,7 @@ template<typename T> class Pool;
/* FIXME: RemoteStore is a misnomer - should be something like
DaemonStore. */
class RemoteStore : public LocalFSStore
class RemoteStore : public virtual Store
{
public:
@ -26,8 +26,6 @@ public:
/* Implementations of abstract store API methods. */
std::string getUri() override;
bool isValidPathUncached(const Path & path) override;
PathSet queryValidPaths(const PathSet & paths) override;
@ -84,11 +82,10 @@ public:
void addSignatures(const Path & storePath, const StringSet & sigs) override;
private:
protected:
struct Connection
{
AutoCloseFD fd;
FdSink to;
FdSource from;
unsigned int daemonVersion;
@ -98,11 +95,33 @@ private:
void processStderr(Sink * sink = 0, Source * source = 0);
};
virtual ref<Connection> openConnection() = 0;
void setOptions(Connection & conn);
void initConnection(Connection & conn);
private:
ref<Pool<Connection>> connections;
};
ref<Connection> openConnection();
class UDSRemoteStore : public LocalFSStore, public RemoteStore
{
public:
void setOptions(ref<Connection> conn);
UDSRemoteStore(const Params & params, size_t maxConnections = std::numeric_limits<size_t>::max());
std::string getUri() override;
private:
struct Connection : RemoteStore::Connection
{
AutoCloseFD fd;
};
ref<RemoteStore::Connection> openConnection() override;
};