CopyFromUriOperation
An Operation<T> for tracking the status of a
StartCopyFromUriAsync
request. Its Value upon successful
completion will be the number of bytes copied.
using Azure.Core;
using Azure.Core.Pipeline;
using Azure.Storage.Blobs.Specialized;
using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
namespace Azure.Storage.Blobs.Models
{
public class CopyFromUriOperation
{
private readonly BlobBaseClient _client;
private readonly CancellationToken _cancellationToken;
private bool _hasCompleted;
private long? _value;
private Response _rawResponse;
public override bool HasCompleted => _hasCompleted;
public override bool HasValue => _value.HasValue;
public override string Id { get; }
public override long Value => OperationHelpers.GetValue(ref _value);
public override Response GetRawResponse()
{
return _rawResponse;
}
public override ValueTask<Response<long>> WaitForCompletionAsync(CancellationToken cancellationToken = default(CancellationToken))
{
return this.DefaultWaitForCompletionAsync<long>(cancellationToken);
}
public override ValueTask<Response<long>> WaitForCompletionAsync(TimeSpan pollingInterval, CancellationToken cancellationToken)
{
return this.DefaultWaitForCompletionAsync<long>(pollingInterval, cancellationToken);
}
protected CopyFromUriOperation()
{
}
public CopyFromUriOperation(string id, BlobBaseClient client)
: this(client, id, null, CancellationToken.None)
{
}
internal CopyFromUriOperation(BlobBaseClient client, string copyId, Response initialResponse, CancellationToken cancellationToken)
{
Id = copyId;
_value = null;
_rawResponse = initialResponse;
_client = client;
_cancellationToken = cancellationToken;
}
public override Response UpdateStatus(CancellationToken cancellationToken = default(CancellationToken))
{
return UpdateStatusAsync(false, cancellationToken).EnsureCompleted();
}
[AsyncStateMachine(typeof(<UpdateStatusAsync>d__21))]
public override ValueTask<Response> UpdateStatusAsync(CancellationToken cancellationToken = default(CancellationToken))
{
<UpdateStatusAsync>d__21 stateMachine = default(<UpdateStatusAsync>d__21);
stateMachine.<>t__builder = AsyncValueTaskMethodBuilder<Response>.Create();
stateMachine.<>4__this = this;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<UpdateStatusAsync>d__22))]
private Task<Response> UpdateStatusAsync(bool async, CancellationToken cancellationToken)
{
<UpdateStatusAsync>d__22 stateMachine = default(<UpdateStatusAsync>d__22);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response>.Create();
stateMachine.<>4__this = this;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
}
}