aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2023-04-13 13:38:12 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-04-13 13:39:44 -0400
commitee97f107e8749d61ae5e310a2d457637ccc109ce (patch)
tree789bafa078e101394361f6e8020f3cf93017fa77
parentef0b48377d0fc79d70455c402ed4df4b18cb93dd (diff)
Push `getFSAccessor` `unsupported(...)` down `Store` class hierarchy
More progress on issue #5729. Instead of having it by the default method in `Store` itself, have it be the implementation in `DummyStore` and `LegacySSHStore`. Then just the implementations which fail to provide the method pay the "penalty" of dealing with the icky `unimplemented` function for non-compliance. Combined with my other recent PRs, this finally makes `Store` have no `unsupported` calls!
-rw-r--r--src/libstore/dummy-store.cc3
-rw-r--r--src/libstore/legacy-ssh-store.cc3
-rw-r--r--src/libstore/store-api.hh3
3 files changed, 7 insertions, 2 deletions
diff --git a/src/libstore/dummy-store.cc b/src/libstore/dummy-store.cc
index ae2777d0c..74d6ed3b5 100644
--- a/src/libstore/dummy-store.cc
+++ b/src/libstore/dummy-store.cc
@@ -71,6 +71,9 @@ struct DummyStore : public virtual DummyStoreConfig, public virtual Store
void queryRealisationUncached(const DrvOutput &,
Callback<std::shared_ptr<const Realisation>> callback) noexcept override
{ callback(nullptr); }
+
+ virtual ref<FSAccessor> getFSAccessor() override
+ { unsupported("getFSAccessor"); }
};
static RegisterStoreImplementation<DummyStore, DummyStoreConfig> regDummyStore;
diff --git a/src/libstore/legacy-ssh-store.cc b/src/libstore/legacy-ssh-store.cc
index eb471d8fc..d2ddbbe5f 100644
--- a/src/libstore/legacy-ssh-store.cc
+++ b/src/libstore/legacy-ssh-store.cc
@@ -342,6 +342,9 @@ public:
void ensurePath(const StorePath & path) override
{ unsupported("ensurePath"); }
+ virtual ref<FSAccessor> getFSAccessor() override
+ { unsupported("getFSAccessor"); }
+
void computeFSClosure(const StorePathSet & paths,
StorePathSet & out, bool flipDirection = false,
bool includeOutputs = false, bool includeDerivers = false) override
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index 3cb48bff5..5bee272bf 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -678,8 +678,7 @@ public:
/**
* @return An object to access files in the Nix store.
*/
- virtual ref<FSAccessor> getFSAccessor()
- { unsupported("getFSAccessor"); }
+ virtual ref<FSAccessor> getFSAccessor() = 0;
/**
* Repair the contents of the given path by redownloading it using