<PackageReference Include="Azure.Storage.Blobs" Version="12.24.0" />

BlobLeaseClient

public class BlobLeaseClient
The BlobLeaseClient allows you to manipulate Azure Storage leases on containers and blobs.
using Azure.Core; using Azure.Core.Pipeline; using Azure.Storage.Blobs.Models; using System; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace Azure.Storage.Blobs.Specialized { public class BlobLeaseClient { private readonly BlobBaseClient _blob; private readonly BlobContainerClient _container; private string _leaseId; public static readonly TimeSpan InfiniteLeaseDuration = TimeSpan.FromSeconds(-1); protected virtual BlobBaseClient BlobClient => _blob; protected virtual BlobContainerClient BlobContainerClient => _container; public Uri Uri { get { object obj = BlobClient?.Uri; if (obj == null) { BlobContainerClient blobContainerClient = BlobContainerClient; if (blobContainerClient == null) return null; obj = blobContainerClient.Uri; } return (Uri)obj; } } public virtual string LeaseId { get { return Volatile.Read(ref _leaseId); } private set { Volatile.Write(ref _leaseId, value); } } private HttpPipeline Pipeline => BlobClient?.ClientConfiguration.Pipeline ?? BlobContainerClient.ClientConfiguration.Pipeline; internal virtual BlobClientOptions.ServiceVersion Version => BlobClient?.ClientConfiguration.Version ?? BlobContainerClient.ClientConfiguration.Version; internal virtual ClientDiagnostics ClientDiagnostics => BlobClient?.ClientConfiguration.ClientDiagnostics ?? BlobContainerClient.ClientConfiguration.ClientDiagnostics; protected BlobLeaseClient() { _blob = null; _container = null; } public BlobLeaseClient(BlobBaseClient client, string leaseId = null) { if (client == null) throw Errors.ArgumentNull("client"); _blob = client; _container = null; LeaseId = (leaseId ?? CreateUniqueLeaseId()); } public BlobLeaseClient(BlobContainerClient client, string leaseId = null) { _blob = null; if (client == null) throw Errors.ArgumentNull("client"); _container = client; LeaseId = (leaseId ?? CreateUniqueLeaseId()); } private static string CreateUniqueLeaseId() { return Guid.NewGuid().ToString(); } private void EnsureClient() { if (BlobClient == null && BlobContainerClient == null) throw BlobErrors.BlobOrContainerMissing("BlobLeaseClient", "BlobBaseClient", "BlobContainerClient"); } public virtual Response<BlobLease> Acquire(TimeSpan duration, RequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { RequestContext val = new RequestContext(); val.set_CancellationToken(cancellationToken); return ParseAcquireResponse(AcquireInternal(duration, conditions, false, val).EnsureCompleted()); } [AsyncStateMachine(typeof(<AcquireAsync>d__25))] public virtual Task<Response<BlobLease>> AcquireAsync(TimeSpan duration, RequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <AcquireAsync>d__25 stateMachine = default(<AcquireAsync>d__25); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobLease>>.Create(); stateMachine.<>4__this = this; stateMachine.duration = duration; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } private Response<BlobLease> ParseAcquireResponse(Response response) { if (BlobClient != null) return Response.FromValue<BlobLease>(ResponseWithHeaders.FromValue(new BlobAcquireLeaseHeaders(response), response).ToBlobLease(), response); return Response.FromValue<BlobLease>(ResponseWithHeaders.FromValue(new ContainerAcquireLeaseHeaders(response), response).ToBlobLease(), response); } public virtual Response Acquire(TimeSpan duration, RequestConditions conditions, RequestContext context) { return AcquireInternal(duration, conditions, false, context).EnsureCompleted(); } [AsyncStateMachine(typeof(<AcquireAsync>d__28))] public virtual Task<Response> AcquireAsync(TimeSpan duration, RequestConditions conditions, RequestContext context) { <AcquireAsync>d__28 stateMachine = default(<AcquireAsync>d__28); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response>.Create(); stateMachine.<>4__this = this; stateMachine.duration = duration; stateMachine.conditions = conditions; stateMachine.context = context; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<AcquireInternal>d__29))] private Task<Response> AcquireInternal(TimeSpan duration, RequestConditions conditions, bool async, RequestContext context) { <AcquireInternal>d__29 stateMachine = default(<AcquireInternal>d__29); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response>.Create(); stateMachine.<>4__this = this; stateMachine.duration = duration; stateMachine.conditions = conditions; stateMachine.async = async; stateMachine.context = context; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<BlobLease> Renew(RequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return RenewInternal(conditions, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<RenewAsync>d__31))] public virtual Task<Response<BlobLease>> RenewAsync(RequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <RenewAsync>d__31 stateMachine = default(<RenewAsync>d__31); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobLease>>.Create(); stateMachine.<>4__this = this; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<RenewInternal>d__32))] private Task<Response<BlobLease>> RenewInternal(RequestConditions conditions, bool async, CancellationToken cancellationToken) { <RenewInternal>d__32 stateMachine = default(<RenewInternal>d__32); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobLease>>.Create(); stateMachine.<>4__this = this; stateMachine.conditions = conditions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<ReleasedObjectInfo> Release(RequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return ReleaseInternal(conditions, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<ReleaseAsync>d__34))] public virtual Task<Response<ReleasedObjectInfo>> ReleaseAsync(RequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <ReleaseAsync>d__34 stateMachine = default(<ReleaseAsync>d__34); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<ReleasedObjectInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<ReleaseInternal>d__35))] [EditorBrowsable(EditorBrowsableState.Never)] public virtual Task<Response<ReleasedObjectInfo>> ReleaseInternal(RequestConditions conditions, bool async, CancellationToken cancellationToken) { <ReleaseInternal>d__35 stateMachine = default(<ReleaseInternal>d__35); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<ReleasedObjectInfo>>.Create(); stateMachine.<>4__this = this; stateMachine.conditions = conditions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<BlobLease> Change(string proposedId, RequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return ChangeInternal(proposedId, conditions, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<ChangeAsync>d__37))] public virtual Task<Response<BlobLease>> ChangeAsync(string proposedId, RequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <ChangeAsync>d__37 stateMachine = default(<ChangeAsync>d__37); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobLease>>.Create(); stateMachine.<>4__this = this; stateMachine.proposedId = proposedId; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<ChangeInternal>d__38))] private Task<Response<BlobLease>> ChangeInternal(string proposedId, RequestConditions conditions, bool async, CancellationToken cancellationToken) { <ChangeInternal>d__38 stateMachine = default(<ChangeInternal>d__38); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobLease>>.Create(); stateMachine.<>4__this = this; stateMachine.proposedId = proposedId; stateMachine.conditions = conditions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual Response<BlobLease> Break(TimeSpan? breakPeriod = default(TimeSpan?), RequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { return BreakInternal(breakPeriod, conditions, false, cancellationToken).EnsureCompleted(); } [AsyncStateMachine(typeof(<BreakAsync>d__40))] public virtual Task<Response<BlobLease>> BreakAsync(TimeSpan? breakPeriod = default(TimeSpan?), RequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken)) { <BreakAsync>d__40 stateMachine = default(<BreakAsync>d__40); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobLease>>.Create(); stateMachine.<>4__this = this; stateMachine.breakPeriod = breakPeriod; stateMachine.conditions = conditions; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<BreakInternal>d__41))] private Task<Response<BlobLease>> BreakInternal(TimeSpan? breakPeriod, RequestConditions conditions, bool async, CancellationToken cancellationToken) { <BreakInternal>d__41 stateMachine = default(<BreakInternal>d__41); stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobLease>>.Create(); stateMachine.<>4__this = this; stateMachine.breakPeriod = breakPeriod; stateMachine.conditions = conditions; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } } }