diff options
Diffstat (limited to 'src/buildtool/execution_api/common/bytestream_utils.hpp')
-rw-r--r-- | src/buildtool/execution_api/common/bytestream_utils.hpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/buildtool/execution_api/common/bytestream_utils.hpp b/src/buildtool/execution_api/common/bytestream_utils.hpp index 9b46073f..672ae017 100644 --- a/src/buildtool/execution_api/common/bytestream_utils.hpp +++ b/src/buildtool/execution_api/common/bytestream_utils.hpp @@ -27,6 +27,7 @@ namespace bazel_re = build::bazel::remote::execution::v2; class ByteStreamUtils final { static constexpr auto* kBlobs = "blobs"; + static constexpr auto* kUploads = "uploads"; public: // Chunk size for uploads (default size used by BuildBarn) @@ -61,6 +62,42 @@ class ByteStreamUtils final { ReadRequest() = default; }; + + /// \brief Create a write request for the bytestream service to be + /// transferred over the net. Handles serialization/deserialization on its + /// own. The pattern is: + /// "{instance_name}/{kUploads}/{uuid}/{kBlobs}/{digest.hash()}/{digest.size_bytes()}". + /// "instance_name_example/uploads/c4f03510-7d56-4490-8934-01bce1b1288e/blobs/62183d7a696acf7e69e218efc82c93135f8c85f895/4424712" + class WriteRequest final { + public: + explicit WriteRequest(std::string instance_name, + std::string uuid, + bazel_re::Digest const& digest) noexcept; + + [[nodiscard]] auto ToString() && noexcept -> std::string; + + [[nodiscard]] static auto FromString( + std::string const& request) noexcept -> std::optional<WriteRequest>; + + [[nodiscard]] auto GetInstanceName() const noexcept + -> std::string const& { + return instance_name_; + } + + [[nodiscard]] auto GetUUID() const noexcept -> std::string const& { + return uuid_; + } + + [[nodiscard]] auto GetDigest() const noexcept -> bazel_re::Digest; + + private: + std::string instance_name_; + std::string uuid_; + std::string hash_; + std::int64_t size_ = 0; + + WriteRequest() = default; + }; }; #endif // INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_BYTESTREAM_UTILS_HPP |