diff --git a/src/libstore-tests/worker-protocol.cc b/src/libstore-tests/worker-protocol.cc index 80d314b1c..4baf8a325 100644 --- a/src/libstore-tests/worker-protocol.cc +++ b/src/libstore-tests/worker-protocol.cc @@ -685,7 +685,7 @@ TEST_F(WorkerProtoTest, handshake_features) toClient.create(); toServer.create(); - std::tuple> clientResult; + std::tuple clientResult; auto clientThread = std::thread([&]() { FdSink out { toServer.writeSide.get() }; @@ -703,7 +703,7 @@ TEST_F(WorkerProtoTest, handshake_features) EXPECT_EQ(clientResult, daemonResult); EXPECT_EQ(std::get<0>(clientResult), 123u); - EXPECT_EQ(std::get<1>(clientResult), std::set({"bar", "xyzzy"})); + EXPECT_EQ(std::get<1>(clientResult), WorkerProto::FeatureSet({"bar", "xyzzy"})); } /// Has to be a `BufferedSink` for handshake. diff --git a/src/libstore/include/nix/store/worker-protocol-connection.hh b/src/libstore/include/nix/store/worker-protocol-connection.hh index df2fe0ec2..11f112a71 100644 --- a/src/libstore/include/nix/store/worker-protocol-connection.hh +++ b/src/libstore/include/nix/store/worker-protocol-connection.hh @@ -26,7 +26,7 @@ struct WorkerProto::BasicConnection /** * The set of features that both sides support. */ - std::set features; + FeatureSet features; /** * Coercion to `WorkerProto::ReadConn`. This makes it easy to use the @@ -92,11 +92,8 @@ struct WorkerProto::BasicClientConnection : WorkerProto::BasicConnection * @param supportedFeatures The protocol features that we support. */ // FIXME: this should probably be a constructor. - static std::tuple> handshake( - BufferedSink & to, - Source & from, - WorkerProto::Version localVersion, - const std::set & supportedFeatures); + static std::tuple handshake( + BufferedSink & to, Source & from, WorkerProto::Version localVersion, const FeatureSet & supportedFeatures); /** * After calling handshake, must call this to exchange some basic @@ -155,11 +152,8 @@ struct WorkerProto::BasicServerConnection : WorkerProto::BasicConnection * @param supportedFeatures The protocol features that we support. */ // FIXME: this should probably be a constructor. - static std::tuple> handshake( - BufferedSink & to, - Source & from, - WorkerProto::Version localVersion, - const std::set & supportedFeatures); + static std::tuple handshake( + BufferedSink & to, Source & from, WorkerProto::Version localVersion, const FeatureSet & supportedFeatures); /** * After calling handshake, must call this to exchange some basic diff --git a/src/libstore/include/nix/store/worker-protocol.hh b/src/libstore/include/nix/store/worker-protocol.hh index 3060681b8..f96d41c71 100644 --- a/src/libstore/include/nix/store/worker-protocol.hh +++ b/src/libstore/include/nix/store/worker-protocol.hh @@ -135,8 +135,9 @@ struct WorkerProto } using Feature = std::string; + using FeatureSet = std::set; - static const std::set allFeatures; + static const FeatureSet allFeatures; }; enum struct WorkerProto::Op : uint64_t diff --git a/src/libstore/worker-protocol-connection.cc b/src/libstore/worker-protocol-connection.cc index d83be10e6..d07dc8163 100644 --- a/src/libstore/worker-protocol-connection.cc +++ b/src/libstore/worker-protocol-connection.cc @@ -5,7 +5,7 @@ namespace nix { -const std::set WorkerProto::allFeatures{}; +const WorkerProto::FeatureSet WorkerProto::allFeatures{}; WorkerProto::BasicClientConnection::~BasicClientConnection() { @@ -146,21 +146,20 @@ void WorkerProto::BasicClientConnection::processStderr( } } -static std::set -intersectFeatures(const std::set & a, const std::set & b) +static WorkerProto::FeatureSet intersectFeatures(const WorkerProto::FeatureSet & a, const WorkerProto::FeatureSet & b) { - std::set res; + WorkerProto::FeatureSet res; for (auto & x : a) if (b.contains(x)) res.insert(x); return res; } -std::tuple> WorkerProto::BasicClientConnection::handshake( +std::tuple WorkerProto::BasicClientConnection::handshake( BufferedSink & to, Source & from, WorkerProto::Version localVersion, - const std::set & supportedFeatures) + const WorkerProto::FeatureSet & supportedFeatures) { to << WORKER_MAGIC_1 << localVersion; to.flush(); @@ -178,21 +177,21 @@ std::tuple> WorkerProto::Ba auto protoVersion = std::min(daemonVersion, localVersion); /* Exchange features. */ - std::set daemonFeatures; + WorkerProto::FeatureSet daemonFeatures; if (GET_PROTOCOL_MINOR(protoVersion) >= 38) { to << supportedFeatures; to.flush(); - daemonFeatures = readStrings>(from); + daemonFeatures = readStrings(from); } return {protoVersion, intersectFeatures(daemonFeatures, supportedFeatures)}; } -std::tuple> WorkerProto::BasicServerConnection::handshake( +std::tuple WorkerProto::BasicServerConnection::handshake( BufferedSink & to, Source & from, WorkerProto::Version localVersion, - const std::set & supportedFeatures) + const WorkerProto::FeatureSet & supportedFeatures) { unsigned int magic = readInt(from); if (magic != WORKER_MAGIC_1) @@ -204,9 +203,9 @@ std::tuple> WorkerProto::Ba auto protoVersion = std::min(clientVersion, localVersion); /* Exchange features. */ - std::set clientFeatures; + WorkerProto::FeatureSet clientFeatures; if (GET_PROTOCOL_MINOR(protoVersion) >= 38) { - clientFeatures = readStrings>(from); + clientFeatures = readStrings(from); to << supportedFeatures; to.flush(); }