/// <summary> /// Start copy using transfer mangager by source uri /// </summary> /// <param name="uri">source uri</param> /// <param name="destContainer">Destination CloudBlobContainer object</param> /// <param name="destBlobName">Destination blob name</param> /// <returns>Destination ICloudBlob object</returns> private async Task StartCopyInTransferManager(long taskId, IStorageBlobManagement destChannel, Uri uri, CloudBlobContainer destContainer, string destBlobName) { ValidateContainerName(destContainer.Name); ValidateBlobName(destBlobName); Dictionary <string, string> BlobPath = new Dictionary <string, string>() { { "Container", destContainer.Name }, { "Blob", destBlobName } }; DataMovementUserData data = new DataMovementUserData() { Data = BlobPath, TaskId = taskId, Channel = destChannel, Record = null }; BlobStartCopyJob startCopyJob = new BlobStartCopyJob() { SourceUri = uri, DestBlob = destContainer.GetBlockBlobReference(destBlobName) }; await this.EnqueueStartCopyJob(startCopyJob, data); }
/// <summary> /// Start copy using transfer mangager by source ICloudBlob object /// </summary> /// <param name="blob">Source ICloudBlob object</param> /// <param name="destContainer">Destination CloudBlobContainer object</param> /// <param name="destBlobName">Destination blob name</param> /// <returns>Destination ICloudBlob object</returns> private async Task StartCopyInTransferManager(long taskId, IStorageBlobManagement DestChannel, ICloudBlob sourceBlob, ICloudBlob destBlob) { ValidateBlobName(sourceBlob.Name); ValidateContainerName(destBlob.Container.Name); ValidateBlobName(destBlob.Name); Dictionary <string, string> BlobPath = new Dictionary <string, string>() { { "Container", destBlob.Container.Name }, { "Blob", destBlob.Name } }; DataMovementUserData data = new DataMovementUserData() { Data = BlobPath, TaskId = taskId, Channel = DestChannel, Record = null }; BlobStartCopyJob startCopyJob = new BlobStartCopyJob() { SourceBlob = sourceBlob, DestBlob = destBlob }; await this.EnqueueStartCopyJob(startCopyJob, data); }
protected async Task EnqueueStartCopyJob(BlobStartCopyJob startCopyJob, DataMovementUserData userData) { await this.RunTransferJob(startCopyJob, userData); this.OutputStream.WriteVerbose(userData.TaskId, startCopyJob.CopyId); Dictionary <string, string> destBlobPath = userData.Data as Dictionary <string, string>; if (destBlobPath != null) { var destChannel = userData.Channel; this.OutputStream.WriteVerbose(userData.TaskId, String.Format(Resources.CopyDestinationBlobPending, destBlobPath["Blob"], destBlobPath["Container"], startCopyJob.CopyId)); CloudBlobContainer container = destChannel.GetContainerReference(destBlobPath["Container"]); ICloudBlob destBlob = this.GetDestinationBlobWithCopyId(destChannel, container, destBlobPath["Blob"]); if (destBlob != null) { this.WriteICloudBlobObject(userData.TaskId, destChannel, destBlob); } } }
/// <summary> /// Start copy using transfer mangager by source uri /// </summary> /// <param name="uri">source uri</param> /// <param name="destContainer">Destination CloudBlobContainer object</param> /// <param name="destBlobName">Destination blob name</param> /// <returns>Destination ICloudBlob object</returns> private async Task StartCopyInTransferManager(long taskId, IStorageBlobManagement destChannel, Uri uri, CloudBlobContainer destContainer, string destBlobName) { ValidateContainerName(destContainer.Name); ValidateBlobName(destBlobName); Dictionary<string, string> BlobPath = new Dictionary<string, string>() { {"Container", destContainer.Name}, {"Blob", destBlobName} }; DataMovementUserData data = new DataMovementUserData() { Data = BlobPath, TaskId = taskId, Channel = destChannel, Record = null }; BlobStartCopyJob startCopyJob = new BlobStartCopyJob() { SourceUri = uri, DestBlob = destContainer.GetBlockBlobReference(destBlobName) }; await this.EnqueueStartCopyJob(startCopyJob, data); }
/// <summary> /// Start copy using transfer mangager by source ICloudBlob object /// </summary> /// <param name="blob">Source ICloudBlob object</param> /// <param name="destContainer">Destination CloudBlobContainer object</param> /// <param name="destBlobName">Destination blob name</param> /// <returns>Destination ICloudBlob object</returns> private async Task StartCopyInTransferManager(long taskId, IStorageBlobManagement DestChannel, ICloudBlob sourceBlob, ICloudBlob destBlob) { ValidateBlobName(sourceBlob.Name); ValidateContainerName(destBlob.Container.Name); ValidateBlobName(destBlob.Name); Dictionary<string, string> BlobPath = new Dictionary<string, string>() { {"Container", destBlob.Container.Name}, {"Blob", destBlob.Name} }; DataMovementUserData data = new DataMovementUserData() { Data = BlobPath, TaskId = taskId, Channel = DestChannel, Record = null }; BlobStartCopyJob startCopyJob = new BlobStartCopyJob() { SourceBlob = sourceBlob, DestBlob = destBlob }; await this.EnqueueStartCopyJob(startCopyJob, data); }
protected async Task EnqueueStartCopyJob(BlobStartCopyJob startCopyJob, DataMovementUserData userData) { await this.RunTransferJob(startCopyJob, userData); this.OutputStream.WriteVerbose(userData.TaskId, startCopyJob.CopyId); Dictionary<string, string> destBlobPath = userData.Data as Dictionary<string, string>; if (destBlobPath != null) { var destChannel = userData.Channel; this.OutputStream.WriteVerbose(userData.TaskId, String.Format(Resources.CopyDestinationBlobPending, destBlobPath["Blob"], destBlobPath["Container"], startCopyJob.CopyId)); CloudBlobContainer container = destChannel.GetContainerReference(destBlobPath["Container"]); ICloudBlob destBlob = this.GetDestinationBlobWithCopyId(destChannel, container, destBlobPath["Blob"]); if (destBlob != null) { this.WriteICloudBlobObject(userData.TaskId, destChannel, destBlob); } } }
protected void EnqueueStartCopyJob(BlobStartCopyJob startCopyJob, DataMovementUserData userData) { startCopyJob.FinishEvent += (eventSource, eventArgs) => { BlobStartCopyJob tempJob = eventArgs.Job as BlobStartCopyJob; this.OnCopyTaskFinish(userData, tempJob.CopyId, eventArgs.Exception); }; this.SetRequestOptionsInTransferJob(startCopyJob); startCopyJob.OverwritePromptCallback = ConfirmOverwrite; transferManager.EnqueueJob(startCopyJob, CmdletCancellationToken); }