about summary refs log tree commit diff
path: root/src/libstore/ssh-store.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore/ssh-store.cc')
-rw-r--r--src/libstore/ssh-store.cc35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/libstore/ssh-store.cc b/src/libstore/ssh-store.cc
index e1eb76659167..05992bb49d6e 100644
--- a/src/libstore/ssh-store.cc
+++ b/src/libstore/ssh-store.cc
@@ -1,4 +1,5 @@
-#include "ssh-store.hh"
+#include "store-api.hh"
+#include "remote-store.hh"
 #include "remote-fs-accessor.hh"
 #include "archive.hh"
 #include "worker-protocol.hh"
@@ -6,6 +7,38 @@
 
 namespace nix {
 
+class SSHStore : public RemoteStore
+{
+public:
+
+    SSHStore(string uri, const Params & params, size_t maxConnections = std::numeric_limits<size_t>::max());
+
+    std::string getUri() override;
+
+    void narFromPath(const Path & path, Sink & sink) override;
+
+    ref<FSAccessor> getFSAccessor() override;
+
+private:
+
+    struct Connection : RemoteStore::Connection
+    {
+        Pid sshPid;
+        AutoCloseFD out;
+        AutoCloseFD in;
+    };
+
+    ref<RemoteStore::Connection> openConnection() override;
+
+    AutoDelete tmpDir;
+
+    Path socketPath;
+
+    Pid sshMaster;
+
+    string uri;
+};
+
 SSHStore::SSHStore(string uri, const Params & params, size_t maxConnections)
     : Store(params)
     , RemoteStore(params, maxConnections)