aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/path-info.hh
diff options
context:
space:
mode:
authoreldritch horrors <pennae@lix.systems>2024-03-04 04:59:31 +0100
committereldritch horrors <pennae@lix.systems>2024-03-04 04:59:31 +0100
commit7f590ea7096d1e1bbbe73697358fef962d0fb494 (patch)
tree379ef50da30c3ff0b49df6ac1c28d3cfac7e0f69 /src/libstore/path-info.hh
parent4d9dde15efbc05af471acb3efc5b04c087ceeef0 (diff)
Merge pull request #6223 from obsidiansystems/worker-proto-with-version
Give `nix daemon` and `nix-store --serve` protocols separate serializers with version info (cherry picked from commit 8b68bbb77745fda0d14939b6c23d31cc89da41ce) Change-Id: Ia3d3b9fbaf9f0ae62ab225020b7d14790e793655
Diffstat (limited to 'src/libstore/path-info.hh')
-rw-r--r--src/libstore/path-info.hh42
1 files changed, 21 insertions, 21 deletions
diff --git a/src/libstore/path-info.hh b/src/libstore/path-info.hh
index 221523622..a82e643ae 100644
--- a/src/libstore/path-info.hh
+++ b/src/libstore/path-info.hh
@@ -32,9 +32,8 @@ struct SubstitutablePathInfo
typedef std::map<StorePath, SubstitutablePathInfo> SubstitutablePathInfos;
-struct ValidPathInfo
+struct UnkeyedValidPathInfo
{
- StorePath path;
std::optional<StorePath> deriver;
/**
* \todo document this
@@ -72,13 +71,19 @@ struct ValidPathInfo
*/
std::optional<ContentAddress> ca;
- bool operator == (const ValidPathInfo & i) const
- {
- return
- path == i.path
- && narHash == i.narHash
- && references == i.references;
- }
+ UnkeyedValidPathInfo(const UnkeyedValidPathInfo & other) = default;
+
+ UnkeyedValidPathInfo(Hash narHash) : narHash(narHash) { };
+
+ DECLARE_CMP(UnkeyedValidPathInfo);
+
+ virtual ~UnkeyedValidPathInfo() { }
+};
+
+struct ValidPathInfo : UnkeyedValidPathInfo {
+ StorePath path;
+
+ DECLARE_CMP(ValidPathInfo);
/**
* Return a fingerprint of the store path to be used in binary
@@ -92,11 +97,11 @@ struct ValidPathInfo
void sign(const Store & store, const SecretKey & secretKey);
- /**
- * @return The `ContentAddressWithReferences` that determines the
- * store path for a content-addressed store object, `std::nullopt`
- * for an input-addressed store object.
- */
+ /**
+ * @return The `ContentAddressWithReferences` that determines the
+ * store path for a content-addressed store object, `std::nullopt`
+ * for an input-addressed store object.
+ */
std::optional<ContentAddressWithReferences> contentAddressWithReferences() const;
/**
@@ -122,18 +127,13 @@ struct ValidPathInfo
ValidPathInfo(const ValidPathInfo & other) = default;
- ValidPathInfo(StorePath && path, Hash narHash) : path(std::move(path)), narHash(narHash) { };
- ValidPathInfo(const StorePath & path, Hash narHash) : path(path), narHash(narHash) { };
+ ValidPathInfo(StorePath && path, UnkeyedValidPathInfo info) : UnkeyedValidPathInfo(info), path(std::move(path)) { };
+ ValidPathInfo(const StorePath & path, UnkeyedValidPathInfo info) : UnkeyedValidPathInfo(info), path(path) { };
ValidPathInfo(const Store & store,
std::string_view name, ContentAddressWithReferences && ca, Hash narHash);
virtual ~ValidPathInfo() { }
-
- static ValidPathInfo read(Source & source, const Store & store, unsigned int format);
- static ValidPathInfo read(Source & source, const Store & store, unsigned int format, StorePath && path);
-
- void write(Sink & sink, const Store & store, unsigned int format, bool includePath = true) const;
};
typedef std::map<StorePath, ValidPathInfo> ValidPathInfos;