summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/bazel_msg
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/execution_api/bazel_msg')
-rw-r--r--src/buildtool/execution_api/bazel_msg/TARGETS4
-rw-r--r--src/buildtool/execution_api/bazel_msg/bazel_blob.hpp16
-rw-r--r--src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp93
3 files changed, 5 insertions, 108 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/bazel_msg/bazel_blob_container.hpp b/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp
deleted file mode 100644
index 07c78550..00000000
--- a/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2022 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.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// 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
-
-#include <cstddef>
-#include <unordered_map>
-#include <utility> // std::pair via auto
-#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>;
-
- public:
- BlobContainer() noexcept = default;
- explicit BlobContainer(std::vector<BazelBlob> blobs) {
- blobs_.reserve(blobs.size());
- for (auto& blob : blobs) {
- this->Emplace(std::move(blob));
- }
- }
-
- /// \brief Emplace new BazelBlob to container.
- void Emplace(BazelBlob&& blob) {
- bazel_re::Digest digest = blob.digest;
- blobs_.emplace(std::move(digest), std::move(blob));
- }
-
- /// \brief Clear all BazelBlobs from container.
- void Clear() noexcept { return blobs_.clear(); }
-
- /// \brief Number of BazelBlobs in container.
- [[nodiscard]] auto Size() const noexcept -> std::size_t {
- return blobs_.size();
- }
-
- /// \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 {
- 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& {
- return p.second;
- };
- return TransformedRange{
- blobs_.cbegin(), blobs_.cend(), std::move(converter)};
- }
-
- /// \brief Obtain iterable list of Digests from container.
- [[nodiscard]] auto Digests() const noexcept {
- auto converter = [](auto const& p) -> bazel_re::Digest const& {
- return p.first;
- };
- return TransformedRange{
- blobs_.cbegin(), blobs_.cend(), std::move(converter)};
- }
-
- /// \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& {
- return blobs_.at(digest);
- };
- return TransformedRange{
- related.begin(), related.end(), std::move(converter)};
- };
-
- private:
- underlaying_map_t blobs_{};
-};
-
-#endif // INCLUDED_SRC_BUILDTOOL_EXECUTION_API_BAZEL_MSG_BAZEL_BLOB_CONTAINER_HPP