summary refs log tree commit diff
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2014-02-10 06:52:48 -0500
committerShea Levy <shea@shealevy.com>2014-02-10 06:52:48 -0500
commit38c3beac1a8ac9ddf4fdbbcafd400dabcf195076 (patch)
treee6b1d1f111c18d9d01a9ffa401d0e93568fa01ed
parent16146031659eae475cd5933b8553b13d725ca436 (diff)
downloadguix-38c3beac1a8ac9ddf4fdbbcafd400dabcf195076.tar.gz
Move StoreApi::serve into opServe
Signed-off-by: Shea Levy <shea@shealevy.com>
-rw-r--r--src/libstore/store-api.cc34
-rw-r--r--src/libstore/store-api.hh4
-rw-r--r--src/nix-store/nix-store.cc30
3 files changed, 29 insertions, 39 deletions
diff --git a/src/libstore/store-api.cc b/src/libstore/store-api.cc
index e4f1802409..0f250a3c7c 100644
--- a/src/libstore/store-api.cc
+++ b/src/libstore/store-api.cc
@@ -1,7 +1,6 @@
 #include "store-api.hh"
 #include "globals.hh"
 #include "util.hh"
-#include "archive.hh"
 
 #include <climits>
 
@@ -259,39 +258,6 @@ string StoreAPI::makeValidityRegistration(const PathSet & paths,
 }
 
 
-void StoreAPI::serve(Source & in, BufferedSink & out)
-{
-    string cmd = readString(in);
-    if (cmd == "query") {
-        for (cmd = readString(in); !cmd.empty(); cmd = readString(in)) {
-            PathSet paths = readStrings<PathSet>(in);
-            if (cmd == "have") {
-                writeStrings(queryValidPaths(paths), out);
-            } else if (cmd == "info") {
-                // !!! Maybe we want a queryPathInfos?
-                foreach (PathSet::iterator, i, paths) {
-                    if (!isValidPath(*i))
-                        continue;
-                    ValidPathInfo info = queryPathInfo(*i);
-                    writeString(info.path, out);
-                    writeString(info.deriver, out);
-                    writeStrings(info.references, out);
-                    // !!! Maybe we want compression?
-                    writeLongLong(info.narSize, out); // downloadSize
-                    writeLongLong(info.narSize, out);
-                }
-                writeString("", out);
-            } else
-                throw Error(format("Unknown serve query `%1%'") % cmd);
-            out.flush();
-        }
-    } else if (cmd == "substitute")
-        dumpPath(readString(in), out);
-    else
-        throw Error(format("Unknown serve command `%1%'") % cmd);
-}
-
-
 ValidPathInfo decodeValidPathInfo(std::istream & str, bool hashGiven)
 {
     ValidPathInfo info;
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index f32824a3bb..a82fe32216 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -248,10 +248,6 @@ public:
        `nix-store --register-validity'. */
     string makeValidityRegistration(const PathSet & paths,
         bool showDerivers, bool showHash);
-
-    /* Serve the store for ssh substituters by taking commands
-     * from in and printing results to out */
-    void serve(Source & in, BufferedSink & out);
 };
 
 
diff --git a/src/nix-store/nix-store.cc b/src/nix-store/nix-store.cc
index e3f27820ff..68ad902674 100644
--- a/src/nix-store/nix-store.cc
+++ b/src/nix-store/nix-store.cc
@@ -839,10 +839,38 @@ static void opServe(Strings opFlags, Strings opArgs)
 {
     if (!opArgs.empty() || !opFlags.empty())
         throw UsageError("no arguments or flags expected");
+
     FdSource in(STDIN_FILENO);
     FdSink out(STDOUT_FILENO);
 
-    store->serve(in, out);
+    string cmd = readString(in);
+    if (cmd == "query") {
+        for (cmd = readString(in); !cmd.empty(); cmd = readString(in)) {
+            PathSet paths = readStrings<PathSet>(in);
+            if (cmd == "have") {
+                writeStrings(store->queryValidPaths(paths), out);
+            } else if (cmd == "info") {
+                // !!! Maybe we want a queryPathInfos?
+                foreach (PathSet::iterator, i, paths) {
+                    if (!store->isValidPath(*i))
+                        continue;
+                    ValidPathInfo info = store->queryPathInfo(*i);
+                    writeString(info.path, out);
+                    writeString(info.deriver, out);
+                    writeStrings(info.references, out);
+                    // !!! Maybe we want compression?
+                    writeLongLong(info.narSize, out); // downloadSize
+                    writeLongLong(info.narSize, out);
+                }
+                writeString("", out);
+            } else
+                throw Error(format("Unknown serve query `%1%'") % cmd);
+            out.flush();
+        }
+    } else if (cmd == "substitute")
+        dumpPath(readString(in), out);
+    else
+        throw Error(format("Unknown serve command `%1%'") % cmd);
 }