aboutsummaryrefslogtreecommitdiff
path: root/src/libstore
diff options
context:
space:
mode:
authorDaiderd Jordan <daiderd@gmail.com>2018-08-30 23:28:47 +0200
committerDaiderd Jordan <daiderd@gmail.com>2018-09-02 12:54:29 +0200
commit070823baa4c3c397c8a5eb0378944187e7f4903c (patch)
tree5c0260ee081c74d4fb1965063e8445f6a9156640 /src/libstore
parentc9a08540c3d64d1285928d1ce3d3d416a2547dd9 (diff)
Store: expose the protocol version used by a store
Diffstat (limited to 'src/libstore')
-rw-r--r--src/libstore/legacy-ssh-store.cc6
-rw-r--r--src/libstore/local-store.cc6
-rw-r--r--src/libstore/local-store.hh2
-rw-r--r--src/libstore/remote-store.cc7
-rw-r--r--src/libstore/remote-store.hh2
-rw-r--r--src/libstore/store-api.hh6
6 files changed, 29 insertions, 0 deletions
diff --git a/src/libstore/legacy-ssh-store.cc b/src/libstore/legacy-ssh-store.cc
index 88d2574e8..26e185198 100644
--- a/src/libstore/legacy-ssh-store.cc
+++ b/src/libstore/legacy-ssh-store.cc
@@ -303,6 +303,12 @@ struct LegacySSHStore : public Store
{
auto conn(connections->get());
}
+
+ unsigned int getProtocol() override
+ {
+ auto conn(connections->get());
+ return conn->remoteVersion;
+ }
};
static RegisterStoreImplementation regStore([](
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index c91dbf241..c8117c0c6 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -1332,6 +1332,12 @@ void LocalStore::verifyPath(const Path & path, const PathSet & store,
}
+unsigned int LocalStore::getProtocol()
+{
+ return PROTOCOL_VERSION;
+}
+
+
#if defined(FS_IOC_SETFLAGS) && defined(FS_IOC_GETFLAGS) && defined(FS_IMMUTABLE_FL)
static void makeMutable(const Path & path)
diff --git a/src/libstore/local-store.hh b/src/libstore/local-store.hh
index 746bdbeed..fce963433 100644
--- a/src/libstore/local-store.hh
+++ b/src/libstore/local-store.hh
@@ -209,6 +209,8 @@ public:
void registerValidPaths(const ValidPathInfos & infos);
+ unsigned int getProtocol() override;
+
void vacuumDB();
/* Repair the contents of the given path by redownloading it using
diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc
index ea86ef052..eff5d2524 100644
--- a/src/libstore/remote-store.cc
+++ b/src/libstore/remote-store.cc
@@ -646,6 +646,13 @@ void RemoteStore::connect()
}
+unsigned int RemoteStore::getProtocol()
+{
+ auto conn(connections->get());
+ return conn->daemonVersion;
+}
+
+
void RemoteStore::flushBadConnections()
{
connections->flushBad();
diff --git a/src/libstore/remote-store.hh b/src/libstore/remote-store.hh
index b488e34ce..16daee8b6 100644
--- a/src/libstore/remote-store.hh
+++ b/src/libstore/remote-store.hh
@@ -97,6 +97,8 @@ public:
void connect() override;
+ unsigned int getProtocol() override;
+
void flushBadConnections();
protected:
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index 7c5b495a4..c2f964e11 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -598,6 +598,12 @@ public:
a notion of connection. Otherwise this is a no-op. */
virtual void connect() { };
+ /* Get the protocol version of this store or it's connection. */
+ virtual unsigned int getProtocol()
+ {
+ return 0;
+ };
+
/* Get the priority of the store, used to order substituters. In
particular, binary caches can specify a priority field in their
"nix-cache-info" file. Lower value means higher priority. */