summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2025-02-27 12:43:07 +0100
committerMaksim Denisov <denisov.maksim@huawei.com>2025-02-28 13:44:06 +0100
commit2b4e781e2e14653201b81b12e1b332a7462691b7 (patch)
treebdad7df8f2ef872ff28e739081e323e135437ddb
parent87832d98f34cec0513e5abc14e912eec3100e975 (diff)
downloadjustbuild-2b4e781e2e14653201b81b12e1b332a7462691b7.tar.gz
GraphTraverser: Pass blobs to UploadBlobs by rvalue
...in order to avoid copying while uploading.
-rw-r--r--src/buildtool/graph_traverser/graph_traverser.hpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/buildtool/graph_traverser/graph_traverser.hpp b/src/buildtool/graph_traverser/graph_traverser.hpp
index 9dc32b61..b85902be 100644
--- a/src/buildtool/graph_traverser/graph_traverser.hpp
+++ b/src/buildtool/graph_traverser/graph_traverser.hpp
@@ -313,22 +313,19 @@ class GraphTraverser {
/// of the uploads fails, execution is terminated
/// \param[in] blobs blobs to be uploaded
[[nodiscard]] auto UploadBlobs(
- std::vector<std::string> const& blobs) const noexcept -> bool {
+ std::vector<std::string>&& blobs) const noexcept -> bool {
std::unordered_set<ArtifactBlob> container;
HashFunction const hash_function{context_.apis->remote->GetHashType()};
- for (auto const& content : blobs) {
+ for (auto& content : blobs) {
auto blob = ArtifactBlob::FromMemory(
- hash_function, ObjectType::File, content);
+ hash_function, ObjectType::File, std::move(content));
if (not blob.has_value()) {
- logger_->Emit(LogLevel::Trace,
- "Failed to create ArtifactBlob for:\n{}",
- nlohmann::json(content).dump());
+ logger_->Emit(LogLevel::Trace, "Failed to create ArtifactBlob");
return false;
}
Logger::Log(logger_, LogLevel::Trace, [&]() {
return fmt::format(
- "Will upload blob {}, its digest has id {} and size {}.",
- nlohmann::json(content).dump(),
+ "Will upload blob, its digest has id {} and size {}.",
blob->GetDigest().hash(),
blob->GetDigest().size());
});
@@ -507,7 +504,7 @@ class GraphTraverser {
std::tuple<std::vector<std::filesystem::path>,
std::vector<DependencyGraph::ArtifactNode const*>,
std::vector<DependencyGraph::ArtifactNode const*>>> {
- if (not UploadBlobs(blobs)) {
+ if (not UploadBlobs(std::move(blobs))) {
return std::nullopt;
}