diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2024-05-27 16:16:26 +0200 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2024-05-28 16:19:19 +0200 |
commit | c0b46b2f4e47fc017beeae34ff555418d198e1d4 (patch) | |
tree | 6a4319a1b974fd6113fab80dd1047c1a8cb7be18 /src/buildtool/execution_api/common/content_blob_container.hpp | |
parent | fd8ad0f561dd253bf7399ce9a4594242e918ca25 (diff) | |
download | justbuild-c0b46b2f4e47fc017beeae34ff555418d198e1d4.tar.gz |
Use shared_ptr for data in ContentBlob
...to reduce the "price" of copying.
Diffstat (limited to 'src/buildtool/execution_api/common/content_blob_container.hpp')
-rw-r--r-- | src/buildtool/execution_api/common/content_blob_container.hpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/buildtool/execution_api/common/content_blob_container.hpp b/src/buildtool/execution_api/common/content_blob_container.hpp index fcd10f09..f2d7476e 100644 --- a/src/buildtool/execution_api/common/content_blob_container.hpp +++ b/src/buildtool/execution_api/common/content_blob_container.hpp @@ -16,22 +16,29 @@ #define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_CONTENT_BLOB_CONTAINER_HPP #include <cstddef> +#include <memory> #include <string> #include <unordered_map> #include <utility> //std::move #include <vector> +#include "gsl/gsl" #include "src/utils/cpp/transformed_range.hpp" template <typename TDigest> struct ContentBlob final { ContentBlob(TDigest mydigest, std::string mydata, bool is_exec) noexcept : digest{std::move(mydigest)}, - data{std::move(mydata)}, + data{std::make_shared<std::string>(std::move(mydata))}, is_exec{is_exec} {} + ContentBlob(TDigest mydigest, + gsl::not_null<std::shared_ptr<std::string>> const& mydata, + bool is_exec) noexcept + : digest{std::move(mydigest)}, data(mydata), is_exec{is_exec} {} + TDigest digest{}; - std::string data{}; + std::shared_ptr<std::string> data{}; bool is_exec{}; }; |