diff options
-rw-r--r-- | src/buildtool/execution_api/bazel_msg/TARGETS | 4 | ||||
-rw-r--r-- | src/buildtool/execution_api/bazel_msg/bazel_blob.hpp | 16 | ||||
-rw-r--r-- | src/buildtool/execution_api/common/TARGETS | 7 | ||||
-rw-r--r-- | src/buildtool/execution_api/common/content_blob_container.hpp (renamed from src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp) | 52 | ||||
-rw-r--r-- | src/buildtool/execution_api/common/execution_api.hpp | 2 | ||||
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_action.cpp | 2 | ||||
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_api.cpp | 1 | ||||
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp | 2 | ||||
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_network.hpp | 3 | ||||
-rw-r--r-- | src/buildtool/graph_traverser/graph_traverser.hpp | 2 | ||||
-rw-r--r-- | test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp | 1 |
11 files changed, 50 insertions, 42 deletions
diff --git a/src/buildtool/execution_api/bazel_msg/TARGETS b/src/buildtool/execution_api/bazel_msg/TARGETS index 1ef91526..6b094ece 100644 --- a/src/buildtool/execution_api/bazel_msg/TARGETS +++ b/src/buildtool/execution_api/bazel_msg/TARGETS @@ -1,12 +1,12 @@ { "bazel_msg": { "type": ["@", "rules", "CC", "library"] , "name": ["bazel_msg"] - , "hdrs": ["bazel_blob.hpp", "bazel_blob_container.hpp", "bazel_common.hpp"] + , "hdrs": ["bazel_blob.hpp", "bazel_common.hpp"] , "deps": [ ["src/buildtool/common", "common"] , ["src/buildtool/file_system", "file_system_manager"] , ["src/buildtool/common", "bazel_types"] - , ["src/utils/cpp", "transformed_range"] + , ["src/buildtool/execution_api/common", "content_blob_container"] ] , "stage": ["src", "buildtool", "execution_api", "bazel_msg"] , "private-deps": diff --git a/src/buildtool/execution_api/bazel_msg/bazel_blob.hpp b/src/buildtool/execution_api/bazel_msg/bazel_blob.hpp index 75f174b5..bac9d273 100644 --- a/src/buildtool/execution_api/bazel_msg/bazel_blob.hpp +++ b/src/buildtool/execution_api/bazel_msg/bazel_blob.hpp @@ -15,20 +15,10 @@ #ifndef INCLUDED_SRC_BUILDTOOL_EXECUTION_API_BAZEL_MSG_BAZEL_BLOB_HPP #define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_BAZEL_MSG_BAZEL_BLOB_HPP -#include <string> -#include <utility> // std::move - #include "src/buildtool/common/bazel_types.hpp" +#include "src/buildtool/execution_api/common/content_blob_container.hpp" -struct BazelBlob { - BazelBlob(bazel_re::Digest mydigest, std::string mydata, bool is_exec) - : digest{std::move(mydigest)}, - data{std::move(mydata)}, - is_exec{is_exec} {} - - bazel_re::Digest digest{}; - std::string data{}; - bool is_exec{}; // optional: hint to put the blob in executable CAS -}; +using BazelBlob = ContentBlob<bazel_re::Digest>; +using BlobContainer = ContentBlobContainer<bazel_re::Digest>; #endif // INCLUDED_SRC_BUILDTOOL_EXECUTION_API_BAZEL_MSG_BAZEL_BLOB_HPP diff --git a/src/buildtool/execution_api/common/TARGETS b/src/buildtool/execution_api/common/TARGETS index 825f612f..4cb4e4b2 100644 --- a/src/buildtool/execution_api/common/TARGETS +++ b/src/buildtool/execution_api/common/TARGETS @@ -71,4 +71,11 @@ , ["src/buildtool/logging", "log_level"] ] } +, "content_blob_container": + { "type": ["@", "rules", "CC", "library"] + , "name": ["content_blob_container"] + , "hdrs": ["content_blob_container.hpp"] + , "stage": ["src", "buildtool", "execution_api", "common"] + , "deps": [["src/utils/cpp", "transformed_range"]] + } } diff --git a/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp b/src/buildtool/execution_api/common/content_blob_container.hpp index 07c78550..fcd10f09 100644 --- a/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp +++ b/src/buildtool/execution_api/common/content_blob_container.hpp @@ -1,4 +1,4 @@ -// Copyright 2022 Huawei Cloud Computing Technology Co., Ltd. +// Copyright 2024 Huawei Cloud Computing Technology Co., Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,25 +12,37 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef INCLUDED_SRC_BUILDTOOL_EXECUTION_API_BAZEL_MSG_BAZEL_BLOB_CONTAINER_HPP -#define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_BAZEL_MSG_BAZEL_BLOB_CONTAINER_HPP +#ifndef INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_CONTENT_BLOB_CONTAINER_HPP +#define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_CONTENT_BLOB_CONTAINER_HPP #include <cstddef> +#include <string> #include <unordered_map> -#include <utility> // std::pair via auto +#include <utility> //std::move #include <vector> -#include "src/buildtool/execution_api/bazel_msg/bazel_blob.hpp" #include "src/utils/cpp/transformed_range.hpp" -/// \brief Container for Blobs -/// Can be used to iterate over digests or subset of blobs with certain digest. -class BlobContainer { - using underlaying_map_t = std::unordered_map<bazel_re::Digest, BazelBlob>; +template <typename TDigest> +struct ContentBlob final { + ContentBlob(TDigest mydigest, std::string mydata, bool is_exec) noexcept + : digest{std::move(mydigest)}, + data{std::move(mydata)}, + is_exec{is_exec} {} + TDigest digest{}; + std::string data{}; + bool is_exec{}; +}; + +template <typename TDigest> +class ContentBlobContainer final { public: - BlobContainer() noexcept = default; - explicit BlobContainer(std::vector<BazelBlob> blobs) { + using DigestType = TDigest; + using BlobType = ContentBlob<TDigest>; + + ContentBlobContainer() noexcept = default; + explicit ContentBlobContainer(std::vector<BlobType> blobs) { blobs_.reserve(blobs.size()); for (auto& blob : blobs) { this->Emplace(std::move(blob)); @@ -38,8 +50,8 @@ class BlobContainer { } /// \brief Emplace new BazelBlob to container. - void Emplace(BazelBlob&& blob) { - bazel_re::Digest digest = blob.digest; + void Emplace(BlobType&& blob) { + DigestType digest = blob.digest; blobs_.emplace(std::move(digest), std::move(blob)); } @@ -53,13 +65,13 @@ class BlobContainer { /// \brief Is equivalent BazelBlob (with same Digest) in container. /// \param[in] blob BazelBlob to search equivalent BazelBlob for - [[nodiscard]] auto Contains(BazelBlob const& blob) const noexcept -> bool { + [[nodiscard]] auto Contains(BlobType const& blob) const noexcept -> bool { return blobs_.contains(blob.digest); } /// \brief Obtain iterable list of Blobs from container. [[nodiscard]] auto Blobs() const noexcept { - auto converter = [](auto const& p) -> BazelBlob const& { + auto converter = [](auto const& p) -> BlobType const& { return p.second; }; return TransformedRange{ @@ -68,7 +80,7 @@ class BlobContainer { /// \brief Obtain iterable list of Digests from container. [[nodiscard]] auto Digests() const noexcept { - auto converter = [](auto const& p) -> bazel_re::Digest const& { + auto converter = [](auto const& p) -> DigestType const& { return p.first; }; return TransformedRange{ @@ -78,8 +90,8 @@ class BlobContainer { /// \brief Obtain iterable list of BazelBlobs related to Digests. /// \param[in] related Related Digests [[nodiscard]] auto RelatedBlobs( - std::vector<bazel_re::Digest> const& related) const noexcept { - auto converter = [this](auto const& digest) -> BazelBlob const& { + std::vector<DigestType> const& related) const noexcept { + auto converter = [this](auto const& digest) -> BlobType const& { return blobs_.at(digest); }; return TransformedRange{ @@ -87,7 +99,7 @@ class BlobContainer { }; private: - underlaying_map_t blobs_{}; + std::unordered_map<DigestType, BlobType> blobs_{}; }; -#endif // INCLUDED_SRC_BUILDTOOL_EXECUTION_API_BAZEL_MSG_BAZEL_BLOB_CONTAINER_HPP +#endif // INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_CONTENT_BLOB_CONTAINER_HPP diff --git a/src/buildtool/execution_api/common/execution_api.hpp b/src/buildtool/execution_api/common/execution_api.hpp index 7b0ad32a..4a40c64e 100644 --- a/src/buildtool/execution_api/common/execution_api.hpp +++ b/src/buildtool/execution_api/common/execution_api.hpp @@ -26,7 +26,7 @@ #include "gsl/gsl" #include "src/buildtool/common/artifact.hpp" // Artifact::ObjectInfo #include "src/buildtool/common/artifact_digest.hpp" -#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp" +#include "src/buildtool/execution_api/bazel_msg/bazel_blob.hpp" #include "src/buildtool/execution_api/common/execution_action.hpp" #include "src/buildtool/execution_engine/dag/dag.hpp" #include "src/buildtool/file_system/object_type.hpp" diff --git a/src/buildtool/execution_api/remote/bazel/bazel_action.cpp b/src/buildtool/execution_api/remote/bazel/bazel_action.cpp index 13342da0..7247b2c5 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_action.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_action.cpp @@ -16,7 +16,7 @@ #include <utility> // std::move -#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp" +#include "src/buildtool/execution_api/bazel_msg/bazel_blob.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp" #include "src/buildtool/execution_api/remote/bazel/bazel_response.hpp" #include "src/buildtool/execution_api/utils/outputscheck.hpp" diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp index 0f1fdd04..042478c4 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp @@ -27,7 +27,6 @@ #include "src/buildtool/common/bazel_types.hpp" #include "src/buildtool/compatibility/compatibility.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_blob.hpp" -#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_common.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp" #include "src/buildtool/execution_api/common/common_api.hpp" diff --git a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp index b2b80a48..8239107b 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp @@ -27,7 +27,7 @@ #include "gsl/gsl" #include "src/buildtool/common/bazel_types.hpp" #include "src/buildtool/common/remote/port.hpp" -#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp" +#include "src/buildtool/execution_api/bazel_msg/bazel_blob.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_common.hpp" #include "src/buildtool/execution_api/remote/bazel/bytestream_client.hpp" #include "src/buildtool/execution_api/remote/config.hpp" diff --git a/src/buildtool/execution_api/remote/bazel/bazel_network.hpp b/src/buildtool/execution_api/remote/bazel/bazel_network.hpp index 251662fa..2eb7a243 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_network.hpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_network.hpp @@ -26,7 +26,8 @@ #include "src/buildtool/common/bazel_types.hpp" #include "src/buildtool/common/remote/port.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_blob.hpp" -#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp" +#include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp" +#include "src/buildtool/execution_api/common/execution_api.hpp" #include "src/buildtool/execution_api/remote/bazel/bazel_ac_client.hpp" #include "src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp" #include "src/buildtool/execution_api/remote/bazel/bazel_execution_client.hpp" diff --git a/src/buildtool/graph_traverser/graph_traverser.hpp b/src/buildtool/graph_traverser/graph_traverser.hpp index 51b59361..4b4a6ff5 100644 --- a/src/buildtool/graph_traverser/graph_traverser.hpp +++ b/src/buildtool/graph_traverser/graph_traverser.hpp @@ -36,7 +36,7 @@ #include "src/buildtool/common/repository_config.hpp" #include "src/buildtool/common/statistics.hpp" #include "src/buildtool/common/tree.hpp" -#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp" +#include "src/buildtool/execution_api/bazel_msg/bazel_blob.hpp" #include "src/buildtool/execution_api/common/create_execution_api.hpp" #include "src/buildtool/execution_api/local/local_api.hpp" #include "src/buildtool/execution_api/remote/bazel/bazel_api.hpp" diff --git a/test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp b/test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp index 29d2ed74..6715a565 100644 --- a/test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp +++ b/test/buildtool/execution_api/bazel/bazel_msg_factory.test.cpp @@ -18,7 +18,6 @@ #include "catch2/catch_test_macros.hpp" #include "src/buildtool/common/artifact_factory.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_blob.hpp" -#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_msg_factory.hpp" #include "src/buildtool/file_system/file_system_manager.hpp" #include "src/buildtool/file_system/object_type.hpp" |