6#include "azure/storage/blobs/blob_client.hpp"
7#include "azure/storage/blobs/blob_container_client.hpp"
8#include "azure/storage/blobs/blob_service_client.hpp"
9#include "azure/storage/blobs/deferred_response.hpp"
15namespace Azure {
namespace Storage {
namespace Blobs {
18 extern const Core::Context::Key s_serviceBatchKey;
19 extern const Core::Context::Key s_containerBatchKey;
21 class StringBodyStream final :
public Core::IO::BodyStream {
23 explicit StringBodyStream(std::string content) : m_content(std::move(content)) {}
24 StringBodyStream(
const StringBodyStream&) =
delete;
25 StringBodyStream& operator=(
const StringBodyStream&) =
delete;
26 StringBodyStream(StringBodyStream&& other) =
default;
27 StringBodyStream& operator=(StringBodyStream&& other) =
default;
28 ~StringBodyStream()
override {}
29 int64_t Length()
const override {
return m_content.length(); }
30 void Rewind()
override { m_offset = 0; }
33 size_t OnRead(uint8_t* buffer,
size_t count, Azure::Core::Context
const& context)
override;
36 std::string m_content;
40 enum class BatchSubrequestType
46 struct BatchSubrequest
48 explicit BatchSubrequest(BatchSubrequestType type) : Type(type) {}
49 virtual ~BatchSubrequest() = 0;
51 BatchSubrequestType Type;
54 class BlobBatchAccessHelper;
56 std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> ConstructBatchRequestPolicy(
57 const std::vector<std::unique_ptr<Azure::Core::Http::Policies::HttpPolicy>>&
58 servicePerRetryPolicies,
59 const std::vector<std::unique_ptr<Azure::Core::Http::Policies::HttpPolicy>>&
60 servicePerOperationPolicies,
61 const BlobClientOptions& options);
63 std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> ConstructBatchSubrequestPolicy(
64 std::unique_ptr<Azure::Core::Http::Policies::HttpPolicy>&& tokenAuthPolicy,
65 std::unique_ptr<Azure::Core::Http::Policies::HttpPolicy>&& sharedKeyAuthPolicy,
66 const BlobClientOptions& options);
85 const std::string& blobContainerName,
86 const std::string& blobName,
98 const std::string& blobUrl,
112 const std::string& blobContainerName,
113 const std::string& blobName,
127 const std::string& blobUrl,
134 BlobClient GetBlobClientForSubrequest(Core::Url url)
const;
139 std::vector<std::shared_ptr<_detail::BatchSubrequest>> m_subrequests;
142 friend class _detail::BlobBatchAccessHelper;
160 const std::string& blobName,
172 const std::string& blobUrl,
185 const std::string& blobName,
199 const std::string& blobUrl,
206 BlobClient GetBlobClientForSubrequest(Core::Url url)
const;
211 std::vector<std::shared_ptr<_detail::BatchSubrequest>> m_subrequests;
214 friend class _detail::BlobBatchAccessHelper;
The BlobClient allows you to manipulate Azure Storage blobs.
Definition blob_client.hpp:39
A batch object allows you to batch multiple operations in a single request via Azure::Storage::Blobs:...
Definition blob_batch.hpp:149
DeferredResponse< Models::SetBlobAccessTierResult > SetBlobAccessTier(const std::string &blobName, Models::AccessTier accessTier, const SetBlobAccessTierOptions &options=SetBlobAccessTierOptions())
Adds a change tier subrequest into batch object.
Definition blob_batch.cpp:673
DeferredResponse< Models::DeleteBlobResult > DeleteBlobUrl(const std::string &blobUrl, const DeleteBlobOptions &options=DeleteBlobOptions())
Adds a delete subrequest into batch object.
Definition blob_batch.cpp:661
DeferredResponse< Models::SetBlobAccessTierResult > SetBlobAccessTierUrl(const std::string &blobUrl, Models::AccessTier accessTier, const SetBlobAccessTierOptions &options=SetBlobAccessTierOptions())
Adds a change tier subrequest into batch object.
Definition blob_batch.cpp:688
DeferredResponse< Models::DeleteBlobResult > DeleteBlob(const std::string &blobName, const DeleteBlobOptions &options=DeleteBlobOptions())
Adds a delete subrequest into batch object.
Definition blob_batch.cpp:647
Definition blob_container_client.hpp:21
A batch object allows you to batch multiple operations in a single request via Azure::Storage::Blobs:...
Definition blob_batch.hpp:73
DeferredResponse< Models::DeleteBlobResult > DeleteBlobUrl(const std::string &blobUrl, const DeleteBlobOptions &options=DeleteBlobOptions())
Adds a delete subrequest into batch object.
Definition blob_batch.cpp:592
DeferredResponse< Models::SetBlobAccessTierResult > SetBlobAccessTierUrl(const std::string &blobUrl, Models::AccessTier accessTier, const SetBlobAccessTierOptions &options=SetBlobAccessTierOptions())
Adds a change tier subrequest into batch object.
Definition blob_batch.cpp:621
DeferredResponse< Models::SetBlobAccessTierResult > SetBlobAccessTier(const std::string &blobContainerName, const std::string &blobName, Models::AccessTier accessTier, const SetBlobAccessTierOptions &options=SetBlobAccessTierOptions())
Adds a change tier subrequest into batch object.
Definition blob_batch.cpp:604
DeferredResponse< Models::DeleteBlobResult > DeleteBlob(const std::string &blobContainerName, const std::string &blobName, const DeleteBlobOptions &options=DeleteBlobOptions())
Adds a delete subrequest into batch object.
Definition blob_batch.cpp:576
Definition blob_service_client.hpp:22
Optional. Indicates the tier to be set on the blob.
Definition rest_client.hpp:937
Base type for a deferred response.
Definition deferred_response.hpp:18
Optional parameters for Azure::Storage::Blobs::BlobClient::Delete.
Definition blob_options.hpp:735
Optional parameters for Azure::Storage::Blobs::BlobClient::SetAccessTier.
Definition blob_options.hpp:497