Loading [MathJax]/extensions/tex2jax.js
azure-storage-blobs
All Classes Functions Variables Pages
blob_batch.hpp
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
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"
10
11#include <memory>
12#include <string>
13#include <vector>
14
15namespace Azure { namespace Storage { namespace Blobs {
16
17 namespace _detail {
18 extern const Core::Context::Key s_serviceBatchKey;
19 extern const Core::Context::Key s_containerBatchKey;
20
21 class StringBodyStream final : public Core::IO::BodyStream {
22 public:
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; }
31
32 private:
33 size_t OnRead(uint8_t* buffer, size_t count, Azure::Core::Context const& context) override;
34
35 private:
36 std::string m_content;
37 size_t m_offset = 0;
38 };
39
40 enum class BatchSubrequestType
41 {
42 DeleteBlob,
43 SetBlobAccessTier,
44 };
45
46 struct BatchSubrequest
47 {
48 explicit BatchSubrequest(BatchSubrequestType type) : Type(type) {}
49 virtual ~BatchSubrequest() = 0;
50
51 BatchSubrequestType Type;
52 };
53
54 class BlobBatchAccessHelper;
55
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);
62
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);
67 } // namespace _detail
68
73 class BlobServiceBatch final {
74 public:
85 const std::string& blobContainerName,
86 const std::string& blobName,
87 const DeleteBlobOptions& options = DeleteBlobOptions());
88
98 const std::string& blobUrl,
99 const DeleteBlobOptions& options = DeleteBlobOptions());
100
112 const std::string& blobContainerName,
113 const std::string& blobName,
114 Models::AccessTier accessTier,
116
127 const std::string& blobUrl,
128 Models::AccessTier accessTier,
130
131 private:
132 explicit BlobServiceBatch(BlobServiceClient blobServiceClient);
133
134 BlobClient GetBlobClientForSubrequest(Core::Url url) const;
135
136 private:
137 BlobServiceClient m_blobServiceClient;
138
139 std::vector<std::shared_ptr<_detail::BatchSubrequest>> m_subrequests;
140
141 friend class BlobServiceClient;
142 friend class _detail::BlobBatchAccessHelper;
143 };
144
149 class BlobContainerBatch final {
150 public:
160 const std::string& blobName,
161 const DeleteBlobOptions& options = DeleteBlobOptions());
162
172 const std::string& blobUrl,
173 const DeleteBlobOptions& options = DeleteBlobOptions());
174
185 const std::string& blobName,
186 Models::AccessTier accessTier,
188
199 const std::string& blobUrl,
200 Models::AccessTier accessTier,
202
203 private:
204 explicit BlobContainerBatch(BlobContainerClient blobContainerClient);
205
206 BlobClient GetBlobClientForSubrequest(Core::Url url) const;
207
208 private:
209 BlobContainerClient m_blobContainerClient;
210
211 std::vector<std::shared_ptr<_detail::BatchSubrequest>> m_subrequests;
212
213 friend class BlobContainerClient;
214 friend class _detail::BlobBatchAccessHelper;
215 };
216
217}}} // namespace Azure::Storage::Blobs
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