Store: expose the protocol version used by a store

This commit is contained in:
Daiderd Jordan 2018-08-30 23:28:47 +02:00
parent c9a08540c3
commit 070823baa4
No known key found for this signature in database
GPG key ID: D02435D05B810C96
6 changed files with 29 additions and 0 deletions

View file

@ -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([](

View file

@ -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)

View file

@ -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

View file

@ -646,6 +646,13 @@ void RemoteStore::connect()
}
unsigned int RemoteStore::getProtocol()
{
auto conn(connections->get());
return conn->daemonVersion;
}
void RemoteStore::flushBadConnections()
{
connections->flushBad();

View file

@ -97,6 +97,8 @@ public:
void connect() override;
unsigned int getProtocol() override;
void flushBadConnections();
protected:

View file

@ -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. */