コード例 #1
0
        internal void OnTransferSuccess(TransferEventArgs eventArgs)
        {
            EventHandler <TransferEventArgs> handler = this.FileTransferred;

            if (handler != null)
            {
                handler(this, eventArgs);
            }
        }
コード例 #2
0
        internal void OnTransferFailed(TransferEventArgs eventArgs)
        {
            EventHandler <TransferEventArgs> handler = this.FileFailed;

            if (handler != null)
            {
                handler(this, eventArgs);
            }
        }
コード例 #3
0
        private void OnTransferFailed(TransferEventArgs eventArgs)
        {
            // transfer failed
            this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Failed);

            if (this.Context != null)
            {
                this.Context.OnTransferFailed(eventArgs);
            }
        }
コード例 #4
0
        public void OnTransferFailed(Exception ex)
        {
            TransferEventArgs eventArgs = new TransferEventArgs(this.Source.Instance, this.Destination.Instance);

            eventArgs.StartTime = DateTime.UtcNow;
            eventArgs.EndTime   = DateTime.UtcNow;
            eventArgs.Exception = ex;

            this.OnTransferFailed(eventArgs);
        }
コード例 #5
0
        /// <summary>
        /// Execute the transfer asynchronously.
        /// </summary>
        /// <param name="scheduler">Transfer scheduler</param>
        /// <param name="cancellationToken">Token that can be used to cancel the transfer.</param>
        /// <returns>A task representing the transfer operation.</returns>
        public override async Task ExecuteAsync(TransferScheduler scheduler, CancellationToken cancellationToken)
        {
            if (this.transferJob.Status == TransferJobStatus.Finished ||
                this.transferJob.Status == TransferJobStatus.Skipped)
            {
                return;
            }

            TransferEventArgs eventArgs = new TransferEventArgs(this.Source.ToString(), this.Destination.ToString());

            eventArgs.StartTime = DateTime.UtcNow;

            if (this.transferJob.Status == TransferJobStatus.Failed)
            {
                // Resuming a failed transfer job
                if (string.IsNullOrEmpty(this.transferJob.CopyId))
                {
                    this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Transfer);
                }
                else
                {
                    this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Monitor);
                }
            }

            try
            {
                await scheduler.ExecuteJobAsync(this.transferJob, cancellationToken);

                this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Finished);

                eventArgs.EndTime = DateTime.UtcNow;

                if (this.Context != null)
                {
                    this.Context.OnTransferSuccess(eventArgs);
                }
            }
            catch (TransferException exception)
            {
                eventArgs.EndTime   = DateTime.UtcNow;
                eventArgs.Exception = exception;

                if (exception.ErrorCode == TransferErrorCode.NotOverwriteExistingDestination)
                {
                    // transfer skipped
                    this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Skipped);
                    if (this.Context != null)
                    {
                        this.Context.OnTransferSkipped(eventArgs);
                    }

                    throw;
                }
                else
                {
                    // transfer failed
                    this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Failed);
                    if (this.Context != null)
                    {
                        this.Context.OnTransferFailed(eventArgs);
                    }

                    throw;
                }
            }
            catch (Exception ex)
            {
                eventArgs.EndTime   = DateTime.UtcNow;
                eventArgs.Exception = ex;

                // transfer failed
                this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Failed);

                if (this.Context != null)
                {
                    this.Context.OnTransferFailed(eventArgs);
                }

                throw;
            }
        }
コード例 #6
0
 internal void OnTransferFailed(TransferEventArgs eventArgs)
 {
     EventHandler<TransferEventArgs> handler = this.FileFailed;
     if (handler != null)
     {
         handler(this, eventArgs);
     }
 }
コード例 #7
0
 internal void OnTransferSuccess(TransferEventArgs eventArgs)
 {
     EventHandler<TransferEventArgs> handler = this.FileTransferred;
     if (handler != null)
     {
         handler(this, eventArgs);
     }
 }
コード例 #8
0
        private static void TransferContext_FileSkipped(object sender, TransferEventArgs e)
        {
            // This is largely optional. Files can be skipped if the source and destination are the same for Incremental Copies
            // So this information does not always represent an error that occurred but is driven by the OverwriteCallback

            // Add the transfer error information from the FileSkipped event into the List object
            // This will be written to the WebJobs log
            _skippedFiles.Add(new TransferDetail
            {
                Source = e.Source,
                Destination = e.Destination,
                Error = e.Exception.Message
            });
        }
コード例 #9
0
        private static void TransferContext_FileFailed(object sender, TransferEventArgs e)
        {
            // We need to trap transfer failures in this event handler rather than CopyDirectoryAsync()           

            // Add the transfer error information from the FileFailed event into the List object
            // This will be written to the WebJobs log
            _failedFiles.Add(new TransferDetail
            {
                Source = e.Source,
                Destination = e.Destination,
                Error = e.Exception.Message
            });
        }
コード例 #10
0
        /// <summary>
        /// Execute the transfer asynchronously.
        /// </summary>
        /// <param name="scheduler">Transfer scheduler</param>
        /// <param name="cancellationToken">Token that can be used to cancel the transfer.</param>
        /// <returns>A task representing the transfer operation.</returns>
        public override async Task ExecuteAsync(TransferScheduler scheduler, CancellationToken cancellationToken)
        {
            if (this.transferJob.Status == TransferJobStatus.Finished ||
                this.transferJob.Status == TransferJobStatus.Skipped)
            {
                return;
            }

            TransferEventArgs eventArgs = new TransferEventArgs(this.Source.ToString(), this.Destination.ToString());
            eventArgs.StartTime = DateTime.UtcNow;

            if (this.transferJob.Status == TransferJobStatus.Failed)
            {
                // Resuming a failed transfer job
                if (string.IsNullOrEmpty(this.transferJob.CopyId))
                {
                    this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Transfer);
                }
                else
                {
                    this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Monitor);
                }
            }

            try
            {
                await scheduler.ExecuteJobAsync(this.transferJob, cancellationToken);
                this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Finished);

                eventArgs.EndTime = DateTime.UtcNow;

                if(this.Context != null)
                {
                    this.Context.OnTransferSuccess(eventArgs);
                }
            }
            catch (TransferException exception)
            {
                eventArgs.EndTime = DateTime.UtcNow;
                eventArgs.Exception = exception;

                if (exception.ErrorCode == TransferErrorCode.NotOverwriteExistingDestination)
                {
                    // transfer skipped
                    this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Skipped);
                    if (this.Context != null)
                    {
                        this.Context.OnTransferSkipped(eventArgs);
                    }

                    throw;
                }
                else
                {
                    // transfer failed
                    this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Failed);
                    if (this.Context != null)
                    {
                        this.Context.OnTransferFailed(eventArgs);
                    }

                    throw;
                }
            }
            catch (Exception ex)
            {
                eventArgs.EndTime = DateTime.UtcNow;
                eventArgs.Exception = ex;

                // transfer failed
                this.UpdateTransferJobStatus(this.transferJob, TransferJobStatus.Failed);

                if (this.Context != null)
                {
                    this.Context.OnTransferFailed(eventArgs);
                }

                throw;
            }
        }