summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/common/execution_api.hpp
diff options
context:
space:
mode:
authorSascha Roloff <sascha.roloff@huawei.com>2024-02-23 09:32:54 +0100
committerSascha Roloff <sascha.roloff@huawei.com>2024-02-26 17:16:21 +0100
commitd83c997ad5a866f4fbb38d4a81e7edf70a491db2 (patch)
tree7331b4d58d2c56adecb6e9879862cf354129d6af /src/buildtool/execution_api/common/execution_api.hpp
parent4ae3f068372041f949538fb273113a4a1c665a0f (diff)
downloadjustbuild-d83c997ad5a866f4fbb38d4a81e7edf70a491db2.tar.gz
Refactor split and splice implementations.
Currently, the implementations of the split and splice operation are both hidden behind the Bazel API implementation. This was sufficient to implement splitting at the server and splicing at the client. In order to support the other direction of splitting at the client and splicing at the server while reusing their implementations, the code needs to be refactored. First, the functionality of split and splice are explicitly exposed at the general execution API interface and implemented in the sub APIs. Second, the implementations of split and splice are factored into a separate utils class.
Diffstat (limited to 'src/buildtool/execution_api/common/execution_api.hpp')
-rw-r--r--src/buildtool/execution_api/common/execution_api.hpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/buildtool/execution_api/common/execution_api.hpp b/src/buildtool/execution_api/common/execution_api.hpp
index 43e16783..993f6d17 100644
--- a/src/buildtool/execution_api/common/execution_api.hpp
+++ b/src/buildtool/execution_api/common/execution_api.hpp
@@ -135,6 +135,26 @@ class IExecutionApi {
[[nodiscard]] virtual auto IsAvailable(
std::vector<ArtifactDigest> const& digests) const noexcept
-> std::vector<ArtifactDigest> = 0;
+
+ [[nodiscard]] virtual auto SplitBlob(ArtifactDigest const& /*blob_digest*/)
+ const noexcept -> std::optional<std::vector<ArtifactDigest>> {
+ return std::nullopt;
+ }
+
+ [[nodiscard]] virtual auto BlobSplitSupport() const noexcept -> bool {
+ return false;
+ }
+
+ [[nodiscard]] virtual auto SpliceBlob(
+ ArtifactDigest const& /*blob_digest*/,
+ std::vector<ArtifactDigest> const& /*chunk_digests*/) const noexcept
+ -> std::optional<ArtifactDigest> {
+ return std::nullopt;
+ }
+
+ [[nodiscard]] virtual auto BlobSpliceSupport() const noexcept -> bool {
+ return false;
+ }
};
#endif // INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_EXECUTION_APIHPP