diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2016-11-09T17·57+0100 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2016-11-09T17·57+0100 |
commit | 4b8f1b0ec066a5b994747b1afd050f5f62d857f6 (patch) | |
tree | a946094a9e4a3a56cfe713b01cd7d27104d56b03 /src/libstore/remote-store.hh | |
parent | 21c55ab3b54fc2db30ca53c572d24b38331f508c (diff) | |
parent | b99c6e0e2959e90ddda14d8b318e4c7b1a508674 (diff) |
Merge branch 'ssh-store' of https://github.com/shlevy/nix
Diffstat (limited to 'src/libstore/remote-store.hh')
-rw-r--r-- | src/libstore/remote-store.hh | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/src/libstore/remote-store.hh b/src/libstore/remote-store.hh index b14ce4a97ff9..40f17da300d0 100644 --- a/src/libstore/remote-store.hh +++ b/src/libstore/remote-store.hh @@ -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; @@ -87,25 +85,46 @@ public: void addSignatures(const Path & storePath, const StringSet & sigs) override; -private: +protected: struct Connection { - AutoCloseFD fd; FdSink to; FdSource from; unsigned int daemonVersion; - ~Connection(); + virtual ~Connection(); void processStderr(Sink * sink = 0, Source * source = 0); }; + virtual ref<Connection> openConnection() = 0; + + void initConnection(Connection & conn); + ref<Pool<Connection>> connections; - ref<Connection> openConnection(); +private: + + void setOptions(Connection & conn); +}; + +class UDSRemoteStore : public LocalFSStore, public RemoteStore +{ +public: + + UDSRemoteStore(const Params & params, size_t maxConnections = std::numeric_limits<size_t>::max()); + + std::string getUri() override; + +private: + + struct Connection : RemoteStore::Connection + { + AutoCloseFD fd; + }; - void setOptions(ref<Connection> conn); + ref<RemoteStore::Connection> openConnection() override; }; |