aboutsummaryrefslogtreecommitdiff
path: root/src/libstore
diff options
context:
space:
mode:
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.hh4
-rw-r--r--src/libstore/store-api.hh6
6 files changed, 30 insertions, 1 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 197b9d789..216f3417c 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -1338,6 +1338,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 ef8b0e53b..def140cfb 100644
--- a/src/libstore/remote-store.cc
+++ b/src/libstore/remote-store.cc
@@ -693,6 +693,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 7f9d7d1f5..4f554b598 100644
--- a/src/libstore/remote-store.hh
+++ b/src/libstore/remote-store.hh
@@ -98,6 +98,8 @@ public:
void connect() override;
+ unsigned int getProtocol() override;
+
void flushBadConnections();
protected:
@@ -127,7 +129,7 @@ protected:
ConnectionHandle getConnection();
- friend class ConnectionHandle;
+ friend struct ConnectionHandle;
private:
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index 099818ed6..106b2be5e 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -599,6 +599,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. */