예제 #1
0
        public void OnCancelation(CustomBackupAgent agent, Models.Backup backup, Exception exception)
        {
            IsRunning = false;

            var message = string.Format("Backup canceled: {0}", exception != null ? exception.Message : "Exception not informed");

            Report.AddErrorMessage(message);
            Error(message);
            //StatusInfo.Update(BackupStatusLevel.ERROR, message);

            backup.WasCanceled();
            _daoBackup.Update(backup);

            OnUpdate(new BackupOperationEvent {
                Status = BackupOperationStatus.Canceled, Message = message
            });
        }
예제 #2
0
        public void OnFinish(CustomBackupAgent agent, Models.Backup backup, Exception ex = null)
        {
            IsRunning = false;

            switch (CurrentState)
            {
            default:
            {
                var message = string.Format("Backup failed: {0}", ex.Message);
                Warn(message);
                //StatusInfo.Update(BackupStatusLevel.WARN, message);
                Report.AddErrorMessage(ex.Message);

                Report.OperationStatus = OperationStatus.FAILED;
                backup.DidFail();
                _daoBackup.Update(backup);
                OnUpdate(new BackupOperationEvent {
                        Status = BackupOperationStatus.Failed, Message = message
                    });

                break;
            }

            case BackupOperationState.FINISHING:
            {
                TransferResults.Statistics stats = agent.Results.Stats;

                var message = string.Format(
                    "Backup finished! Stats: {0} completed, {1} failed, {2} canceled, {3} pending, {4} running",
                    stats.Completed, stats.Failed, stats.Canceled, stats.Pending, stats.Running);
                Info(message);
                //StatusInfo.Update(BackupStatusLevel.OK, message);

                switch (agent.Results.OverallStatus)
                //switch (backup.Status)
                {
                default: throw new InvalidOperationException("Unexpected TransferStatus");

                case TransferStatus.CANCELED:
                    Report.OperationStatus = OperationStatus.CANCELED;
                    backup.WasCanceled();
                    _daoBackup.Update(backup);
                    OnUpdate(new BackupOperationEvent {
                            Status = BackupOperationStatus.Canceled, Message = message
                        });
                    break;

                case TransferStatus.FAILED:
                    Report.OperationStatus = OperationStatus.FAILED;
                    backup.DidFail();
                    _daoBackup.Update(backup);
                    OnUpdate(new BackupOperationEvent {
                            Status = BackupOperationStatus.Failed, Message = message
                        });
                    break;

                case TransferStatus.COMPLETED:
                    Report.OperationStatus = OperationStatus.COMPLETED;
                    backup.DidComplete();
                    _daoBackup.Update(backup);
                    OnUpdate(new BackupOperationEvent {
                            Status = BackupOperationStatus.Finished, Message = message
                        });
                    break;
                }

                break;
            }
            }

            Report.StartedAt  = Backup.StartedAt;
            Report.FinishedAt = Backup.FinishedAt.Value;
        }