/// <summary> /// Start copy operation by container name and blob name /// </summary> /// <param name="srcContainerName">Source container name</param> /// <param name="srcBlobName">Source blob name</param> /// <param name="destContainer">Destinaion container name</param> /// <param name="destBlobName">Destination blob name</param> /// <returns>Destination ICloudBlob object</returns> private void StartCopyBlob(IStorageBlobManagement SrcChannel, IStorageBlobManagement destChannel, string srcContainerName, string srcBlobName, string destContainerName, string destBlobName) { ValidateBlobName(srcBlobName); ValidateContainerName(srcContainerName); ValidateContainerName(destContainerName); if (string.IsNullOrEmpty(destBlobName)) { destBlobName = srcBlobName; } ValidateBlobName(destBlobName); AccessCondition accessCondition = null; BlobRequestOptions options = RequestOptions; CloudBlobContainer container = SrcChannel.GetContainerReference(srcContainerName); ICloudBlob blob = SrcChannel.GetBlobReferenceFromServer(container, srcBlobName, accessCondition, options, OperationContext); if (blob == null) { throw new ResourceNotFoundException(String.Format(Resources.BlobNotFound, srcBlobName, srcContainerName)); } CloudBlobContainer destContainer = destChannel.GetContainerReference(destContainerName); Func <long, Task> taskGenerator = (taskId) => StartCopyInTransferManager(taskId, destChannel, blob, destContainer, destBlobName); RunTask(taskGenerator); }
/// <summary> /// Get DestinationBlob with specified copy id /// </summary> /// <param name="container">CloudBlobContainer object</param> /// <param name="blobName">Blob name</param> /// <param name="copyId">Current CopyId</param> /// <returns>Destination CloudBlob object</returns> private CloudBlob GetDestinationBlobWithCopyId(IStorageBlobManagement destChannel, CloudBlobContainer container, string blobName) { AccessCondition accessCondition = null; BlobRequestOptions options = RequestOptions; CloudBlob blob = destChannel.GetBlobReferenceFromServer(container, blobName, accessCondition, options, OperationContext); return(blob); }
/// <summary> /// Stop copy operation by CloudBlobContainer /// </summary> /// <param name="container">CloudBlobContainer object</param> /// <param name="blobName">Blob name</param> /// <param name="copyId">Copy id</param> private async Task StopCopyBlob(long taskId, IStorageBlobManagement localChannel, CloudBlobContainer container, string blobName, string copyId) { ValidateBlobName(blobName); ValidateContainerName(container.Name); AccessCondition accessCondition = null; BlobRequestOptions options = RequestOptions; ICloudBlob blob = localChannel.GetBlobReferenceFromServer(container, blobName, accessCondition, options, OperationContext); if (blob == null) { throw new ResourceNotFoundException(String.Format(Resources.BlobNotFound, blobName, container.Name)); } await StopCopyBlob(taskId, localChannel, blob, copyId); }
/// <summary> /// Get DestinationBlob with specified copy id /// </summary> /// <param name="container">CloudBlobContainer object</param> /// <param name="blobName">Blob name</param> /// <param name="copyId">Current CopyId</param> /// <returns>Destination ICloudBlob object</returns> private ICloudBlob GetDestinationBlobWithCopyId(IStorageBlobManagement destChannel, CloudBlobContainer container, string blobName) { AccessCondition accessCondition = null; BlobRequestOptions options = RequestOptions; ICloudBlob blob = destChannel.GetBlobReferenceFromServer(container, blobName, accessCondition, options, OperationContext); return blob; }
/// <summary> /// Start copy operation by container name and blob name /// </summary> /// <param name="srcContainerName">Source container name</param> /// <param name="srcBlobName">Source blob name</param> /// <param name="destContainer">Destinaion container name</param> /// <param name="destBlobName">Destination blob name</param> /// <returns>Destination ICloudBlob object</returns> private void StartCopyBlob(IStorageBlobManagement SrcChannel, IStorageBlobManagement destChannel, string srcContainerName, string srcBlobName, string destContainerName, string destBlobName) { ValidateBlobName(srcBlobName); ValidateContainerName(srcContainerName); ValidateContainerName(destContainerName); if (string.IsNullOrEmpty(destBlobName)) { destBlobName = srcBlobName; } ValidateBlobName(destBlobName); AccessCondition accessCondition = null; BlobRequestOptions options = RequestOptions; CloudBlobContainer container = SrcChannel.GetContainerReference(srcContainerName); ICloudBlob blob = SrcChannel.GetBlobReferenceFromServer(container, srcBlobName, accessCondition, options, OperationContext); if (blob == null) { throw new ResourceNotFoundException(String.Format(Resources.BlobNotFound, srcBlobName, srcContainerName)); } CloudBlobContainer destContainer = destChannel.GetContainerReference(destContainerName); Func<long, Task> taskGenerator = (taskId) => StartCopyInTransferManager(taskId, destChannel, blob, destContainer, destBlobName); RunTask(taskGenerator); }