Changeset 2486


Ignore:
Timestamp:
3/13/2012 11:06:57 PM (2 years ago)
Author:
lowjoel
Message:

Report progress updates by pushing information to the SteppedProgressManager? instance associated with each erasure target. Furthermore, do not manipulate the state of the Task object, instead, let the Task object manage its own Progress state.

Because of this, a new property Tag is created in ProgressManagerBase?, to hold state information.

Location:
branches/eraser6/pluginsRewrite
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/eraser6/pluginsRewrite/Eraser.DefaultPlugins/ErasureTargets/DriveErasureTarget.cs

    r2468 r2486  
    178178            } 
    179179 
    180             Progress = new ProgressManager(); 
    181             Task.Progress.Steps.Add(new SteppedProgressManagerStep(Progress, 
    182                 1.0f / Task.Targets.Count)); 
     180            Progress = new SteppedProgressManager(); 
     181            ProgressManager stepProgress = new ProgressManager(); 
     182            SteppedProgressManagerStep step = new SteppedProgressManagerStep(stepProgress, 1.0f, 
     183                ToString()); 
    183184            FileStream stream = null; 
    184185 
     
    189190                if (Volume != null) 
    190191                { 
    191                     Progress.Total = Volume.TotalSize; 
     192                    stepProgress.Total = Volume.TotalSize; 
    192193                    stream = Volume.Open(FileAccess.ReadWrite, FileShare.ReadWrite); 
    193194                } 
    194195                else if (PhysicalDrive != null) 
    195196                { 
    196                     Progress.Total = PhysicalDrive.Size; 
     197                    stepProgress.Total = PhysicalDrive.Size; 
    197198                    PhysicalDrive.DeleteDriveLayout(); 
    198199                    stream = PhysicalDrive.Open(FileAccess.ReadWrite, FileShare.ReadWrite); 
     
    203204 
    204205                //Calculate the size of the erasure 
    205                 Progress.Total = method.CalculateEraseDataSize(null, Progress.Total); 
     206                stepProgress.Total = method.CalculateEraseDataSize(null, stepProgress.Total); 
    206207 
    207208                //Then run the erase task 
     
    209210                    delegate(long lastWritten, long totalData, int currentPass) 
    210211                    { 
    211                         Progress.Completed += lastWritten; 
    212                         /*OnProgressChanged(this, new ProgressChangedEventArgs(Progress, 
    213                             new TaskProgressChangedEventArgs(ToString(), currentPass, method.Passes)));*/ 
     212                        stepProgress.Completed += lastWritten; 
     213                        stepProgress.Tag = new object[] { currentPass, method.Passes }; 
    214214 
    215215                        if (Task.Canceled) 
     
    224224            } 
    225225        } 
    226  
    227         /// <summary> 
    228         /// The Progress manager for this target. 
    229         /// </summary> 
    230         private new ProgressManager Progress 
    231         { 
    232             get 
    233             { 
    234                 return (ProgressManager)base.Progress; 
    235             } 
    236             set 
    237             { 
    238                 base.Progress = value; 
    239             } 
    240         } 
    241226    } 
    242227} 
  • branches/eraser6/pluginsRewrite/Eraser.DefaultPlugins/ErasureTargets/ErasureTargetBase.cs

    r2468 r2486  
    6161        public abstract void Execute(); 
    6262 
    63         public ProgressManagerBase Progress 
     63        public SteppedProgressManager Progress 
    6464        { 
    6565            get; 
  • branches/eraser6/pluginsRewrite/Eraser.DefaultPlugins/ErasureTargets/FileSystemObjectErasureTarget.cs

    r2470 r2486  
    205205            if (Progress == null) 
    206206                throw new InvalidOperationException("The Progress property must not be null."); 
    207             Task.Progress.Steps.Add(new SteppedProgressManagerStep(Progress, 
    208                 1.0f / Task.Targets.Count)); 
    209207 
    210208            //Iterate over every path, and erase the path. 
    211209            for (int i = 0; i < paths.Count; ++i) 
    212210            { 
     211                //Create a new progress manager for the file. 
    213212                ProgressManager step = new ProgressManager(); 
    214213                Progress.Steps.Add(new SteppedProgressManagerStep(step, 
    215214                    dataTotal == 0 ? 0.0f : paths[i].Length / (float)dataTotal, 
    216                     S._("Erasing files..."))); 
     215                    paths[i].FullName)); 
    217216                EraseStream(paths[i], step); 
    218                 step.MarkComplete(); 
    219217            } 
    220218        } 
     
    247245                //Update the task progress 
    248246                IErasureMethod method = EffectiveMethod; 
    249                 /*OnProgressChanged(this, new ProgressChangedEventArgs(progress, 
    250                     new TaskProgressChangedEventArgs(info.FullName, 0, method.Passes)));*/ 
    251  
     247                 
    252248                //Remove the read-only flag, if it is set. 
    253249                if (isReadOnly = info.IsReadOnly) 
     
    261257                            throw new OperationCanceledException(S._("The task was cancelled.")); 
    262258 
     259                        progress.Tag = new object[2] { currentPass, method.Passes }; 
    263260                        progress.Total = totalData; 
    264261                        progress.Completed += lastWritten; 
    265                         /*OnProgressChanged(this, new ProgressChangedEventArgs(progress, 
    266                             new TaskProgressChangedEventArgs(info.FullName, currentPass, method.Passes)));*/ 
    267262                    }; 
    268263 
  • branches/eraser6/pluginsRewrite/Eraser.DefaultPlugins/ErasureTargets/FolderErasureTarget.cs

    r2468 r2486  
    219219 
    220220            //Public progress updates. 
    221             /*OnProgressChanged(this, new ProgressChangedEventArgs(progress, 
    222                 new TaskProgressChangedEventArgs(info.FullName, 0, 0)));*/ 
     221            progress.Tag = info.FullName; 
    223222 
    224223            //Ensure that the current directory is empty before deleting. 
  • branches/eraser6/pluginsRewrite/Eraser.DefaultPlugins/ErasureTargets/RecycleBinErasureTarget.cs

    r2468 r2486  
    130130            Progress.Steps.Add(new SteppedProgressManagerStep(progress, 
    131131                0.0f, S._("Emptying recycle bin..."))); 
    132             /*OnProgressChanged(this, new ProgressChangedEventArgs(progress, 
    133                 new TaskProgressChangedEventArgs(string.Empty, 0, 0)));*/ 
    134132 
    135133            RecycleBin.Empty(EmptyRecycleBinOptions.NoConfirmation | 
  • branches/eraser6/pluginsRewrite/Eraser.DefaultPlugins/ErasureTargets/SecureMoveErasureTarget.cs

    r2468 r2486  
    124124            //Create the progress manager. 
    125125            Progress = new SteppedProgressManager(); 
    126             Task.Progress.Steps.Add(new SteppedProgressManagerStep(Progress, 
    127                 1.0f / Task.Targets.Count)); 
    128  
     126             
    129127            try 
    130128            { 
     
    236234 
    237235                //Update progress. 
    238                 /*OnProgressChanged(this, new ProgressChangedEventArgs(folderDeleteProgress, 
    239                     new TaskProgressChangedEventArgs(subDirectory.FullName, 1, 1)));*/ 
     236                folderDeleteProgress.Tag = subDirectory.FullName; 
    240237 
    241238                //Get the directory which we copied to and copy the file times to the 
     
    342339            progress.Completed = TotalBytesTransferred; 
    343340            progress.Total = TotalFileSize; 
    344             /*OnProgressChanged(this, new ProgressChangedEventArgs(Progress, 
    345                 new TaskProgressChangedEventArgs(file.FullName, 1, 1)));*/ 
     341            progress.Tag = file.FullName; 
    346342 
    347343            if (Task.Canceled) 
  • branches/eraser6/pluginsRewrite/Eraser.DefaultPlugins/ErasureTargets/UnusedSpaceErasureTarget.cs

    r2468 r2486  
    180180            //Start sampling the speed of the task. 
    181181            Progress = new SteppedProgressManager(); 
    182             Task.Progress.Steps.Add(new SteppedProgressManagerStep( 
    183                 Progress, 1.0f / Task.Targets.Count)); 
    184182 
    185183            //Erase the cluster tips of every file on the drive. 
     
    196194                        throw new OperationCanceledException(S._("The task was cancelled.")); 
    197195 
    198                     //TODO: create a means to inform the parent on the progress of the current 
    199                     //file we found 
    200                     /*OnProgressChanged(this, new ProgressChangedEventArgs(tipSearch, 
    201                         new TaskProgressChangedEventArgs(path, 0, 0)));*/ 
     196                    tipSearch.Tag = path; 
    202197                }; 
    203198 
     
    211206                        tipProgress.Total = totalFiles; 
    212207                        tipProgress.Completed = currentFile; 
    213                         /*OnProgressChanged(this, new ProgressChangedEventArgs(tipProgress, 
    214                             new TaskProgressChangedEventArgs(currentFilePath, 0, 0)));*/ 
     208                        tipProgress.Tag = currentFilePath; 
    215209 
    216210                        if (Task.Canceled) 
     
    249243                        residentProgress.Completed = currentFile; 
    250244                        residentProgress.Total = totalFiles; 
    251                         /*OnProgressChanged(this, new ProgressChangedEventArgs(residentProgress, 
    252                             new TaskProgressChangedEventArgs(string.Empty, 0, 0)));*/ 
    253245 
    254246                        if (Task.Canceled) 
     
    265257                Progress.Steps.Add(new SteppedProgressManagerStep(tempFiles, 
    266258                    0.0f, S._("Removing temporary files..."))); 
    267                 /*OnProgressChanged(this, new ProgressChangedEventArgs(tempFiles, 
    268                     new TaskProgressChangedEventArgs(string.Empty, 0, 0)));*/ 
    269259                info.Delete(true); 
    270260                tempFiles.MarkComplete(); 
     
    287277                    structureProgress.Total = totalFiles; 
    288278                    structureProgress.Completed = currentFile; 
    289  
    290                     //Set the event parameters, then broadcast the progress event. 
    291                     /*OnProgressChanged(this, new ProgressChangedEventArgs(structureProgress, 
    292                         new TaskProgressChangedEventArgs(string.Empty, 0, 0)));*/ 
    293279                } 
    294280            ); 
     
    344330                        { 
    345331                            mainProgress.Completed += lastWritten; 
    346                             /*OnProgressChanged(this, new ProgressChangedEventArgs(mainProgress, 
    347                                 new TaskProgressChangedEventArgs(Drive, currentPass, method.Passes)));*/ 
     332                            mainProgress.Tag = new object[] { currentPass, method.Passes }; 
    348333 
    349334                            if (Task.Canceled) 
  • branches/eraser6/pluginsRewrite/Eraser.Plugins/ExtensionPoints/IErasureTarget.cs

    r2468 r2486  
    9797        /// Gets the progress manager for this Erasure Target. 
    9898        /// </summary> 
    99         ProgressManagerBase Progress 
     99        SteppedProgressManager Progress 
    100100        { 
    101101            get; 
  • branches/eraser6/pluginsRewrite/Eraser.Plugins/ProgressManager.cs

    r2406 r2486  
    103103 
    104104        /// <summary> 
     105        /// State information associated with the Progress Manager. 
     106        /// </summary> 
     107        public object Tag 
     108        { 
     109            get; 
     110            set; 
     111        } 
     112 
     113        /// <summary> 
    105114        /// Samples the current speed of the task. 
    106115        /// </summary> 
Note: See TracChangeset for help on using the changeset viewer.