Loading [MathJax]/extensions/tex2jax.js
azure-storage-blobs
All Classes Functions Variables Pages
blob_lease_client.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
9#include <chrono>
10#include <mutex>
11#include <string>
12
13namespace Azure { namespace Storage { namespace Blobs {
14
18 class BlobLeaseClient final {
19 public:
26 explicit BlobLeaseClient(BlobClient blobClient, std::string leaseId)
27 : m_blobClient(std::move(blobClient)), m_leaseId(std::move(leaseId))
28 {
29 }
30
38 explicit BlobLeaseClient(BlobContainerClient blobContainerClient, std::string leaseId)
39 : m_blobContainerClient(std::move(blobContainerClient)), m_leaseId(std::move(leaseId))
40 {
41 }
42
48 static std::string CreateUniqueLeaseId();
49
53 AZ_STORAGE_BLOBS_DLLEXPORT const static std::chrono::seconds InfiniteLeaseDuration;
54
60 std::string GetLeaseId()
61 {
62 std::lock_guard<std::mutex> guard(m_mutex);
63 return m_leaseId;
64 }
65
77 Azure::Response<Models::AcquireLeaseResult> Acquire(
78 std::chrono::seconds duration,
80 const Azure::Core::Context& context = Azure::Core::Context());
81
89 Azure::Response<Models::RenewLeaseResult> Renew(
90 const RenewLeaseOptions& options = RenewLeaseOptions(),
91 const Azure::Core::Context& context = Azure::Core::Context());
92
100 Azure::Response<Models::ReleaseLeaseResult> Release(
101 const ReleaseLeaseOptions& options = ReleaseLeaseOptions(),
102 const Azure::Core::Context& context = Azure::Core::Context());
103
113 Azure::Response<Models::ChangeLeaseResult> Change(
114 const std::string& proposedLeaseId,
115 const ChangeLeaseOptions& options = ChangeLeaseOptions(),
116 const Azure::Core::Context& context = Azure::Core::Context());
117
125 Azure::Response<Models::BreakLeaseResult> Break(
126 const BreakLeaseOptions& options = BreakLeaseOptions(),
127 const Azure::Core::Context& context = Azure::Core::Context());
128
129 private:
130 Azure::Nullable<BlobClient> m_blobClient;
131 Azure::Nullable<BlobContainerClient> m_blobContainerClient;
132 std::mutex m_mutex;
133 std::string m_leaseId;
134 };
135
136}}} // namespace Azure::Storage::Blobs
The BlobClient allows you to manipulate Azure Storage blobs.
Definition blob_client.hpp:39
Definition blob_container_client.hpp:21
BlobLeaseClient allows you to manipulate Azure Storage leases on containers and blobs.
Definition blob_lease_client.hpp:18
BlobLeaseClient(BlobClient blobClient, std::string leaseId)
Initializes a new instance of the BlobLeaseClient.
Definition blob_lease_client.hpp:26
static std::string CreateUniqueLeaseId()
Gets a unique lease ID.
Definition blob_lease_client.cpp:13
BlobLeaseClient(BlobContainerClient blobContainerClient, std::string leaseId)
Initializes a new instance of the BlobLeaseClient.
Definition blob_lease_client.hpp:38
AZ_STORAGE_BLOBS_DLLEXPORT static const std::chrono::seconds InfiniteLeaseDuration
A value representing infinite lease duration.
Definition blob_lease_client.hpp:53
Azure::Response< Models::BreakLeaseResult > Break(const BreakLeaseOptions &options=BreakLeaseOptions(), const Azure::Core::Context &context=Azure::Core::Context())
Breaks the previously-acquired lease.
Definition blob_lease_client.cpp:292
Azure::Response< Models::ReleaseLeaseResult > Release(const ReleaseLeaseOptions &options=ReleaseLeaseOptions(), const Azure::Core::Context &context=Azure::Core::Context())
Releases the blob or blob container's previously-acquired lease.
Definition blob_lease_client.cpp:151
Azure::Response< Models::ChangeLeaseResult > Change(const std::string &proposedLeaseId, const ChangeLeaseOptions &options=ChangeLeaseOptions(), const Azure::Core::Context &context=Azure::Core::Context())
Changes the lease of an active lease.
Definition blob_lease_client.cpp:214
std::string GetLeaseId()
Get lease id of this lease client.
Definition blob_lease_client.hpp:60
Azure::Response< Models::AcquireLeaseResult > Acquire(std::chrono::seconds duration, const AcquireLeaseOptions &options=AcquireLeaseOptions(), const Azure::Core::Context &context=Azure::Core::Context())
Acquires a lease on the blob or blob container.
Definition blob_lease_client.cpp:18
Azure::Response< Models::RenewLeaseResult > Renew(const RenewLeaseOptions &options=RenewLeaseOptions(), const Azure::Core::Context &context=Azure::Core::Context())
Renews the blob or blob container's previously-acquired lease.
Definition blob_lease_client.cpp:86
Optional parameters for Azure::Storage::Blobs::BlobLeaseClient::Acquire.
Definition blob_options.hpp:760
Optional parameters for Azure::Storage::Blobs::BlobLeaseClient::Break.
Definition blob_options.hpp:804
Optional parameters for Azure::Storage::Blobs::BlobLeaseClient::Change.
Definition blob_options.hpp:782
Optional parameters for Azure::Storage::Blobs::BlobLeaseClient::Release.
Definition blob_options.hpp:793
Optional parameters for Azure::Storage::Blobs::BlobLeaseClient::Renew.
Definition blob_options.hpp:771