diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2023-05-26 11:07:25 -0400 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2023-06-19 12:08:23 -0400 |
commit | 95eae0c002da5ef35e583b46a67818ebb95d3a1e (patch) | |
tree | 5ffdafd07c800bf91f6e3eca6f922bc1549b2cc8 /src/libstore/worker-protocol.cc | |
parent | 469d06f9bc9b2543f48d8e633e47f9344fba35ab (diff) |
Put worker protocol items inside a `WorkerProto` struct
See API docs on that struct for why. The pasing as as template argument
doesn't yet happen in that commit, but will instead happen in later
commit.
Also make `WorkerOp` (now `Op`) and enum struct. This led us to catch
that two operations were not handled!
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
Diffstat (limited to 'src/libstore/worker-protocol.cc')
-rw-r--r-- | src/libstore/worker-protocol.cc | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/src/libstore/worker-protocol.cc b/src/libstore/worker-protocol.cc index 49708b642..0bf9e4d68 100644 --- a/src/libstore/worker-protocol.cc +++ b/src/libstore/worker-protocol.cc @@ -12,29 +12,29 @@ namespace nix { -std::string WorkerProto<std::string>::read(const Store & store, Source & from) +std::string WorkerProto::Serialise<std::string>::read(const Store & store, Source & from) { return readString(from); } -void WorkerProto<std::string>::write(const Store & store, Sink & out, const std::string & str) +void WorkerProto::Serialise<std::string>::write(const Store & store, Sink & out, const std::string & str) { out << str; } -StorePath WorkerProto<StorePath>::read(const Store & store, Source & from) +StorePath WorkerProto::Serialise<StorePath>::read(const Store & store, Source & from) { return store.parseStorePath(readString(from)); } -void WorkerProto<StorePath>::write(const Store & store, Sink & out, const StorePath & storePath) +void WorkerProto::Serialise<StorePath>::write(const Store & store, Sink & out, const StorePath & storePath) { out << store.printStorePath(storePath); } -std::optional<TrustedFlag> WorkerProto<std::optional<TrustedFlag>>::read(const Store & store, Source & from) +std::optional<TrustedFlag> WorkerProto::Serialise<std::optional<TrustedFlag>>::read(const Store & store, Source & from) { auto temp = readNum<uint8_t>(from); switch (temp) { @@ -49,7 +49,7 @@ std::optional<TrustedFlag> WorkerProto<std::optional<TrustedFlag>>::read(const S } } -void WorkerProto<std::optional<TrustedFlag>>::write(const Store & store, Sink & out, const std::optional<TrustedFlag> & optTrusted) +void WorkerProto::Serialise<std::optional<TrustedFlag>>::write(const Store & store, Sink & out, const std::optional<TrustedFlag> & optTrusted) { if (!optTrusted) out << (uint8_t)0; @@ -68,30 +68,30 @@ void WorkerProto<std::optional<TrustedFlag>>::write(const Store & store, Sink & } -ContentAddress WorkerProto<ContentAddress>::read(const Store & store, Source & from) +ContentAddress WorkerProto::Serialise<ContentAddress>::read(const Store & store, Source & from) { return ContentAddress::parse(readString(from)); } -void WorkerProto<ContentAddress>::write(const Store & store, Sink & out, const ContentAddress & ca) +void WorkerProto::Serialise<ContentAddress>::write(const Store & store, Sink & out, const ContentAddress & ca) { out << renderContentAddress(ca); } -DerivedPath WorkerProto<DerivedPath>::read(const Store & store, Source & from) +DerivedPath WorkerProto::Serialise<DerivedPath>::read(const Store & store, Source & from) { auto s = readString(from); return DerivedPath::parseLegacy(store, s); } -void WorkerProto<DerivedPath>::write(const Store & store, Sink & out, const DerivedPath & req) +void WorkerProto::Serialise<DerivedPath>::write(const Store & store, Sink & out, const DerivedPath & req) { out << req.to_string_legacy(store); } -Realisation WorkerProto<Realisation>::read(const Store & store, Source & from) +Realisation WorkerProto::Serialise<Realisation>::read(const Store & store, Source & from) { std::string rawInput = readString(from); return Realisation::fromJSON( @@ -100,41 +100,41 @@ Realisation WorkerProto<Realisation>::read(const Store & store, Source & from) ); } -void WorkerProto<Realisation>::write(const Store & store, Sink & out, const Realisation & realisation) +void WorkerProto::Serialise<Realisation>::write(const Store & store, Sink & out, const Realisation & realisation) { out << realisation.toJSON().dump(); } -DrvOutput WorkerProto<DrvOutput>::read(const Store & store, Source & from) +DrvOutput WorkerProto::Serialise<DrvOutput>::read(const Store & store, Source & from) { return DrvOutput::parse(readString(from)); } -void WorkerProto<DrvOutput>::write(const Store & store, Sink & out, const DrvOutput & drvOutput) +void WorkerProto::Serialise<DrvOutput>::write(const Store & store, Sink & out, const DrvOutput & drvOutput) { out << drvOutput.to_string(); } -KeyedBuildResult WorkerProto<KeyedBuildResult>::read(const Store & store, Source & from) +KeyedBuildResult WorkerProto::Serialise<KeyedBuildResult>::read(const Store & store, Source & from) { - auto path = WorkerProto<DerivedPath>::read(store, from); - auto br = WorkerProto<BuildResult>::read(store, from); + auto path = WorkerProto::Serialise<DerivedPath>::read(store, from); + auto br = WorkerProto::Serialise<BuildResult>::read(store, from); return KeyedBuildResult { std::move(br), /* .path = */ std::move(path), }; } -void WorkerProto<KeyedBuildResult>::write(const Store & store, Sink & to, const KeyedBuildResult & res) +void WorkerProto::Serialise<KeyedBuildResult>::write(const Store & store, Sink & to, const KeyedBuildResult & res) { - workerProtoWrite(store, to, res.path); - workerProtoWrite(store, to, static_cast<const BuildResult &>(res)); + WorkerProto::write(store, to, res.path); + WorkerProto::write(store, to, static_cast<const BuildResult &>(res)); } -BuildResult WorkerProto<BuildResult>::read(const Store & store, Source & from) +BuildResult WorkerProto::Serialise<BuildResult>::read(const Store & store, Source & from) { BuildResult res; res.status = (BuildResult::Status) readInt(from); @@ -144,7 +144,7 @@ BuildResult WorkerProto<BuildResult>::read(const Store & store, Source & from) >> res.isNonDeterministic >> res.startTime >> res.stopTime; - auto builtOutputs = WorkerProto<DrvOutputs>::read(store, from); + auto builtOutputs = WorkerProto::Serialise<DrvOutputs>::read(store, from); for (auto && [output, realisation] : builtOutputs) res.builtOutputs.insert_or_assign( std::move(output.outputName), @@ -152,7 +152,7 @@ BuildResult WorkerProto<BuildResult>::read(const Store & store, Source & from) return res; } -void WorkerProto<BuildResult>::write(const Store & store, Sink & to, const BuildResult & res) +void WorkerProto::Serialise<BuildResult>::write(const Store & store, Sink & to, const BuildResult & res) { to << res.status @@ -164,28 +164,28 @@ void WorkerProto<BuildResult>::write(const Store & store, Sink & to, const Build DrvOutputs builtOutputs; for (auto & [output, realisation] : res.builtOutputs) builtOutputs.insert_or_assign(realisation.id, realisation); - workerProtoWrite(store, to, builtOutputs); + WorkerProto::write(store, to, builtOutputs); } -std::optional<StorePath> WorkerProto<std::optional<StorePath>>::read(const Store & store, Source & from) +std::optional<StorePath> WorkerProto::Serialise<std::optional<StorePath>>::read(const Store & store, Source & from) { auto s = readString(from); return s == "" ? std::optional<StorePath> {} : store.parseStorePath(s); } -void WorkerProto<std::optional<StorePath>>::write(const Store & store, Sink & out, const std::optional<StorePath> & storePathOpt) +void WorkerProto::Serialise<std::optional<StorePath>>::write(const Store & store, Sink & out, const std::optional<StorePath> & storePathOpt) { out << (storePathOpt ? store.printStorePath(*storePathOpt) : ""); } -std::optional<ContentAddress> WorkerProto<std::optional<ContentAddress>>::read(const Store & store, Source & from) +std::optional<ContentAddress> WorkerProto::Serialise<std::optional<ContentAddress>>::read(const Store & store, Source & from) { return ContentAddress::parseOpt(readString(from)); } -void WorkerProto<std::optional<ContentAddress>>::write(const Store & store, Sink & out, const std::optional<ContentAddress> & caOpt) +void WorkerProto::Serialise<std::optional<ContentAddress>>::write(const Store & store, Sink & out, const std::optional<ContentAddress> & caOpt) { out << (caOpt ? renderContentAddress(*caOpt) : ""); } |