Ejemplo n.º 1
0
        private void MirrorGroup(FileGroup group)
        {
            using (_engine = new MirrorMaker(_progress))
            {
                try
                {
                    _engine.StartingDirectory += OnStartingDirectory;
                    _engine.StartingFile      += OnStartingFile;
                    _engine.ItemHandlingError += OnItemHandlingError;

                    string destinationSubFolder = group.GetDestinationSubFolder(DestinationRootForThisUser);

                    _progress.WriteVerbose("[{0}] Source={1}", group.Name, group.RootFolder);
                    _progress.WriteVerbose("[{0}] Destination={1}", group.Name, destinationSubFolder);

                    //_engine.PreviewMode = false;
                    _engine.Run(group.RootFolder, destinationSubFolder);
                    if (_engine.WasCancelled)
                    {
                        _currentGroup.Disposition = FileGroup.DispositionChoice.Cancelled;
                    }
                    else
                    {
                        group.Disposition = FileGroup.DispositionChoice.WasBackedUp;
                    }
                }
                catch (IOException error)
                {
                    _gotIOExceptionProbablyDiskFull = true;
                    //enhance: we could clarify that it was partially backed up
                    _currentGroup.Disposition = FileGroup.DispositionChoice.NotEnoughRoom;
                    _progress.WriteWarning(error.Message);
                }

                if (GroupProgress != null)
                {
                    GroupProgress.Invoke();
                }
            }
        }