Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
uds-remote-store.hh
Go to the documentation of this file.
1#pragma once
3
7
8namespace nix {
9
10struct UDSRemoteStoreConfig : virtual LocalFSStoreConfig, virtual RemoteStoreConfig
11{
12 UDSRemoteStoreConfig(const Params & params)
13 : StoreConfig(params)
14 , LocalFSStoreConfig(params)
15 , RemoteStoreConfig(params)
16 {
17 }
18
19 const std::string name() override { return "Local Daemon Store"; }
20
21 std::string doc() override;
22};
23
24class UDSRemoteStore : public virtual IndirectRootStore
25 , public virtual RemoteStore
26{
28
29public:
30
31 UDSRemoteStore(UDSRemoteStoreConfig config);
32 UDSRemoteStore(const std::string scheme, std::string path, UDSRemoteStoreConfig config);
33
34 UDSRemoteStoreConfig & config() override { return config_; }
35 const UDSRemoteStoreConfig & config() const override { return config_; }
36
37 std::string getUri() override;
38
39 static std::set<std::string> uriSchemes()
40 { return {"unix"}; }
41
44
45 kj::Promise<Result<box_ptr<Source>>> narFromPath(const StorePath & path) override
46 { return LocalFSStore::narFromPath(path); }
47
56 kj::Promise<Result<void>> addIndirectRoot(const Path & path) override;
57
58private:
59
60 struct Connection : RemoteStore::Connection
61 {
62 AutoCloseFD fd;
63 void closeWrite() override;
64 };
65
66 ref<RemoteStore::Connection> openConnection() override;
67 std::optional<std::string> path;
68};
69
70void registerUDSRemoteStore();
71
72}
Definition file-descriptor.hh:51
kj::Promise< Result< box_ptr< Source > > > narFromPath(const StorePath &path) override
Definition local-fs-store.cc:87
ref< FSAccessor > getFSAccessor() override
Definition local-fs-store.cc:81
Definition path.hh:21
kj::Promise< Result< box_ptr< Source > > > narFromPath(const StorePath &path) override
Definition uds-remote-store.hh:45
kj::Promise< Result< void > > addIndirectRoot(const Path &path) override
Definition uds-remote-store.cc:78
ref< FSAccessor > getFSAccessor() override
Definition uds-remote-store.hh:42
Definition ref.hh:19
Definition indirect-root-store.hh:16
Definition local-fs-store.hh:11
Definition remote-store.hh:26
Definition remote-store-connection.hh:18
Definition uds-remote-store.hh:11
std::string doc() override
Definition uds-remote-store.cc:19
const std::string name() override
Definition uds-remote-store.hh:19
std::string Path
Definition types.hh:28