diff --git a/services/backup/docker-server/contents/server/src/Reactors/client/blob/BlobPutClientReactor.h b/services/backup/docker-server/contents/server/src/Reactors/client/blob/BlobPutClientReactor.h --- a/services/backup/docker-server/contents/server/src/Reactors/client/blob/BlobPutClientReactor.h +++ b/services/backup/docker-server/contents/server/src/Reactors/client/blob/BlobPutClientReactor.h @@ -36,7 +36,7 @@ public: BlobPutClientReactor(const std::string &holder, const std::string &hash); - void scheduleSendingDataChunk(const std::string &dataChunk); + void scheduleSendingDataChunk(std::unique_ptr dataChunk); std::unique_ptr prepareRequest( blob::PutRequest &request, std::shared_ptr previousResponse) override; @@ -51,11 +51,8 @@ } void BlobPutClientReactor::scheduleSendingDataChunk( - const std::string &dataChunk) { - // TODO: we may be copying a big chunk of data, but `write` seems to only - // accept `std::move` - std::string str = std::string(dataChunk); - if (!this->dataChunks.write(std::move(str))) { + std::unique_ptr dataChunk) { + if (!this->dataChunks.write(std::move(*dataChunk))) { throw std::runtime_error( "Error scheduling sending a data chunk to send to the blob service"); } diff --git a/services/backup/docker-server/contents/server/src/Reactors/server/CreateNewBackupReactor.h b/services/backup/docker-server/contents/server/src/Reactors/server/CreateNewBackupReactor.h --- a/services/backup/docker-server/contents/server/src/Reactors/server/CreateNewBackupReactor.h +++ b/services/backup/docker-server/contents/server/src/Reactors/server/CreateNewBackupReactor.h @@ -75,7 +75,8 @@ } ServiceBlobClient::getInstance().putReactor->scheduleSendingDataChunk( - request.newcompactionchunk()); + std::make_unique( + std::move(*request.mutable_newcompactionchunk()))); return nullptr; } @@ -84,7 +85,8 @@ } void CreateNewBackupReactor::doneCallback() { - ServiceBlobClient::getInstance().putReactor->scheduleSendingDataChunk(""); + ServiceBlobClient::getInstance().putReactor->scheduleSendingDataChunk( + std::make_unique("")); } } // namespace reactor